Localstack:ES rest api 使用的端口

Ant*_*nrd 8 localstack

我正在使用 docker 运行 Localstack 和 image 0.11.1。我打开了es服务并暴露了端口4566- 根据文档(https://github.com/localstack/localstack):

从 0.11.0 版本开始,所有 API 都通过单个边缘服务公开,默认情况下可通过http://localhost:4566访问

我可以成功地使用 AWS CLI 列出域名并创建域名:

aws --endpoint-url=http://localhost:4566 es list-domain-names
aws --endpoint-url=http://localhost:4566 es create-elasticsearch-domain --domain-name my-domain --elasticsearch-version 7.4
Run Code Online (Sandbox Code Playgroud)

但是当我尝试索引文档时

curl -XPUT http://localhost:4566/my-domain/_doc/1 -d '{"hello": "World"}' -H 'Content-Type: application/json'
Run Code Online (Sandbox Code Playgroud)

它回复{"status": "running"}了我,我在日志中看到了消息:

信息:localstack.services.edge:无法找到主机“localhost:4566”的转发规则,路径“/my-domain/_doc/1”,目标标头“”,身份验证标头“”

然后我4571通过在 docker-compose.yml 中配置它来将端口添加到暴露的端口并尝试相同,但这次使用http://localhost:4571/my-domain/_doc/1 url 来索引文档。

curl -XPUT http://localhost:4571/my-domain/_doc/1 -d '{"hello": "World"}' -H 'Content-Type: application/json'
Run Code Online (Sandbox Code Playgroud)

有效。

我不明白 - 根据文档,我应该只使用端口,4566但它不起作用。我错过了什么吗?


我的 docker-compose.yml 暴露了两个端口:

...
localstack:
    container_name: "localstack"
    image: localstack/localstack:0.11.1
    privileged: true
    ports:
      - "4566:4566"
      - "4571:4571"
    environment:
      - SERVICES=es
      - START_WEB=0
      - LAMBDA_REMOTE_DOCKER=0
      - DATA_DIR=/tmp/localstack/data
...
Run Code Online (Sandbox Code Playgroud)

kya*_*kya 1

从这里,您可以看到这张表:

范围 描述 默认
service.edgePort Localstack边缘服务的端口号 4566
service.esPort Localstack elasticsearch 服务的端口号 4571