Lambda(C#) から AWS DynamoDB に Insert してみた
開発環境
・Windows10 Pro
・VisualStudio2017
Visual Studio のインストール | Microsoft Docs
必要なもの
・AWS ToolKit for VisualStudio
https://aws.amazon.com/jp/visualstudio/
・NuGet - AWSSDK.DynamoDBv2
https://www.nuget.org/packages/AWSSDK.DynamoDBv2/
1. DynamoDBのアクセス権の設定
今回は AmazonDynamoDBFullAccess を使用しました。
今回は外部公開しないためフルアクセスを使用しました。
新しくポリシーを作るとテーブルごとに読み書き権限を与えられます。
2. AWSSDK.DynamoDBv2のインストール
ohke.hateblo.jp
上記の記事を参考に、TodoEntityクラスを作ります。
クラスを作るとDynamoDBv2の参照先がありませんとエラーになります。
エラーを解消するためにNuGetを使ってDynamoDBv2をインストールします。
今回は記事作成時点で最新の 3.3.101.25 をインストールしています。
https://www.nuget.org/packages/AWSSDK.DynamoDBv2/
3. リージョンの設定
DynamoDBのリージョンと合わせる必要がありました。
リージョンが違う状態でInsertをすると以下のエラーが返ってきます。
"errorType": "ResourceNotFoundException",
"errorMessage": "Requested resource not found: Table: Todos not found"
まずはDynamoDBを作成したリージョンを確認します。
今回は東京で作成しました。
RegionEndpointの定義を確認します。
東京は APNortheast1 です。
AmazonDynamoDBClient に APNortheast1 を指定します。
4. 動作確認
デプロイします。
コンソールからテーブルを確認します。
以上の手順で DynamoDB に Insert ができました。
遭遇したエラー
下記エラーが表示された時はDynamoDBの項目名とマッピングするクラスのメンバ変数名が完全に一致している事を確認してください。
Unable to locate property for key attribute [DynamoDB 項目名]
以下のstackoverflowの回答が参考になりました。
stackoverflow.com