aws lambdaのTDD
- 単体テスト: junit
- 結合テスト: SAM
以上の組み合わせでTDDでlambdaを作成する
eclipseでlambda project作成
eclipseの「Help」->「install New Software」を選択
update site https://aws.amazon.com/eclipse - https://aws.amazon.com/eclipse
を入力
以下の画像のようにチェックを入れてNext
を押下
eclipseを再起動する旨のポップアップが出るため、それに従い再起動。
「File」->「New」->「other」より以下のようにlambdaプロジェクトを選択する
SAMlocal環境の構築
以下のAWS公式手順のうち、自分のOSに対応する手順でやれば構築できる
https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html
テスト用CFnテンプレート作成
src/test/resources
配下に以下のようにtemplate.yml
を作成する
このCFnテンプレートに結合テストで使用する他のAWSリソースを記述していく
さらにsrc/test/resources
配下に以下のようにevent.json
を作成する
このjsonファイルを結合テストで実行するlambdaのinputとして使う
SAMテスト実行
「Run」->「Run Configurations」からAWS SAM Local
を選択し、以下のように入力しApply
を押下
以下のようにコンソールに出力されればSAMlocalでテストを行う準備はOK
次回は実際に単体テスト、結合テストをしながらTDDしていく
appendix
docker周りの設定で若干詰まった。
SAM localでテストを実行すると以下のエラーが発生した
docker.credentials.errors.InitializationError: docker-credential-desktop not installed or not available in PATH
~/.docker/config.json
を以下のように修正するとエラー解消した
{
- "credsStore" : "desktop",
"auths" : {
},
"stackOrchestrator" : "kubernetes"
}
Docker Registory
の認証情報保存先消すと上手くいく。
理由はよく分からないけれど。。