我正在使用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"
}
}
}我是不是遗漏了什么?
发布于 2016-01-30 00:15:24
亚马逊并没有默默地吞下这个项目没有被添加的事实。这是抛出一个异常,你可以抓住,以防你想做些什么。也许你想:
要测试这一点,请确保相同的调用确实适用于新密钥。
https://stackoverflow.com/questions/35096312
复制相似问题