このファイルは、2021/3/20(土)開催の JAWS DAYS 2021 -re:Connect- の私のセッション「AWS Lambdaのテストで役立つ各種ツール」の参考ソースです。
https://jawsdays2021.jaws-ug.jp/
https://www.slideshare.net/MasakiSuzuki3/20210320jawsdays2021reconnect
※Serverless DynamoDB Local, Serverless S3 Localの一部情報について「参考情報その1~2」にまとめてありますので、何かあった際に参照ください。
- bucket/jawsdays2021:serverless-s3-localで使用するS3バケットフォルダ。
- scripts/install-dynamo.js:「npm run install-dynamo」コマンドで使用するインストール用jsファイル。
- restClient.http:restClient用のファイルです。(Serverless Offline使用時にリクエストを送ると、レスポンスが返ります。)
- serverless.ts:Serverless Frameworkのテンプレートファイルです。ここでDynamoDB-Localの初期データ(seed)設定やserverless-s3-localのバケット(ローカルフォルダ)設定を行っています。
- tower-of-druaga-jawadays.json:DynamoDB Localの初期データ(seed)設定です。
- get.test.js:テスト用ファイルです。
- get.ts:テスト対象のLambda本体です。
- trigger.ts:get.tsなどでbucket/jawsdays2021バケットにキーを追加した際に、S3トリガで起動するLambdaです。
- get.tsのputS3ObjectContentsを実施することでキーを追加します。
- DynamoDBにもトリガ設定されてますが、うまく動きませんでした。(ServerlessではないDynamoDB- Localを初めから起動している状態でLatestStreamArnの値を指定すればうまく動くかも)
このソースは、主にaws-sdk-mock, Serverless Offline, Serverless DynamoDB Local, Serverless S3 Localを使用する際のソースの参考としてください。
- npm installして、各種npmモジュールをインストールする
- npm run install-dynamoコマンドでDynamoDB Localをインストールする
- serverless offlineコマンドでServerless Offlineを起動する
- serverless dynamodb startコマンドでServerless DynamoDB Local を起動する
- npm run testコマンドでテストを実施する
※動作確認はしていますが、動作させる場合は自己責任でお願いします。
その他事項は、ソース内のコメントや先述の登壇資料を参照してください。
- 動作には、Serverless Framework, 及びJestも必要です
- Serverless Framework, 及びJestはこのGitHubのソースには含まれていません。各自インストールをお願いします。
DynamoDB, S3のデータは、2021/1/6(水)に行われたServerless Meetup Virtualでの私の発表で使用した「ドルアーガの塔 宝箱情報取得Lambda」をベースにしています。
https://www.youtube.com/watch?v=XkQL5j8tqgs
※「ドルアーガの塔」が分からない人は、「ドルアーガの塔」や「ドルアーガの塔 宝箱」などで調べてもらうとわかると思います