"Die bedingte Anforderung fehlgeschlagen" in der Erwägung, dass die Bedingung funktioniert
Ich bin mit Amazonica, eine Clojure-Bibliothek zu schreiben, zu DynamoDB.
Den folgenden fügt ein Element in DynamoDB und aktualisiert Ihren Inhalt, wenn ein zweites mal aufgerufen, was zu erwarten ist.
(ddb/put-item cred
:table-name table-name
:item payload)
Nun, die folgenden fügt ein Element nur die erste Zeit. Nannte es ein zweites mal nicht tun, das ist, was ich brauche.
(ddb/put-item cred
:table-name table-name
:condition-expression "attribute_not_exists(clientId)"
:item payload)
Jedoch mit der neuesten bekomme ich eine Fehlermeldung:
Die bedingte Anforderung ist fehlgeschlagen (Dienst: AmazonDynamoDBv2; Status Code: 400; Fehler-Code: ConditionalCheckFailedException;
... die nicht wirklich den code lieferbar. Meine CloudFormation-Vorlage ist sehr einfach:
"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"
}
}
}
Bin ich etwas fehlt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Amazonica nicht schweigend schlucken die Tatsache, dass das Element nicht Hinzugefügt wurde. Es wirft eine exception, die man fangen kann, falls Sie wollen, etwas dagegen zu tun. Vielleicht möchten Sie:
Um dies zu testen, stellen Sie sicher, dass der gleiche Aufruf funktioniert in der Tat für neue Schlüssel.