2015-09-29 3 views
0

Je suis en train d'utiliser AmazonAwsCli pour écrire un script shell afin de mettre à jour un attribut dans un élément d'une table dynamodb. Je souhaite mettre à jour un attribut dans une table pour plusieurs éléments. Je lis la valeur d'attribut d'un fichier et essaye de mettre à jour la table en injectant la valeur de la variable de manuscrit de coquille dans la commande. La documentation disponible au http://docs.aws.amazon.com/cli/latest/reference/dynamodb/update-item.html suggère d'utiliser des fichiers json séparés pour les noms d'attributs d'expression et les valeurs d'attributs d'expression. Cependant, je ne veux pas créer de fichiers json séparés. Je veux plutôt écrire une commande pour mettre à jour un élément pour une valeur d'attribut donnée.Syntaxe de commande AWSCli dynamodb update-item

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 

J'ai quelque chose comme:

aws update-élément --table nom MY_TABLE_NAME de --key « { "AccountId": { "S": 'accountId $'}} '--update-expression "SET Version =' {" Version ": {" S ": '$ ver'}} '" --condition-expression "attribut_exists (Version)" --return-values ​​UPDATED_NEW

Mais, la commande ci-dessus ne fonctionne pas. Quelqu'un peut-il me diriger vers la syntaxe correcte.

Répondre

1

Ma version AwsCli ne prenait pas en charge l'option --update-expression. J'ai utilisé l'option attribute-updates à la place.

Voici ma commande:

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'