Lambda関数(C#)でDynamoDBにPutItem(Insert/データ追加)する方法


Lambda 関数(C#)で DynamoDB にアクセスして PutItem (Insert/データ追加)する方法をメモしておきます。

まず、DynamoDBのItemIdというテーブルを以下のように作成します。パーティションキーはidで、_versionはキーではない属性になります。

f:id:fnyablog:20181112162158p:plain:w320

Lambda 関数(C#)で PutItem するには、以下のように記述します。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Amazon.DynamoDBv2;
using Amazon.DynamoDBv2.Model;
using Amazon.Lambda.Core;

[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]
namespace AWSLambda1
{
    public class Function
    {
        public async Task FunctionHandler(object input, ILambdaContext context)
        {
            AmazonDynamoDBClient client = new AmazonDynamoDBClient();
            string tableName = "ItemId";

            try
            {
                var request = new PutItemRequest
                {
                    TableName = tableName,
                    Item = new Dictionary<string, AttributeValue>()
                    {
                        {
                            "id", new AttributeValue()
                            {
                                S = "CategoryId"
                            }
                        },
                        {
                            "_version", new AttributeValue()
                            {
                                N = "0"
                            }
                        }
                    }
                };

                await client.PutItemAsync(request);

                Console.WriteLine("Task completed.");


            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }   
        }
    }
}

この Lamda 関数の実行結果のログは以下のようになり、問題が起きていないことが分かります。

f:id:fnyablog:20181112162533p:plain

また、DynamoDB の ItemId テーブルの内容を確認すると、正しくデータが追加されていることが分かります。

f:id:fnyablog:20181112162629p:plain:w320

なお、参考サイトは以下のものになります。

docs.aws.amazon.com