LambdaでDynamoDBから情報を取得しよう(Ruby)


今回やること

  • LambdaでDynamoDBの値を取得しよう。
    • メインはLambda関数の作成。

DynamoDB構成

graph LR
  system_table --> sample_partition --> value

今回は東京リージョンで単純に値が1個しか入っていないテーブルを使用します。

Lambda関数の作成


  • 名前を入力しランタイムをRubyにします。
  • 事前にLambda実行用のIAMロールを作成しています。
    • AWS管理ポリシーの2つを使用
      • AmazonDynamoDBReadOnlyAccess
        DynamoDBの読み込み権限を付与
      • AWSLambdaBasicExecutionRole
        CloudWatchへのログ出力権限を付与
  • その他はデフォルトで関数を作成

コード

require 'aws-sdk-dynamodb'

def get_value(dynamodb_client, table_name, partition_key)
  table = dynamodb_client.scan(table_name: table_name)
  table.items[0][partition_key]
end

def lambda_handler(event:, context:)
  region        = "ap-northeast-1"
  table_name    = "system_table" 
  partition_key = "sample_partition"
  dynamodb_client = Aws::DynamoDB::Client.new(region: region)
  puts get_value(dynamodb_client, table_name, partition_key)
end

出力結果は期待通りのものになります。

> value