我在 AWS step 函数中定义了一个状态机,我的一个状态是将项目存储到 DynamoDB
...
"Store item": {
"End": true,
"Type": "Task",
"Resource": "arn:aws:states:::dynamodb:putItem",
"Parameters": {
"Item": {
"foo": {
"S.$": "$.data.foo"
},
"bar": {
"S.$": "$.data.bar"
},
"baz": {
"S.$": "$.data.baz"
},
},
"TableName": "nrp_items"
}
},
...
问题始于baz
属性是可选的,即在某些情况下不存在。在这些情况下,putItem
任务失败:
执行状态“存储项目”时发生错误(在事件 ID #71 处输入)。> 在输入中找不到为字段 'S.$' 指定的 JSONPath '$.data.baz'
我的备份计划是使用 lambda 来执行这种类型的操作,但我可以直接使用分putItem
步任务功能来完成吗?
我想知道是否:
- 可以通过 JSONPath 以某种方式将我的整个
$.data
项目注入“项目”属性,例如:
...
"Store item": {
"End": true,
"Type": "Task",
"Resource": "arn:aws:states:::dynamodb:putItem",
"Parameters": {
"Item": "$.data",
"TableName": "nrp_items"
}
},
...
或
2) 定义 baz 属性是可选的