😸
AWS CDK v2とLocalStack v3を使ってローカルでSQSとLambdaを動かす
概要
- LocalStackを使って、ローカル環境にAWS CDKデプロイした際のメモ。
環境の準備
- 開発環境はMacOSを想定
- DockerDesktopをインストールしておく
- AWS CLIをインストールしておく
- AWS CDKをインストールしておく
- LocalStackは公式ドキュメントのdocker-composeで開始する方法を参照
- https://docs.localstack.cloud/getting-started/installation/#starting-localstack-with-docker-compose
サンプル
- Github: https://github.com/FuminoriSugawara/cdk-lambda-sqs-sample
- 今回は2つのLambda関数を用意し、SQSのキューで連携するケースを作成してみた。
- プロジェクトのルートディレクトリで以下を実行すると、LocalStackのコンテナが起動する
DEBUG=1 docker compose up
- ターミナルで別ウィンドウを立ち上げてLocalStack上にcdk bootstrap と cdk deployを行う
cd cdk
cdklocal bootstrap && cdklocal deploy --require-approval=never
- ターミナルで以下のコマンドを実行し、PublisherLambdaを実行する
awslocal lambda invoke --function-name PublisherLambda output.txt
- LocalStackのコンテナを起動しているウィンドウでReceiverLambdaのコンソールログが出力される
メモ
- LocalStackがv3になり、ライセンスキーの入力方法が変わった
- LocalStack Proを使うとLambda layerなどの機能を使えるようになる
- LocalStackのDocker composeをつかうと、プロジェクトごとにコンテナが立てられてよい
- Macの場合はroute53のポートが競合するので変更が必要
- 事前にVPCを用意しておきたい場合は、cdklocalデプロイ前にawslocalで必要なリソースを登録しておく
- cdk.context.jsonがlocalstack用に追加されるので、テスト時に追加された値はGitのコミットに含めないように注意する
- LocalStackのコンテナは頻繁にアップデートがされるので、不具合がある場合は、新しいバージョンにしてみると解決するかもしれない
- LocalStackのSlackワークスペースで気軽に質問できるので、不具合がある際は問い合わせてみると親切に回答してくれる
Discussion