2015-09-26 4 views
0

J'écris un fichier de script shell pour effectuer une opération sur dynamoDB à l'aide d'AWS CLI. J'essaie de mettre à jour un attribut dans un élément dans une table dynamodb si l'attribut existe déjà.Commande AWS CLI DynamoDB

Cependant, je ne suis pas à l'aise avec la syntaxe de la commande update-item. Je veux mettre à jour un attribut nommé 'conf' avec une certaine valeur. Cependant, je ne suis pas capable de comprendre la syntaxe pour SET dans la commande. C'est ce que j'ai jusqu'à maintenant:

aws dynamodb update-item --table-name MY_TABLE_NAME --key '{"AccountId": {"S": accountId}}' 

Je sais que ce qui précède doit être suivi de l'option SET.

Toute aide serait appréciée.

Répondre

1

Je pense qu'il ressemblerait à quelque chose comme ceci:

aws update-élément --table nom MY_TABLE_NAME fichier --key: //update-key.json --update expression « SET conf =: NewConf » fichier --expression-attributs-valeurs: //update-attr-values.json --condition expression "attribute_exists (conf)" --return valeurs ALL_NEW

update-clé. json

{ 
    "AccountId": { 
     "S": "account123" 
    } 
} 

update-attr-values.json

{ 
    ":newconf": { 
     "S": "new conf value" 
    } 
} 
+0

Mon utilisation si pour faire cette mise à jour pour divers comptes en les lisant à partir d'un fichier un à la fois. Donc, je ne veux pas créer de fichiers json séparés pour les valeurs d'attribut de clé et d'expression. Pouvez-vous suggérer la commande qui met juste à jour une valeur d'attribut sans utiliser de fichiers json? –

+0

Vous pouvez utiliser des variables de script shell. Comment itétes-tu le fichier? – James

+0

Je veux une commande similaire pour update-item où je n'ai pas besoin de fournir des fichiers json. Je parcourrai le fichier ligne par ligne et pour chaque ligne, je mettrai à jour la table. Par conséquent, je veux injecter la valeur des variables de script shell dans la commande et ne pas utiliser des fichiers json séparés. –

0

Il est possible de le faire sans fichiers, mais la réponse est cachée dans le guide du développeur 700+ pages de DynamoDB:

aws dynamodb update-item \ 
--region MY_REGION \ 
--table-name MY_TABLE_NAME \ 
--key='{"AccountId": {"S": accountId}}' \ 
--update-expression 'SET conf=:newconf' \ 
--expression-attribute-values '{":newconf":{"S":"new conf value"}}' 

Le Le guide du développeur de Dynamo DB peut être trouvé ici: Dynamo DB Developer guide

Sur la page 206 par Atomic Counters, il y a un exemple d'utilisation de --expression-attribute-values sans fichier