代码之家  ›  专栏  ›  技术社区  ›  Chris

AWS状态机-更新DynamoDB表正在将ID替换为“$.ID”

  •  0
  • Chris  · 技术社区  · 6 年前

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

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

        "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"
    }
    
    0 回复  |  直到 6 年前
        1
  •  2
  •   Joe    6 年前

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

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

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

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