AWSCli dynamodb update-item命令语法

时间:2015-09-29 03:40:17

标签: amazon-web-services amazon-dynamodb aws-cli

正在使用AmazonAwsCli编写shell脚本来更新dynamodb表中项目的属性。我想更新表中的多个项目的属性。我正在从文件中读取属性值,并尝试通过在命令中注入shell脚本变量的值来更新表。 http://docs.aws.amazon.com/cli/latest/reference/dynamodb/update-item.html提供的文档建议为表达式 - 属性 - 名称和表达式 - 属性 - 值使用单独的json文件。但是,我不想创建单独的json文件。相反,我想编写一个命令来更新给定属性值的项目。

My table name = MY_TABLE_NAME

hashkey = AccountId

shell script variable holding the value of AccountId = accountId

attribute name that needs to be updated = Version

shell script variable holding the value of Version = ver

我有类似的东西:

  

aws dynamodb update-item --table-name MY_TABLE_NAME --key'{“AccountId”:{“S”:'$ accountId'}}' - update-expression“SET Version ='{”Version“: {“S”:'$ ver'}}'“ - condition-expression”attribute_exists(Version)“ - return-values UPDATED_NEW

但是,上面的命令不起作用。有人能指出我正确的语法。

3 个答案:

答案 0 :(得分:2)

我的AwsCli版本不支持--update-expression选项。我改为使用了attribute-updates选项。

这是我的命令:

updatedVersion = aws dynamodb update-item --table-name MY_TABLE_NAME --key '{"AccountId": {"S": '$accountId'}}' --attribute-updates '{"Version": {"Value": {"S": '$desiredVersion'},"Action": "PUT"}}' --return-values UPDATED_NEW | jq '.Attributes.RuleSetVersion.S'

答案 1 :(得分:1)

其他答案在MAC和Linux上效果很好。 如果要在Windows上运行它,则需要使用"而不是'并将双引号""而不是单引号“`”

示例:

aws dynamodb update-item --table-name MY_TABLE_NAME --key "{""PRIMARY_KEY_NAME"":{""S"":""PRIMARY_KEY_VALUE""}}" --update-expression "SET #G = :g"  --expression-attribute-names "{""#G"":""COLUMN_NAME_TO_UPDATE_VALUE""}" --expression-attribute-values "{"":g"":{""N"":""DESIRED_VALUE""}}"

答案 2 :(得分:0)

下面是带有--update-expression的更新命令

 aws --region "us-east-1" dynamodb update-item \
 --table-name "MY_TABLE_NAME" --key \
 '{"Primary_Column_name":{"S":"Primary_Column_value"}}' \
 --update-expression 'SET #H = :h' \
 --expression-attribute-names '{"#H":"Column_name_to_change"}' \
 --expression-attribute-values '{":h":{"S":"Changed_Column_value"}}'