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

问题描述

我正在尝试使用 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($)"
          }
        }
...

AWS Reference