![](/img/trans.png)
[英]docker up and running on my Mac but "sam local invoke" command results in Error: Running AWS SAM projects locally requires Docker
[英]Unable to connect AWS SAM local API to dynamodb-local running in docker instance
我正在尝试开发一个 Lambda API 来与 DynamoDB 交互,但我的本地测试设置有问题。
我正在使用 AWS SAM 进行开发,但出于某种原因,我的本地 API 服务器(使用sam local start-api
)无法连接到在 Docker 中运行的 DynamoDB Local 实例。我已经能够调用 DynamoDB Local 端点 http ://localhost:8000,使用 AWS CLI,但据我所知,由于 .network 网桥,我需要为端点使用容器名称。
这是我得到的错误:
"errorMessage":"Inaccessible host: `ddb-local' at port `undefined'. This service may not be available in the `localhost' region.
这是我正在使用的配置:
docClient = new dynamodb.DocumentClient({
accessKeyId: "0600k",
secretAccessKey: "k3hwkb",
region: "localhost",
endpoint: "http://ddb-local/:8000",
});
这是 docker-compose.yml:
version: '3.8'
services:
dynamodb-local:
command: "-jar DynamoDBLocal.jar -sharedDb -optimizeDbBeforeStartup -dbPath ./data"
image: "amazon/dynamodb-local:latest"
container_name: ddb-local
ports:
- "8000:8000"
volumes:
- "./docker/dynamodb:/home/dynamodblocal/data"
working_dir: /home/dynamodblocal
如何成功连接这两个服务?
Dynamodb 本地端点应该是http://ddb-local:8000
。
此外,您可能需要设置一个有效的区域名称,例如us-west-2
对于遇到同样问题的其他人,我在这里找到了我的解决方案: connecting AWS SAM Local with dynamodb in docker
本质上,您需要将 SAM 本地 API 的 Docker 网络设置为与您的 DynamoDB 本地 docker 实例相同,然后将端点设置为您的 DynamoDB 本地容器名称。 以下是对我有用的设置:
DynamoDB 文档客户端:
docClient = new dynamodb.DocumentClient({
accessKeyId: "0600k",
secretAccessKey: "k3hwkb",
region: "eu-west-2",
endpoint: "http://ddb-local:8000",
});
DynamoDB Docker 编写文件
version: '3.8'
services:
dynamodb-local:
command: "-jar DynamoDBLocal.jar -sharedDb -optimizeDbBeforeStartup -dbPath ./data"
image: "amazon/dynamodb-local:latest"
container_name: ddb-local
ports:
- "8000:8000"
volumes:
- "./docker/dynamodb:/home/dynamodblocal/data"
working_dir: /home/dynamodblocal
networks:
dynamodb-local-network: {}
networks:
dynamodb-local-network:
name: dynamodb-local-network
将以下标志添加到您的 start-api 命令:
--docker-network dynamodb-local-network
在“amazon/dynamodb-local:1.13.5”之后构建的图像存在问题
只需更改此行: image: "amazon/dynamodb-local:latest"
by image: amazon/dynamodb-local:1.13.5
在您的 Docker Compose 文件中。
现在您可以检查 http://localhost:8000/shell/ 是否运行良好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.