【问题标题】:AWS AppSync conditional update with dynamodb resolver使用 dynamodb 解析器的 AWS AppSync 条件更新
【发布时间】:2019-01-06 23:32:39
【问题描述】:

尝试使用 Appsync dynamodb 解析器有条件地更新 dynamodb 中的项目。当通过 App 同步查询面板测试条件更新时,通过提供不正确的用户名,即使这样操作也会通过,并且使用新的 price 和 modifyDate 值更新数据库。这是解析器的代码:

{
    "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}" }
        }
    }
}

条件表达式有错误吗?

【问题讨论】:

    标签: database amazon-web-services amazon-dynamodb aws-appsync


    【解决方案1】:

    在我的脑海中,您的映射模板看起来是正确的。需要检查的几件事:

    -> 更改"id": $util.dynamodb.toDynamoDBJson($ctx.args.input.id) -> "id": $util.dynamodb.toStringJson($ctx.args.input.id)

    -> 下面是使用 Cognito 用户池身份验证与条件检查一起使用的映射模板示例。 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}" }
             }
          }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-07-18
      • 2019-12-04
      • 2018-12-15
      • 2019-10-14
      • 2018-11-15
      • 1970-01-01
      • 2018-10-11
      • 2020-10-19
      • 2019-02-12
      相关资源
      最近更新 更多