CLI命令 - PutItem和UpdateItem

PutItem - 插入数据

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

UpdateItem - 更新数据

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

image-20241226153316670

如果我们再次运行此命令,我们将看到以下错误:

An error occurred (ConditionalCheckFailedException) when calling the UpdateItem operation: The conditional request failed

因为Messages属性已在先前的update-item调用中增加到5,所以第二个请求会失败并出现ConditionalCheckFailedException