🙌
localstackのlambdaからパラメーターストアの値を取得する時に発生するエラー
以下のようなdocker-composeでlocalstackを起動し、パラメーターストアに接続するようなlambda関数を作成したところエラーとなった。
docker-compose.yml
version: "3.8"
services:
localstack:
image: localstack/localstack:latest
container_name: localstack
ports:
- "4566:4566"
environment:
- SERVICES=lambda, secretmanager
- DATA_DIR=/tmp/localstack/data
- LAMBDA_EXECUTOR=docker-reuse
- DOCKER_HOST=unix:///var/run/docker.sock
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
Could not connect to the endpoint URL
上記のdocker-composeでlocalstackを起動し、lambda関数を実行し、パラメーターストアから値を取得しようとするとエラーが出る。
"errorMessage": "Could not connect to the endpoint URL: \"http://localhost:4566/\"",
"errorType": "EndpointConnectionError",
以下の行を追加。
docker-compose.yml
version: "3.8"
services:
localstack:
image: localstack/localstack:latest
container_name: localstack
ports:
- "4566:4566"
environment:
- SERVICES=lambda, secretmanager
- DATA_DIR=/tmp/localstack/data
- LAMBDA_EXECUTOR=docker-reuse
- DOCKER_HOST=unix:///var/run/docker.sock
+ - LAMBDA_DOCKER_NETWORK=host
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
listen tcp :9001: bind: address already in use
今度は下記のエラーが出る。
{
"errorMessage": "Lambda process returned with error. Result: . Output:\n2022/08/16 14:48:35 listen tcp :9001: bind: address already in use",
"errorType": "InvocationException",
以下の行を修正。
docker-compose.yml
version: "3.8"
services:
localstack:
image: localstack/localstack:latest
container_name: localstack
ports:
- "4566:4566"
environment:
- SERVICES=lambda, secretmanager
- DATA_DIR=/tmp/localstack/data
- - LAMBDA_EXECUTOR=docker-reuse
+ - LAMBDA_EXECUTOR=docker
- DOCKER_HOST=unix:///var/run/docker.sock
- LAMBDA_DOCKER_NETWORK=host
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
これでlocalstackから起動したlambdaから他のAWSリソースに接続できる。
Discussion