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
以上です。