amazon-web-services - "The conditional request failed"而条件有效

标签 amazon-web-services clojure amazon-dynamodb aws-cloudformation amazonica

我正在使用 Amazonica(一个 Clojure 库)来写入 DynamoDB。

以下代码将一个项目插入 DynamoDB 中,并在第二次调用时更新其内容,这是预期的。

(ddb/put-item cred
   :table-name table-name
   :item payload)

现在,以下内容仅在第一次插入项目。第二次调用它不会执行任何操作,这正是我所需要的。

(ddb/put-item cred
   :table-name table-name
   :condition-expression "attribute_not_exists(clientId)"
   :item payload)

但是最新版本我收到错误:

The conditional request failed (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ConditionalCheckFailedException;

...这并不能真正使代码可交付。我的 CloudFormation 模板非常简单:

"Resources": {
  "ClientTable": {
    "Type": "AWS::DynamoDB::Table",
    "Properties": {
      "AttributeDefinitions": [
        { "AttributeName": "clientId", "AttributeType": "S" }
      ],
      "KeySchema": [
        { "AttributeName": "clientId", "KeyType": "HASH" }
      ],
      "ProvisionedThroughput": {
        "ReadCapacityUnits": { "Ref": "ReadCapacityUnits" },
        "WriteCapacityUnits": { "Ref": "WriteCapacityUnits" }
      },
      "TableName": "ClientTable"
    }
  }
}

我错过了什么吗?

最佳答案

Amazonica 并没有默默地接受该项目未添加的事实。它会抛出一个异常,您可以捕获该异常,以防万一您想对此采取措施。也许您想要:

  1. 捕获异常
  2. 确保错误代码与该错误代码匹配
  3. 如果有,请忽略它。

要测试这一点,请确保相同的调用确实适用于新 key 。

关于amazon-web-services - "The conditional request failed"而条件有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35096312/

相关文章:

javascript - 使用 REST API 从 Amazon S3 下载文件

node.js - 获取任务在 59.05 秒后超时 aws lambda nodejs

json - 转到 AWS,从 DynamoDB 项目编码到 JSON,省略空值

java - Kendo UI 网格 Json 数据未加载

java - dynamoDB mapper scan() 错误 : java. lang.NullPointerException: null

javascript - 无法使用 aws-amplify 从 cognito 获取更新的属性及其值

asp.net-mvc - 用于 Amazon S3 的基于开源或付费 JavaScript 的文件管理器

clojure - 在 Clojure 中保存映射/结构的最简单方法是什么?

Clojure:列表替换函数

clojure - 多方法性能