【Docker】docker-composeでlocalstackのコンテナを立てる
開発環境で実際のAWSと接続したくない!!そんな要望あると思います。
そんな時にAWSエミュレーター「localstack」が使えます。
今回はdocker-composeでlocalstackのコンテナを立てて、S3サービスのエミュレーターとして使用してみたいと思います。
環境情報
OS: Windows10 64bit
docker: v20.10.2
localstack: v0.12.6
AWS CLI: v2.1.24
localstackの対応サービス
無料版と有料版がありますが、無料版でも対応しているAWSサービスが多いので十分使えるツールです。
使用できるAWSサービスは公式githubを参照してください。
docker-composeでlocalstackのコンテナを立てる
任意のディレクトリでdocker-compose.ymlを作成し、以下のように記載してください。SERVICESには使用したいサービス名をカンマ区切りで設定することで複数サービス使用できます。
version: '3' services: # LocalStack localstack: image: localstack/localstack:latest environment: - SERVICES=s3 # 使いたいAWSサービスカンマ区切りで設定する - DEFAULT_REGION=ap-northeast-1 # リージョンを設定 - DATA_DIR=/tmp/localstack/data # データ保存するディレクトリ volumes: - ./localstack:/tmp/localstack # ローカルディレクトリをデータ保存ディレクトリへマウント ports: - 4566:4566 # サービスへのアクセスポートは4566
コンテナを起動する
以下のコマンドでdocker-composeを起動するとポート4566でコンテナが起動するはずです。
※docker-compose.ymlが配置されているディレクトリで実行すること
docker-compose up -d
初回はイメージを作成するのに少し時間がかかりますが、気長に待ちましょう。
動作確認する
今回はAWS CLIを使用して接続できるかdocker-composeのlocalstackに接続できるか確認します。
ダミーのAWS CLIコンフィグを作成
localstackに接続する際はIDやKeyは仮のもので大丈夫です。以下でダミーのaws configをプロファイル名dummyで作成します。
$ aws configure --profile dummy // 対話で設定を聞かれるので以下のように設定 AWS Access Key ID [None]: dummy AWS Secret Access Key [None]: dummy Default region name [None]: ap-northeast-1 Default output format [None]: None
バケットを作成する
以下のコマンドでlocalstack内にバケットを作成します。
aws s3 mb s3://sample-bucket --endpoint-url=http://localhost:4566 --profile dummy
バケットが存在するか確認する
以下のコマンドでバケット一覧を確認できます。先程作成したバケットが表示されればOKです。
aws s3 ls --endpoint-url=http://localhost:4566 --profile dummy
これでlocalstackがS3エミュレーターとして使用できることが確認できたのでここまで!あとは開発環境でアプリから接続するなりしましょう!!
参考
https://github.com/localstack/localstack
https://wand-ta.hatenablog.com/entry/2019/03/10/215639
ディスカッション
コメント一覧
まだ、コメントがありません