【问题标题】:AWS - how to pass DynamoDb table data to Lambda functionAWS - 如何将 DynamoDb 表数据传递给 Lambda 函数
【发布时间】:2019-04-25 18:33:58
【问题描述】:

下面是我的客户tableDynamoDb

name: string

我已链接一个触发器,该触发器将调用 Lambda 函数,该函数又调用我的应用端点,该端点将执行数据转换并保存在 SQL DB 中

每当我在上表中添加任何记录或更新记录时,我都可以看到 Lambda 函数被调用。但不确定如何捕获表格数据。

我需要通过 Lambda 函数捕获 customer dynamoDb 表的 name 值,我可以将其传递给我的 Endpoint。

这个新手。所以如果太简单请原谅。但找不到可以为我带来这个的信息。

谢谢!

【问题讨论】:

  • 您的意思是由 DynamoDB 流触发?
  • @jogold 是的。正确

标签: amazon-web-services asp.net-core aws-lambda amazon-dynamodb


【解决方案1】:

您的 Lambda 函数将收到 DynamoDB 流记录事件(请参阅 Using AWS Lambda with Amazon DynamoDB 以获取示例事件)。

您将在Records 键上映射/循环,您将在其中找到带有eventName: INSERT 的对象。在dynamodb 键中,您将找到应在您的Lamdba 函数代码中处理的表数据。

{
  "Records": [
    {
      "eventID": "1",
      "eventVersion": "1.0",
      "dynamodb": {
        "Keys": {
          "Id": {
            "N": "101"
          }
        },
        "NewImage": {
          "Message": {
            "S": "New item!"
          },
          "Id": {
            "N": "101"
          }
        },
        "StreamViewType": "NEW_AND_OLD_IMAGES",
        "SequenceNumber": "111",
        "SizeBytes": 26
      },
      "awsRegion": "us-west-2",
      "eventName": "INSERT",
      "eventSourceARN": eventsourcearn,
      "eventSource": "aws:dynamodb"
    }
  ]
}

在您的情况下,数据应位于Records[0].dynamodb.NewImage.name.S

如果在表中使用 Node.js 和混合类型,我建议使用 AWS.DynamoDB.Converter.unmarshall,它将 DynamoDB 记录转换为 JavaScript 对象。它允许您执行以下操作:

const newImage = DynamoDB.Converter.unmarshall(event.Records[0].dynamodb.NewImage);

【讨论】:

    猜你喜欢
    • 2016-04-10
    • 2017-12-30
    • 2021-12-13
    • 2017-12-25
    • 2021-03-27
    • 2015-10-17
    • 2019-04-03
    • 2016-03-27
    • 1970-01-01
    相关资源
    最近更新 更多