繁体   English   中英

从S3上传转换JSON数据,并使用Lambda function推送到DynamoDB

[英]Converting JSON Data from S3 upload, and using Lambda function to push to DynamoDB

我最近一直在做一项作业,我觉得我非常接近解决我遇到的问题,但我似乎无法在网上找到任何有帮助的东西。 正如标题所述,我已经将一些 JSON 数据从网页上传到 S3 存储桶中。 创建新的 S3 项目时,我想获取该数据并将其存储在 DynamoDB 表中。

我正在使用 Lambda function 并使用我已经存储在 S3 存储桶中的一些数据进行测试。 我的 console.logs 中的键值对中有数据,但我无法弄清楚为什么它实际上没有存储数据。

我的 Lambda 函数测试日志中的键值对示例

在左侧,我将数据分解为其键值对,即“艺术家”:“猫王”,使用 JSON.parse(JSON.stringify(data))。

我想知道的是如何将这些数据推送到表中。

var params = {
              Item: JSON.parse(JSON.stringify(data)),
              ReturnConsumedCapacity: "TOTAL",
              TableName: "s3-to-dynamo-s00187306"
             };
             dynamo.putItem(params, dynamoResultCallback);

上面的代码是我一直在尝试使用的代码,但它给了我一个超时错误。 如果我增加了允许的时间,那么我会收到与项目中缺少分区键相关的不同错误,即使我的分区键与每个项目中的键值之一匹配。

真的在这里难过,任何建议表示赞赏,在此先感谢。

[编辑]

因此,我使用了下面有人建议的 dynamo-db 转换器,并有一些日志可以让您深入了解正在发生的事情。

在此处输入图像描述

我现在已经为 dynamo-db 获得了正确格式的数据,并且据我所知,每个项目都被正确解析了。

至于dynamo代表什么,我不是 100% 所以我将在我的代码顶部添加它的声明的屏幕截图。 我认为这是文档客户端?

[编辑2]

所以我的“_class”值完全相同,可以尝试将分区键更改为 title 吗? (没关系这没用)

在此处输入图像描述

JSON.stringify(data)返回与 Dynamodb 格式不匹配的 json 格式,Dynamodb 正在等待这样的格式:

Item: {
    'CUSTOMER_ID' : {N: '001'},
    'CUSTOMER_NAME' : {S: 'Richard Roe'}
}

如您所见,语法不一样,我认为您需要使用另一个库,也许是dynamo-converters ,或者查看 NodeJs Aws SDK 也许有一种方法可以做到这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM