[英]DynamoDB putting item using AWS CLI
我正在嘗試使用本地 DynamoDB 的 AWS CLI。
在工作的過程中,我發現了一些問題。
插入和檢索項目 | DynamoDB,解釋道。 顯示如何使用 JSON 格式創建表。 但這對我不起作用。 所以我不得不使用Basic Operations for Tables - Amazon DynamoDB 。 無論如何,它奏效了。
但是麻煩的是放東西的時候。
我試圖像這樣將項目添加到本地數據庫:
aws dynamodb put-item \
--table-name UsersTable \
--item '{
"Username": {"S": "alexdebrie"}
}' \
--endpoint-url http://localhost:8000
但是出現了這樣的錯誤:
未知選項:{S:, alexdebrie}, }',用戶名:
我該如何處理?
PS:我使用的是 Windows 而不是\
,我使用了^
。
這是一個適用於 Windows 的單行示例:
aws dynamodb put-item --table-name test --item "{\"id\":{\"S\":\"mars\"},\"miles\":{\"N\":\"999\"}}"
所以,在你的情況下:
aws dynamodb put-item --table-name UsersTable --item "{\"Username\":{\"S\":\"alexdebrie\"}}" --endpoint-url http://localhost:8000
需要注意的幾點:
\\"id\\"
\\"N\\":\\"999\\"
我感覺到你的痛苦。 這太糟糕了。
您可能還想考慮使用--cli-input-json
在 JSON 文件中提供參數
嘗試使用 git bash,這解決了我的問題。 我在 Windows 中使用 cmd,但我遇到了同樣的格式問題。 相同的命令適用於 git bash。
代替"
放\\"
像這樣使用
aws dynamodb put-item \
--table-name UsersTable \
--item '{
\"Username\": {\"S\": \"alexdebrie\"}
}' \
我相信這個問題只在 Windows 上而不是在 Mac 或 linux 上是特定的。 但我同意@Jnana Palai。 但請確保 JSON 也包含在“ not ”中
同樣:aws dynamodb put-item
--table-name 用戶表
--item "{ "用戶名": {"S": "alexdebrie"} }" \\
如果您使用的是 Windows 10,永久處理此(反復出現的)問題的最佳方法是使用 Ubuntu 系統安裝適用於 Linux 的 Windows 子系統 ( WSL ),然后按照此處 ( AWS CLI Ubuntu ) 安裝適用於 Linux 的AWS CLI 。 完成此操作后,您可以在線使用來自 Linux 系統的約 95% 的 AWS CLI 片段,所有可怕的引用/轉義廢話都消失了! (此外,您還可以獲得在 Windows 系統中安裝 Linux 的巨大好處)
json='{"pets": {"cat": "lucy"},"fur":{"color": "brown"}}'
pets=$(printf "$json" "$pets" "$fur")
aws dynamodb put-item --table-name table-name --item "$pets"
你得到的錯誤是來自 shell 分裂你的變量,你可以用雙引號將它括起來以防止這種情況發生。
user='{"Username": {"S":"alexdebrie"}}'
formattedUser=$(printf "$user" "$Username")
aws dynamodb put-item --table-name UsersTable --item "$formattedUser" --endpoint-url http://localhost:8000
可能對 Mac 和 Linux 用戶有幫助的一件事,請嘗試使用heredoc 。
考慮以下示例表:
$ aws dynamodb create-table \
--table-name MNLakes \
--key-schema AttributeName=LakeID,KeyType=HASH \
--attribute-definitions AttributeName=LakeID,AttributeType=S \
--provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1
現在我們將為湖 Nokomis添加一些數據。
$ aws dynamodb put-item --table-name MNLakes --item "{\"LakeID\": {\"S\": \"27001900\"}}"
對於簡單的項目,轉義 JSON 中的雙引號是可以的。 然而,對於任何更復雜的事情,它變得相當不愉快。 一個好的解決方案可能是嘗試heredoc :
$ aws dynamodb put-item --table-name MNLakes --item "$(cat << EOF
{
"LakeID":
{
"S": "36000800"
},
"Sasquatch":
{
"S": "YES"
},
"LastLakeSurvey":
{
"S": "2016"
}
}
EOF
)"
結果在這里:
$ alex@DESKTOP-VG47CLN:~$ aws dynamodb scan --table-name MNLakes
{
"Items": [
{
"Sasquatch": {
"S": "YES"
},
"LakeID": {
"S": "36000800"
},
"LastLakeSurvey": {
"S": "2016"
}
},
{
"LakeID": {
"S": "27001900"
}
}
],
"Count": 2,
"ScannedCount": 2,
"ConsumedCapacity": null
}
雖然舊的cmd.exe
/Batch 語法不支持任何優雅的東西,但PowerShell支持
您還可以使用 json 文件:
awslocal dynamodb put-item --table-name your-table-name --item "$(cat dynamo-data/my-mock-data.json)"
我希望這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.