dynamodb UpdateItem 使用 API 网关作为代理,错误

dynamodb UpdateItem using API Gateway as Proxy, error

我正在使用 AWS API 网关作为代理来公开 DynamoDB API。 UpdateItem 映射不起作用,它 return:

{
  "__type": "com.amazon.coral.service#SerializationException"
}

下面是映射模板和负载:

{
    "TableName": "registros",
    "Key": {
        "Pk": {
            "S": "$input.path('$.Pk')"
        },
        "Sk": {
            "S": "$input.path('$.Sk')"
            }
    },
    "UpdateExpression": "set intenciones = :intenciones",
    "ConditionExpression": "Pk = :Pk, Sk = :Sk,",
    "ExpressionAttributeValues": {
        ":Pk": {"S": "$input.path('$.Pk')"},
        ":Sk": {"S": "$input.path('$.Sk')"},
        ":intenciones": {"S": "$input.path('$.intenciones')"},
    },
"ReturnValues": "UPDATED_NEW"
}

有效负载:

{ 
"Pk":"DemandaProd",
"Sk":"raerytre#22",
"intenciones":"news"
}

您不需要 ConditionExpression,因为 Key 暗示您将在 PkSk 上进行匹配。试试这个:

{
  "TableName": "registros",
  "Key": {
    "Pk": {
      "S": "$input.path('$.Pk')"
    },
    "Sk": {
      "S": "$input.path('$.Sk')"
    }
  },
  "UpdateExpression": "set intenciones = :intenciones",
  "ExpressionAttributeValues": {
    ":intenciones": { "S": "$input.path('$.intenciones')" }
  },
  "ReturnValues": "UPDATED_NEW"
}