如何使用 CLI 更新 AWS DynamoDB 中的嵌套项

How to update a nested item in AWS DynamoDB with CLI

在我的一个 AWS DynamoDB table 中,我有几个项目需要在管道中进行更新。 以下 json 显示 AWS DynamoDB table 中的一个项目:

{
  "DeploymentConfigs": {
    "L": [
      {
        "M": {
          "Config": {
            "M": {
              "Name": {
                "S": "batch-komo"
              },
              "Replicas": {
                "N": "3"
              }
            }
          }
        }
      },
      {
        "M": {
          "Config": {
            "M": {
              "Name": {
                "S": "online-komo"
              },
              "Replicas": {
                "N": "3"
              }
            }
          }
        }
      }
    ]
  },
  "environment": {
    "S": "komo-claimcenter"
  }
}

如何更新 DeploymentConfigs 中的对象? 主分区键是 environment.

例如对象

{
        "M": {
          "Config": {
            "M": {
              "Name": {
                "S": "batch-komo"
              },
              "Replicas": {
                "N": "3"
              }
            }
          }
        }
}

将更新为

   {
        "M": {
          "Config": {
            "M": {
              "Name": {
                "S": "batch-komo"
              },
              "Replicas": {
                "N": "5"
              }
            }
          }
        }
 }

不知道在AWS CLI中实现。

要更新项目内的嵌套部分,请使用带有属性路径的 UpdateExpression。例如,SET DeploymentConfigs[0].Config.Replicas = :val.

然而,问题在于您的顶级属性 DeploymentConfigs 是一个列表,因此要修改其中的一项,您需要知道索引(在本例中为 0)。如果你不知道你有问题的索引 - 没有办法“修改具有名称= 'batch-komo'的列表项”或类似的东西......如果你需要做这样的事情,你必须读取整个顶级属性,在客户端中对其进行修改,然后将其写回(或者只是小的更改,现在您知道了索引)。