使用 AWS Step Functions 将整个 json 插入 Dynamo DB 中的字段

aws*_*est 4 json amazon-web-services amazon-dynamodb aws-step-functions

我正在尝试使用 AWS Step Functions 将 Item 放入 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"
          }
        ]
      }
    ]
...
Run Code Online (Sandbox Code Playgroud)

我想做的就是说,嘿 Step Function,请将整个 JSON 插入到项目字段中,如下所示

"Item": {
         ...

         "whole_payload": {
           "M.$": "$"
         },

       } ...
Run Code Online (Sandbox Code Playgroud)

但它失败了,因为它只接受一张要处理的 Map。所以我需要直接迭代所有嵌套映射并用“M”标记它们。

有没有办法让它自己解决呢?

就像在 Typescript 中一样,我可以使用 aws.DynamoDB.DocumentClient() 并将整个 JSON 放入该字段,它会自行解析所有映射

小智 5

遇到了向 AWS Step 功能团队提出类似请求的线程。增强的新功能可以更接近您正在寻找的东西。

示例片段:

...
      "Parameters": {
        "TableName" : "dynamodb-table",
        "Item":{
          "requestId" : {
            "S.$": "$.requestId"
          },
          "payload": {
            "S.$":"States.JsonToString($)"
          }
        }
...
Run Code Online (Sandbox Code Playgroud)

AWS 参考