【问题标题】:How to get AWS JavaScript SDK and DynamoDB working with LocalStack如何让 AWS JavaScript SDK 和 DynamoDB 与 LocalStack 一起使用
【发布时间】: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


    【解决方案1】:

    FWIW 导致 UnknownError 的问题与 putItem 命令参数有关。我们没有正确提供 sortKey 值。 DynamoDB 的 LocalStack 实现没有在响应中提供任何详细的错误输出,但是当我们在 AWS 上尝试类似的调用时,我们得到了详细的错误输出,这让我们了解了实现的问题。

    还值得注意的是,LocalStack Docker 容器的输出中确实出现了详细的错误信息,只是没有出现在调用 aws js sdk putItem 命令时的错误响应中。

    【讨论】:

      猜你喜欢
      • 2018-10-03
      • 2021-07-01
      • 2015-10-31
      • 2022-07-08
      • 1970-01-01
      • 2019-04-16
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多