localstack AWS S3 javascript错误:getaddrinfo ENOTFOUND bucketname.localhost

use*_*987 4 amazon-s3 amazon-web-services node.js

使用 localstack S3 和 AWS JS SDK V3 时出现此错误:

getaddrinfo ENOTFOUND bucket-name.localhost
Run Code Online (Sandbox Code Playgroud)

我的 Localstack docker-compose:

  localstack_main:
    container_name: "localstack_main"
    image: localstack/localstack
    ports:
      - "127.0.0.1:4566:4566"
      - "127.0.0.1:4572:4572"
    environment:
      - SERVICES=sqs:4566,s3:4572
      - DEFAULT_REGION=us-east-1
      - DATA_DIR=${TMPDIR:-/tmp/}localstack/data
      - HOST_TMP_FOLDER=${TMPDIR:-/tmp/}localstack
    volumes:
      - "${TMPDIR:-/tmp}/localstack:/tmp/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"
      - './localstackSetup.sh:/docker-entrypoint-initaws.d/make-s3.sh'
Run Code Online (Sandbox Code Playgroud)

和我的 S3 配置:

region: EnvConfig.S3_REGION,
endpoint: 'http://localhost:4566',
Run Code Online (Sandbox Code Playgroud)

use*_*987 15

解决方案是添加“forcePathStyle: true”,如下所示: https: //qubyte.codes/blog/tip-connecting-to-localstack-s3-using-the-javascript-aws-sdk-v3 我认为这会自动删除在存储桶名称后添加“.localhost”。

我的 s3 客户端的新配置是:

{ 
    region: EnvConfig.S3_REGION,
    endpoint: 'http://localhost:4566',
    forcePathStyle: true
  }
Run Code Online (Sandbox Code Playgroud)