さきの投稿に続いて、週末に動作確認を行いました。
結論としては問題なく動作できました。
具体的な内容は下記サイトを参考にさせてもらいました。
https://atmarkit.itmedia.co.jp/ait/articles/2109/24/news008.html
「Amazon S3」にアップロードしたCSVファイルを「Amazon DynamoDB」に自動登録する「AWS Lambda」関数の作り方
S3,Dynamodbについてはサイトの案内の通り操作するだけなので悩ましいところはなかった。
私が少し詰まったのは、以下2点。
・lamdaに割り当てるユーザー管理ポリシー。
新規ポリシーとしてdynamodb-put-batchwriteを作成した後で、ロールlambda-import-csv-into-dynamodbへポリシーを割り当てる。
・S3へアップロードするemployee.csv1の形式でエラー。
最初メモ帳でcsvファイルを作成しs3へアップロードしたらcp932関連でエラー発生。
UnicodeDecodeError: ‘cp932’ codec can’t decode
作成したCSVファイル形式がよくなかったのが原因。改めてterapadで”文字コード指定再読込”を”SHIFT-JIS”として、CSVデータを保存したところ、エラーはなくなりました(cp932=SHIFT-JISな認識)。
その他は特に止まるところもなく、賞味30分程度で一通り試せました。
S3にファイルアップロードすることで、dynamodbへデータ書き込みおよび更新までできました。cloudwatch logsへもデフォルトのままでlambdaログが記録されました。
肝心なlamdaコードについてもサイト情報そのままで動作できました。
個人的にはpythonスクリプトの部分が一番キモと思いますが、この程度のコード量なら読めば理解できますし、多少の作り変えでいろいろ試せそうに思いました。
今回はS3イベントでキックする形ですが、それ以外にもlambda起動できる条件はいろいろあるので、改めてアイデア考えて別条件でサーバレスを試してみたいと思いました。
今日はこれぐらいにしておきます。
著者について