我正在使用docker来运行Localstack和Image0.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
但是当我尝试索引文档时
curl -XPUT http://localhost:4566/my-domain/_doc/1 -d '{"hello": "World"}' -H 'Content-Type: application/json'
它向我返回了{"status": "running"}
回复,我在日志中看到该消息:
INFO:localstack.services.edge:找不到主机"localhost:4566"、路径"/my-domain/_doc/1"、目标标头"、身份验证标头"的转发规则
然后,我通过在docker-compose.yml中配置端口4571
添加到暴露的端口中,并尝试了相同的方法,但这次使用 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'
成功了。
我不明白 - 根据文档,我应该只使用端口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
...
从这里,您可以看到下表:
>参数 | 说明 | 默认 |
---|---|---|
service.edgePort |
本地堆栈边缘服务4566 的端口号 |
|
service.esPort |
本地堆栈弹性搜索服务4571 的端口号 |