AWS 状态机 - 更新 DynamoDB table 正在用“$.id”替换 ID
AWS State Machine - Update DynamoDB table is replacing the ID with "$.id"
我有一个步骤要更新 DynamoDB 上的对象 table。
除了创建 ID 值为“$.id”的新对象外,一切正常,而不是更新我传入的 ID。
这是我第一次尝试状态机,我做错了什么?
"update-table-processing": {
"Type": "Task",
"Resource": "arn:aws:states:::dynamodb:updateItem",
"ResultPath": "$.updateResult",
"Parameters": {
"TableName": "Projects",
"Key": {
"id": {
"S": "$.id"
}
},
"UpdateExpression": "SET step = :updateRef",
"ExpressionAttributeValues": {
":updateRef": {
"S": "processing"
}
},
"ReturnValues": "ALL_NEW"
},
"Next": "create-project"
},
我是否需要以某种方式告诉 DynamoDB 评估“$.id”而不是将其视为“S”,或者发生这种情况是因为我没有正确映射“$.id”值的输入是空的?
我的输入如下:
{
"id": "f8185735-c90d-4d4e-8689-cec68a48b1bc"
}
为了从您的输入中指定数据,您必须使用键值对,键值以“.$”结尾。因此,要解决此问题,您需要将其更改为:
"Key": {
"id": {
"S.$": "$.id"
}
},
使用上面的方法,它应该正确解析为您输入的值而不是字符串值“$.id”。
我有一个步骤要更新 DynamoDB 上的对象 table。
除了创建 ID 值为“$.id”的新对象外,一切正常,而不是更新我传入的 ID。
这是我第一次尝试状态机,我做错了什么?
"update-table-processing": {
"Type": "Task",
"Resource": "arn:aws:states:::dynamodb:updateItem",
"ResultPath": "$.updateResult",
"Parameters": {
"TableName": "Projects",
"Key": {
"id": {
"S": "$.id"
}
},
"UpdateExpression": "SET step = :updateRef",
"ExpressionAttributeValues": {
":updateRef": {
"S": "processing"
}
},
"ReturnValues": "ALL_NEW"
},
"Next": "create-project"
},
我是否需要以某种方式告诉 DynamoDB 评估“$.id”而不是将其视为“S”,或者发生这种情况是因为我没有正确映射“$.id”值的输入是空的?
我的输入如下:
{
"id": "f8185735-c90d-4d4e-8689-cec68a48b1bc"
}
为了从您的输入中指定数据,您必须使用键值对,键值以“.$”结尾。因此,要解决此问题,您需要将其更改为:
"Key": {
"id": {
"S.$": "$.id"
}
},
使用上面的方法,它应该正确解析为您输入的值而不是字符串值“$.id”。