AWS-如何将DynamoDb表数据传递给Lambda函数

时间:2019-04-25 10:12:10

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

下面是table中我的客户DynamoDb

name: string

我已链接了一个触发器,该触发器将调用Lambda函数,而该函数又会调用我的应用程序Endpoint,它将进行数据转换并保存在SQL DB中

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

我需要通过Lambda函数捕获name dynamoDb表的customer值,该函数可以传递给端点。

新手。因此,如果过于简单,请原谅。但是找不到可以帮助我的信息。

谢谢!

1 个答案:

答案 0 :(得分:2)

您的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);