PutItem
API用于插入一条新记录,或者替换原来的记录
例如在Reply表中插入一条新记录:
aws dynamodb put-item \
--table-name Reply \
--item '{
"Id" : {"S": "Amazon DynamoDB#DynamoDB Thread 2"},
"ReplyDateTime" : {"S": "2021-04-27T17:47:30Z"},
"Message" : {"S": "DynamoDB Thread 2 Reply 3 text"},
"PostedBy" : {"S": "User C"}
}' \
--return-consumed-capacity TOTAL
返回结果,消耗一个WCU:
{
"ConsumedCapacity": {
"TableName": "Reply",
"CapacityUnits": 1.0
}
}
DynamoDB UpdateItem API 用于创建新项目或完全替换现有项目。它使用update-item CLI命令 调用。
此API要求我们指定完整的主键,并且可以选择性地修改特定属性而不更改其他属性(我们不需要传入完整的项目)。
update-item
API调用还允许我们指定一个ConditionExpression,这意味着Update请求只有在ConditionExpression满足时才会执行。有关更多信息,请参见开发者指南中的条件表达式
。
假设我们想更新DynamoDB的Forum项目,以注明现在有5条消息而不是4条:
要从CLI运行此操作,我们需要执行:
aws dynamodb update-item \
--table-name Forum \
--key '{
"Name" : {"S": "Amazon DynamoDB"}
}' \
--update-expression "SET Messages = :newMessages" \
--condition-expression "Messages = :oldMessages" \
--expression-attribute-values '{
":oldMessages" : {"N": "4"},
":newMessages" : {"N": "5"}
}' \
--return-consumed-capacity TOTAL
如果我们再次运行此命令,我们将看到以下错误:
An error occurred (ConditionalCheckFailedException) when calling the UpdateItem operation: The conditional request failed
因为Messages属性已在先前的update-item
调用中增加到5,所以第二个请求会失败并出现ConditionalCheckFailedException。