Database 带dynamodb解析器的AWS AppSync条件更新
正在尝试使用Appsync dynamodb解析器对dynamodb中的项进行条件更新。当通过App sync queries面板测试条件更新时,通过提供不正确的用户名,即使操作完成,数据库也会更新为新值price和modificationDate。以下是解析程序的代码:Database 带dynamodb解析器的AWS AppSync条件更新,database,amazon-web-services,amazon-dynamodb,aws-appsync,Database,Amazon Web Services,Amazon Dynamodb,Aws Appsync,正在尝试使用Appsync dynamodb解析器对dynamodb中的项进行条件更新。当通过App sync queries面板测试条件更新时,通过提供不正确的用户名,即使操作完成,数据库也会更新为新值price和modificationDate。以下是解析程序的代码: { "version" : "2017-02-28", "operation" : "UpdateItem", "key" : { "id": $util.dynamodb.toDyna
{
"version" : "2017-02-28",
"operation" : "UpdateItem",
"key" : {
"id": $util.dynamodb.toDynamoDBJson($ctx.args.input.id)
},
"update" : {
"expression" : "SET price = :price, modificationDate = :newDate",
"expressionValues": {
":price" : { "N": $context.arguments.input.price },
":newDate": $util.dynamodb.toDynamoDBJson($util.time.nowISO8601())
}
},
"condition" : {
"expression" : "username = :expectedOwner",
"expressionValues" : {
":expectedOwner" : { "S" : "${context.identity.username}" }
}
}
}
条件表达式中有错误吗?在我的脑海中,您的映射模板看起来是正确的。有几件事需要检查: ->更改
“id”:$util.dynamodb.toDynamoDBJson($ctx.args.input.id)
->“id”:$util.dynamodb.toStringJson($ctx.args.input.id)
->下面是一个映射模板的示例,该模板使用Cognito用户池Auth进行条件检查。Cognito Identity/AWS IAM也应该如此
{
"version" : "2017-02-28",
"operation" : "UpdateItem",
"key" : {
"id": $util.dynamodb.toStringJson($ctx.args.id)
},
"update" : {
"expression" : "SET title = :title, modificationDate = :newDate, content = :content",
"expressionValues": {
":title" : $util.dynamodb.toStringJson($ctx.args.title),
":newDate": $util.dynamodb.toStringJson($util.time.nowISO8601()),
":content": $util.dynamodb.toStringJson($ctx.args.content)
}
},
"condition" : {
"expression" : "#sub = :expectedOwner",
"expressionNames" : { "#sub": "sub" },
"expressionValues" : {
":expectedOwner" : { "S" : "${context.identity.sub}" }
}
}
}