Amazon web services AWS状态机-更新DynamoDB表正在用“$”替换ID。id";

Amazon web services AWS状态机-更新DynamoDB表正在用“$”替换ID。id";,amazon-web-services,amazon-dynamodb,aws-step-functions,Amazon Web Services,Amazon Dynamodb,Aws Step Functions,我有一个步骤要更新DynamoDB表上的对象 除了创建一个ID值为“$.ID”的新对象,而不是更新我传入的ID之外,其他一切都正常工作 这是我第一次尝试使用状态机,我做错了什么 "update-table-processing": { "Type": "Task", "Resource": "arn:aws:states:::dynamodb:updateItem"

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

除了创建一个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”


引用-

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

    "Key": {
      "id": {
        "S.$": "$.id"
      }
    },
使用上述方法,它应该正确解析为输入值,而不是字符串值“$.id”

参考-