🛠️
LocalStackをバージョンアップした際に、サポートされているはずのコマンドが正常に動作しなかった時に確認すること
これは何のための記事?
LocalStackのバージョンを1.3.1から2.0.0へとバージョンアップした際に、以前まで動いていたコマンドが動かなくなるパターンに遭遇しました。
Documentationやissueを見ても記載が見当たらなかったので、同じハマり方をしている方の助けになれば嬉しい💕ぐらいの温度感の記事です。
環境
本記事での環境に利用した環境は以下の通りです。
- mac book pro 16(2019)
- mac OS Monterey 12.5.1
- Docker Desktop 4.16.2
- SAM CLI, version 1.79.0
どういったエラーが発生したのか
環境の構築にはdocker-composeを利用したので、まずは設定は記載します。
version: "3.8"
services:
localstack:
container_name: "${LOCALSTACK_DOCKER_NAME:-localstack_main}"
image: localstack/localstack:2.0.0
working_dir: /app
ports:
- "127.0.0.1:4566:4566" # LocalStack Gateway
- "127.0.0.1:4510-4559:4510-4559" # external services port range
environment:
- DEBUG=${DEBUG:-0}
- LAMBDA_EXECUTOR=${LAMBDA_EXECUTOR:-docker-reuse}
- DOCKER_HOST=unix:///var/run/docker.sock
volumes:
- "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack"
- "/var/run/docker.sock:/var/run/docker.sock"
書き換えた箇所は、以下のimageに関する行だけです。
- image: localstack/localstack:1.3.1
+ image: localstack/localstack:2.0.0
本題となるコマンドは、以下のs3バケットを作成するコマンドです。
$ aws s3api create-bucket --bucket my-bucket \
--endpoint-url=http://localhost:4566 \
--profile localstack
この際、発生したエラーは以下の通りです。
CreateBucketは実装されていない、もしくはPro版の機能だと怒られてしまいます。
もちろん、s3に関する殆どの機能は、LocalStack Communityで提供されています。
An error occurred (InternalFailure) when calling the CreateBucket operation: API for service 's3' not yet implemented or pro feature - please check https://docs.localstack.cloud/references/coverage/ for further information
解消方法
非常に簡単です。
以下のように、docker-compose.yamlに設定しているworking_dir
を削除するだけです。
- working_dir: /app
あとは、同様にコマンドを叩けば、無事にs3バケットが作成されます。
$ aws s3api create-bucket --bucket my-bucket \
> --endpoint-url=http://localhost:4566 \
> --profile localstack
{
"Location": "/my-bucket"
}
まとめ
今回は、LocalStackのバージョンアップに関するエラーの解消方法を紹介しました。
LocalStackは頻繁にアップデートが行われおり、少しバージョンが上がるだけで以前のスクリプトが動かなくなったりします。
working_dir
などは設定されている方も結構な人数おられると思うので、少しでも助けになれば幸いです。
Discussion