2015-09-26 135 views
0

我正在编写一个shell脚本文件,用于使用AWS CLI在dynamoDB上执行一些操作。如果属性已经存在,我试图更新dynamodb表中项目中的属性。AWS CLI DynamoDB命令

但是,我不熟悉update-item命令的语法。我想用一些值更新名为'conf'的属性。但是,我无法弄清楚SET命令的语法。这是我到现在为止:

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

我知道上面的必须跟随SET选项。

任何帮助,将不胜感激。

回答

1

我认为这将是这个样子:

AWS dynamodb更新项目--table名MY_TABLE_NAME --key文件://update-key.json --update表达“SET的conf =:NEWCONF” --expression属性值的文件://update-attr-values.json --condition表达 “attribute_exists(CONF)” --return值ALL_NEW

更新密钥。 json

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

更新ATTR-values.json

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

我的用例如果通过从一个文件一次读取它们来为各种帐户执行此更新。所以,我不想为键和表达式属性值创建单独的json文件。你能否建议只更新属性值而不使用任何json文件的命令? –

+0

你可以使用shell脚本变量。你如何迭代文件? – James

+0

我想要一个类似的命令update-item,我不需要提供json文件。我将逐行遍历文件,对于每一行,我都会更新表格。因此,我想在命令中注入shell脚本变量的值,而不是使用单独的json文件。 –

0

这是可以做到这一点没有文件,但得到的答复是隐藏dynamodb的700+网页开发者指南:

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

的迪纳摩DB的开发者指南可以在这里找到:Dynamo DB Developer guide

在原子计数器的206页上,有一个如何使用--expression-attribute-values没有文件的例子