【AWS Lambdaの基本コードその5】 DynamoDBにデータを登録

こんにちは、Michaelです。
今回は、AWS LambdaからDynamoDBのテーブルにデータを登録(Put)してみます。

今回の構成

Lambdaが起動されると、外部から入力されたデータをDynamoDBのテーブル「invoke_history」に登録します。Lambdaで実行された時間を記録し、ソートキー「time」に登録することでキーの重複を回避します。

IAMロールの設定

LambdaからDynamoDBにデータを登録するため、以下のポリシーを作成し、Lambdaに適用するIAMロールにアタッチします。このポリシーでは、テーブルの「読み取り」、「書き込み」、「更新」の最小限のポリシーのみ許可しています。

コード

コードは以下のようになります。

コードの説明

コードの内容は以下の通りです。

項番 項目 内容
ライブラリのimport 処理に必要なライブラリを指定してインポートします。
Functionのロードをログに出力 Lambdaのコードがロードされたことが分かるようにログにメッセージを出力します。
DynamoDBオブジェクトを取得 DynamoDBと接続できるようにインスタンスを生成します。
Lambdaのメイン関数 トリガーにより実行される関数。
テーブル名を指定 データを登録するテーブル名を設定します。
実行時刻の記録 Lambdaの実行時刻をUnixtimeで記録します。
float型をdecimal型に変換 DynamoDBではfloat型がサポートされないため、decimal型に変換します。
DynamoDBテーブルのオブジェクトを取得 DynamoDBのテーブルを操作できるようにインスタンスを生成します。
DynamoDBへのデータ登録 DynamoDBのテーブルにデータを登録します。

実行結果

テスト実行にあたり、テストイベントとして以下のJSONデータを登録しておきます。

Lambdaのコードエディタの上部にある[テスト]をクリックすると、テスト実行されます。
テストを実行すると、テストイベントのデータとLambda実行時刻がDynamoDBに登録されていることが確認できました。

まとめ

LambdaとMySQLといったRDBMSとの組み合わせは、コネクション数等の問題からアンチパターンとされるため、DynamoDBとの組み合わせはよく使われます。
DynamoDBはスキーマレスでRDSより設計がしやすく、ディスク容量の制限もないため、IoTのような無尽蔵にデータが入力されるケースでもディスク容量を気にせず利用できます。
次回は、DynamoDBのデータをLambdaから読み取るコードを紹介します。
次回もお楽しみに!

この記事を書いた人

aws-recipe-user