AppSync 到 DynamoDB 更新查询映射错误

AppSync to DynamoDB update query mapping error

我有以下 DynamoDB 映射模板,用于更新现有的 DynamoDB 项目:

{
  "version" : "2017-02-28",
  "operation" : "UpdateItem",
  "key" : {
    "id": $util.dynamodb.toDynamoDBJson($ctx.args.application.id),
    "tenant": $util.dynamodb.toDynamoDBJson($ctx.identity.claims['http://domain/tenant'])
  },
  "update" : {
    "expression" : "SET #sourceUrl = :sourceUrl, #sourceCredential = :sourceCredential, #instanceSize = :instanceSize, #users = :users",
    "expressionNames" : {
        "#sourceUrl" : "sourceUrl",
        "#sourceCredential" : "sourceCredential",
        "#instanceSize" : "instanceSize",
        "#users" : "users"
    },
    "expressionValues" : {
        ":sourceUrl" : $util.dynamodb.toDynamoDbJson($ctx.args.application.sourceUrl),
        ":sourceCredential" : $util.dynamodb.toDynamoDbJson($ctx.args.application.sourceCredential),
        ":instanceSize" : $util.dynamodb.toDynamoDbJson($ctx.args.application.instanceSize),
        ":users" : $util.dynamodb.toDynamoDbJson($ctx.args.application.users)
    }
  },
  "condition" : {
    "expression" : "attribute_exists(#id) AND attribute_exists(#tenant)",
    "expressionNames" : {
      "#id" : "id",
      "#tenant" : "tenant"
    }
  }
}

但我收到以下错误:

message: "Unable to parse the JSON document: 'Unrecognized token '$util': was expecting ('true', 'false' or 'null')↵ at [Source: (String)"{↵  "version" : "2017-02-28",↵  "operation" : "UpdateItem",↵  "key" : {↵    "id": {"S":"abc-123"},↵    "tenant": {"S":"test"}↵  },↵  "update" : {↵    "expression" : "SET #sourceUrl = :sourceUrl, #sourceCredential = :sourceCredential, #instanceSize = :instanceSize, #users = :users",↵    "expressionNames" : {↵        "#sourceUrl" : "sourceUrl",↵        "#sourceCredential" : "sourceCredential",↵        "#instanceSize" : "instanceSize",↵        "#users" : "users"↵    }"[truncated 400 chars]; line: 17, column: 29]'"

我试过删除部分,它似乎与 expressionValues 有关,但我看不出语法有任何问题。

你好像拼错了 toDynamoDBJson 方法

替换

$util.dynamodb.toDynamoDbJson($ctx.args.application.sourceUrl)

$util.dynamodb.toDynamoDBJson($ctx.args.application.sourceUrl)

注意toDynamoDBJson中的大写B