5

Sto utilizzando Amazonica, una libreria Clojure per scrivere su DynamoDB."La richiesta condizionale non è riuscita" mentre la condizione funziona

Il seguente inserisce un oggetto in DynamoDB e ne aggiorna il contenuto se chiamato una seconda volta, che è previsto.

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

Ora, il seguente inserisce un elemento solo la prima volta. Chiamarlo una seconda volta non fa nulla, ed è ciò di cui ho bisogno.

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

Tuttavia, con l'ultima sto ottenendo un errore:

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

... che in realtà non rendere il codice risultato finale. Il mio modello CloudFormation è molto semplice:

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

Mi manca qualcosa?

risposta

6

Amazonica non sta silenziosamente ingoiando il fatto che l'oggetto non è stato aggiunto. Sta facendo un'eccezione che puoi catturare nel caso tu voglia fare qualcosa al riguardo. Forse si vuole:

  1. intercettare l'eccezione
  2. assicurarsi che sia il codice di errore corrisponde a quella
  3. ignorarlo se lo fa.

Per verificare ciò, accertarsi che la stessa chiamata funzioni effettivamente per le nuove chiavi.

Problemi correlati