如何使用python解析DynamoDB发送给Lambda的数据结构?



我试图将DynamoDB与Amazon Lambda链接起来,这样当一个项目插入DynamoDB中时,它将被发送到我的Lambda函数,该函数将解析数据结构并对数据执行操作。然而,发布的数据看起来像这样:

{
      "Records": [
        {
          "eventID": "ebefd45a0610c7a54654nb09b491c7c",
          "eventVersion": "1.1",
          "dynamodb": {
            "SequenceNumber": "3300000555554005534567541",
            "Keys": {
              "Id": {
                "S": "13"
              }
            },
            "SizeBytes": 100,
            "NewImage": {
              "url": {
                "S": "http://test.com/blog/tips-on-choosing-a-suitable-company-2/"
              },
              "db_ref_id": {
                "S": "123"
              },
              "Id": {
                "S": "13"
              }
            },
            "ApproximateCreationDateTime": 1472638500,
            "StreamViewType": "NEW_AND_OLD_IMAGES"
          },
          "awsRegion": "us-west-2",
          "eventName": "INSERT",
          "eventSourceARN": "arn:aws:dynamodb:us-west-2:3454354:table/urls/stream/2016-08-31T07:21:11.412",
          "eventSource": "aws:dynamodb"
        }
      ]
    }

我在网上找到了这样一段代码:

for record in event['Records']:
        print(record['eventID'])

然而,我把我的代码修改成这样,它不起作用:

for record in event['Records']:
        print(record['dynamodb']['NewImage']['url']['S'])

因为我不太了解python,所以我不确定解析这个数据结构的最佳方法是什么。任何建议都会很有帮助的。

print string['Records'][0]['eventID']打印eventID

这里涉及到很多数据结构。外部是一个python字典,它的对象可以使用键接收。在我们的例子中,你的字典中只有一个映射,假设你在上面的整个数据结构被分配到变量event中,你可以使用event['Records']。稍后,您有一个列表[],其中的元素只能使用索引来获取。(如list[1], list[2]等)

从你的格式来看,我猜你可能有很多记录,你可以:

for record in event['Records']: print(record['dynamodb']['NewImage']['url']['S'])

这应该打印你想要的,如果上面发布的数据是一个字符串,解析需要先使用json python模块进行。

相关内容

  • 没有找到相关文章

最新更新