问题描述
我正在尝试使用 AWS Step Functions 将 PutItem 放入 DynamoDB。
我设法使用简单的字符串字段 (S) 保存了 Item,但其中一个字段应存储整个 JSON 负载。所以应该是地图(M)。
示例 JSON:
{
"firstMap": {
"field": "something",},"secondMap": {
"nestedMap": {
"field": "something","anothernestedMap": [
{
"field": "something","oneMorenestedMap": {
"andOneMore": {
"field": "something","arrayComesHere": [
{
"andAgainnestedMap": {
"field": "something","andAgain": [
{
"field": "something","alsonestedArray": [
{
"field": "something"
}
]
}
]
}
]
},"letItBeFinalOne": [
{
"field": "something"
}
]
}
]
...
我想要做的就是说,嘿 Step Function,请像这样将整个 JSON 插入到 item 字段中
"Item": {
...
"whole_payload": {
"M.$": "$"
},} ...
但是它失败了,因为它只接受一个 Map 来处理。 所以我需要直接迭代所有嵌套的地图并用'M'标记它们。
有没有办法让它自己解决?
就像在 Typescript 中一样,我可以使用 aws.DynamoDB.DocumentClient() 并将整个 JSON 放入该字段,它会自行解析所有地图
解决方法
遇到一个向 AWS Step Functions 团队提出类似请求的线程。增强的新功能允许更接近您正在寻找的东西。
示例片段:
...
"Parameters": {
"TableName" : "dynamodb-table","Item":{
"requestId" : {
"S.$": "$.requestId"
},"payload": {
"S.$":"States.JsonToString($)"
}
}
...