AWS 状态机 - 更新 DynamoDB table 正在用“$.id”替换 ID

AWS State Machine - Update DynamoDB table is replacing the ID with "$.id"

我有一个步骤要更新 DynamoDB 上的对象 table。

除了创建 ID 值为“$.id”的新对象外,一切正常,而不是更新我传入的 ID。

这是我第一次尝试状态机,我做错了什么?

    "update-table-processing": {
      "Type": "Task",
      "Resource": "arn:aws:states:::dynamodb:updateItem",
      "ResultPath": "$.updateResult",
      "Parameters": {
        "TableName": "Projects",
        "Key": {
          "id": {
            "S": "$.id"
          }
        },
        "UpdateExpression": "SET step = :updateRef",
        "ExpressionAttributeValues": {
          ":updateRef": {
            "S": "processing"
          }
        },
        "ReturnValues": "ALL_NEW"
      },
      "Next": "create-project"
    },

我是否需要以某种方式告诉 DynamoDB 评估“$.id”而不是将其视为“S”,或者发生这种情况是因为我没有正确映射“$.id”值的输入是空的?

我的输入如下:

{
    "id": "f8185735-c90d-4d4e-8689-cec68a48b1bc"
}

为了从您的输入中指定数据,您必须使用键值对,键值以“.$”结尾。因此,要解决此问题,您需要将其更改为:

    "Key": {
      "id": {
        "S.$": "$.id"
      }
    },

使用上面的方法,它应该正确解析为您输入的值而不是字符串值“$.id”。

参考文献 - https://docs.aws.amazon.com/step-functions/latest/dg/input-output-inputpath-params.html#input-output-parameters