2015-09-26 115 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沒有文件的例子