首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“条件请求失败”,而条件有效

“条件请求失败”,而条件有效
EN

Stack Overflow用户
提问于 2016-01-30 00:06:51
回答 1查看 15.2K关注 0票数 9

我正在使用Amazonica,一个Clojure库来写到DynamoDB。

下面的内容将插入到DynamoDB中,并在第二次调用时更新其内容,这是预期的。

代码语言:javascript
复制
(ddb/put-item cred
   :table-name table-name
   :item payload)

现在,下面只在第一次插入一个项。第二次不做任何事,这就是我所需要的。

代码语言:javascript
复制
(ddb/put-item cred
   :table-name table-name
   :condition-expression "attribute_not_exists(clientId)"
   :item payload)

然而,最近我收到了一个错误:

条件请求失败(服务: AmazonDynamoDBv2;状态代码: 400;错误代码: ConditionalCheckFailedException;

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

代码语言:javascript
复制
"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"
    }
  }
}

我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-30 00:15:24

亚马逊并没有默默地吞下这个项目没有被添加的事实。这是抛出一个异常,你可以抓住,以防你想做些什么。也许你想:

  1. 捕获异常
  2. 确保错误代码与那个错误代码匹配
  3. 如果是的话就忽略它。

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

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35096312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档