下面是table
中我的客户DynamoDb
name: string
我已链接了一个触发器,该触发器将调用Lambda函数,而该函数又会调用我的应用程序Endpoint,它将进行数据转换并保存在SQL DB中
无论何时在上表中添加任何记录或更新记录,我都可以看到正在调用Lambda函数。但不确定如何捕获表数据。
我需要通过Lambda函数捕获name
dynamoDb表的customer
值,该函数可以传递给端点。
新手。因此,如果过于简单,请原谅。但是找不到可以帮助我的信息。
谢谢!
答案 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);