我正在尝试开发一个Lambda API来与DynamoDB交互,但是我的本地测试设置出现了问题。
我正在使用AWS SAM进行开发,但由于某种原因,我的本地API服务器(使用sam local start-api
)无法连接到Docker内部运行的DynamoDB Local示例。我已经能够使用AWS CLI调用DynamoDB Local端点http://localhost:8000,但据我所知,由于网桥的原因,我需要使用端点的容器名称。
下面是我得到的错误:
"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
如何成功连接这两项服务?
3条答案
按热度按时间z9smfwbn1#
对于其他遇到同样问题的人,我在这里找到了我的解决方案:connecting AWS SAM Local with dynamodb in docker
本质上,您需要将SAM Local API的Docker网络设置为与DynamoDB Local Docker示例相同,然后将端点设置为DynamoDB Local容器名称的端点。
DynamoDB文档客户端:
DynamoDB Docker合成文件
将以下标志添加到start-api命令中:
camsedfj2#
Dynamodb本地终结点应为
http://ddb-local:8000
。此外,您可能需要设置有效的区域名称,例如
us-west-2
kognpnkq3#
在"amazon/dynamodb-local:1.13.5"之后构建的图像有问题
只需更改此行:在Docker合成文件中按
image: amazon/dynamodb-local:1.13.5
排列。现在您可以检查http://localhost:8000/shell/是否运行良好。