我们正在使用Dynamodb Local进行集成测试。它是在容器内启动的,在该容器内,我们需要连接到Dynamodb local。这是DocumentClient初始化的方式:
const doc = new AWS.DynamoDB.DocumentClient({
region: 'localhost',
endpoint: 'http://localhost:5000/'
});
但是,当我尝试连接时,请尝试批量写入,例如doc.batchWrite(buildSetData).promise()
,但诺言从未实现。对于那些想知道的人,batchwrite是用JavaScript编写的,.promise()
仅返回了JS promise。
但是,当我在docker容器外部本地运行安装程序时,一切运行正常。
TLDR:为什么我无法连接到容器内的DynamoDb Local。
答案 0 :(得分:0)
问题是由于docker环境没有凭据而导致的。我假设dynamodb-local不需要AWS凭证,即使它未连接到AWS,但dynamodb-local仍然需要它们(实际上,只要存在密钥,它们甚至可以是无意义的凭证)。
TLDR:如果其他人有此问题,只需在docker env中定义以下键:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY