簡體   English   中英

“條件請求失敗”,而條件有效

[英]“The conditional request failed” whereas the condition works

我正在使用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)

然而,最新的我收到一個錯誤:

條件請求失敗(服務:AmazonDynamoDBv2;狀態代碼:400;錯誤代碼: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. 忽略它,如果它。

要對此進行測試,請確保相同的調用確實適用於新密鑰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM