【发布时间】:2021-03-06 04:12:57
【问题描述】:
我们正在使用 LocalStack,但在使用 AWS js SDK 与 DynamoDB 交互时遇到问题。我们在尝试使用 DynamoDB 实例的 putItem 方法时收到“UnknownError”。这是错误输出:
{
“name”: “DynamoDbError”,
“data”: {
“dynamoDbPutObjectParameters”: {
“TableName”: “fooTableName”,
“Item”: {
“hello”: {
“S”: “world”
}
}
}
},
“baseError”: {
“message”: null,
“code”: “UnknownError”,
“time”: “2020-11-23T11:40:26.382Z”,
“statusCode”: 500,
“retryable”: true
}
}
我们已将 DynamoDB 实例选项中的端点设置为:
http://localhost:4566
4566 是我们在 LocalStack 中为 DynamoDB 服务设置的 Edge 端口。
如果我们的 put 对象参数不正确但这些参数似乎没问题,我们会从 SDK 收到验证错误。它们在部署时确实可以在 AWS 上正常工作,并且表确实会更新。
我们已经使用 AWS CDK 和 aws-cdk-local 在本地部署了 DynamoDB 表,我们可以使用 AWS CLI 成功地在 LocalStack 中查询、放置和更新表。
问题似乎在于使用 AWS js SDK 与 LocalStack 中的 DynamoDB 进行交互。
这是对 putItem 的调用,它可以在 AWS 上运行,但不能通过 AWS 开发工具包使用 LocalStack:
putItem: async (
dynamoDbPutObjectParameters
) => {
try {
const data = await dynamoDbInstance.putItem(dynamoDbPutObjectParameters).promise();
return data;
} catch (error) {
throw new DynamoDbError('Failed to put data to DynamoDB', {
data: { dynamoDbPutObjectParameters },
baseError: error
});
}
},
有没有人对可能发生的事情或如何取得进展有任何想法?
谢谢
【问题讨论】:
标签: amazon-dynamodb aws-sdk-js localstack