ソースコードから理解する技術-UnderSourceCode

手を動かす(プログラムを組む)ことで技術を理解するブログ

localstackのローカル環境にAWS CDKでS3バケットを作成してみる

GitHub - localstack/localstack: 💻 A fully functional local AWS cloud stack. Develop and test your cloud & Serverless apps offline!
「localstack」というAWSを仮想的にローカルマシン内のDockerで動かすものがあります。

このlocalstack内に、AWS CDKを使ってS3バケットを作成してみました。

localstackの準備

localstack と Visual Studio Code の Remote-Containers でAWSの開発環境を構築してみる - ソースコードから理解する技術-UnderSourceCode
以前にも書いたように、git cloneでlocakstackを取得し、dockerで起動します。
詳細な手順は公式や上記を参照して欲しいですが、コマンドだけ書くと以下のようになります。

$ git clone https://github.com/localstack/localstack
$ cd localstack
$ docker-compose up

インストール後、クレデンシャルファイルに プロファイル名「localstack」の定義を作成しておきます。

AWS CDKとAWS Cloud Development Kit (CDK) for LocalStack(aws-cdk-local)

AWS CDKだけ先に用意し、CDKから直接 endpoint と プロファイルを指定してデプロイしようとしたのですが、以下のようなエラーメッセージができませんでした。

Unable to resolve AWS account to use. It must be either configured when you define your CDK or through the environment

locakstackより、「AWS Cloud Development Kit (CDK) for LocalStack」(aws-cdk-local)というのが出ているようなので、こちらを使うことにしました。
GitHub - localstack/aws-cdk-local: Thin wrapper script for using the AWS CDK CLI with LocalStack

公式ではローカルにnpmでインストールしているようですが、今回はAWS CDK・aws-cdk-local ともグローバルにインストールしました。

$ npm install -g aws-cdk
$ npm install -g aws-cdk-local
$ cdklocal --version

AWS CDKのプロジェクトは、以前の記事や公式サイトを元に作成しました。CDKでS3バケットを作成するだけのプロジェクトです。
aws-cdkを触ってみた - ソースコードから理解する技術-UnderSourceCode
Your first AWS CDK app - AWS Cloud Development Kit (AWS CDK)

npmによるビルドや、synthによるCloudFormationの確認などは通常のAWSをCDKで操作するときと同じように行うことが出来ます。
endpoint と プロファイルを localstackのものを指定してます。

$ npm run build
$ cdk synth --endpoint-url=http://localhost:4566 --profile=localstack

デプロイについては、aws-cdk-locakのコマンド「cdklocal」を使い、以下のように行います。

$ cdklocal deploy --endpoint-url=http://localhost:4566 --profile=localstack

デプロイされたことを確認するため、aws cliのコマンドを使って確認してみます。
ここでも endpoint と プロファイルを localstackのものを指定してます。

$ aws s3 ls --endpoint-url=http://localhost:4566 --profile=localstack
2020-11-15 15:21:50 hello-cdk-20201115

以上です。