🙌

localstackのlambdaからパラメーターストアの値を取得する時に発生するエラー

2022/08/17に公開

以下のような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リソースに接続できる。

GitHubで編集を提案

Discussion