Amazon web services AWS CLI DynamoDB向现有表添加非键属性
我正在从事一个云计算类项目,使用AWS命令行界面在DynamoDB中插入一个表。我一直坚持的步骤是将其他非关键属性添加到表中。我阅读了有关添加属性的帮助部分,并得出以下结论:Amazon web services AWS CLI DynamoDB向现有表添加非键属性,amazon-web-services,amazon-dynamodb,aws-cli,Amazon Web Services,Amazon Dynamodb,Aws Cli,我正在从事一个云计算类项目,使用AWS命令行界面在DynamoDB中插入一个表。我一直坚持的步骤是将其他非关键属性添加到表中。我阅读了有关添加属性的帮助部分,并得出以下结论: aws dynamodb put-item \ --table-name Sensors \ --item '{"SensorDescription": {"S": "A"}, \ "ImageFile": {"S": &q
aws dynamodb put-item \
--table-name Sensors \
--item '{"SensorDescription": {"S": "A"}, \
"ImageFile": {"S": "file1"}, \
"SampleRate": {"N": "100"}, \
"Locations": {"L": "Aberdeen MD, Warren MI, Orlando FL"} \
--return-consumed-capacity TOTAL
aws dynamodb put-item \
--table-name Sensors \
--item '{"Sensor": {"S", "Sensor 1"},
"SensorDescription": {"S": "A"},
"ImageFile": {"S": "file1"},
"SampleRate": {"N": "100"},
"Locations": {"L": [{"S": "Aberdeen MD"}, {"S": "Warren MI"}, {"S": "Orlando FL"}]}}' \
--return-consumed-capacity TOTAL
我尝试了通过AWS帮助找到的批写项和重新格式化示例,但仍然存在问题。我已经使用Cloud9有一段时间了,但是DynamoDB对我来说是非常新的。非常感谢您的帮助。工作台传感器已创建,并具有以下信息:
vocstartsoft:~/environment $ aws dynamodb describe-table --table-name Sensors
{
"Table": {
"AttributeDefinitions": [
{
"AttributeName": "Sensor",
"AttributeType": "S"
}
],
"TableName": "Sensors",
"KeySchema": [
{
"AttributeName": "Sensor",
"KeyType": "HASH"
}
],
"TableStatus": "ACTIVE",
"CreationDateTime": 1607909069.531,
"ProvisionedThroughput": {
"NumberOfDecreasesToday": 0,
"ReadCapacityUnits": 5,
"WriteCapacityUnits": 5
},
"TableSizeBytes": 0,
"ItemCount": 0,
"TableArn": "arn:aws:dynamodb:us-east-1:466773264882:table/Sensors",
"TableId": "5ddc11bc-8167-4bfa-bbcc-96199954ba39"
}
}
首先,请注意,您始终需要在中包含主键属性 另一方面,列表
位置
的定义不正确
另外,请注意,您在项目值的末尾遗漏了“”
请尝试以下操作:
aws dynamodb put-item \
--table-name Sensors \
--item '{"SensorDescription": {"S": "A"}, \
"ImageFile": {"S": "file1"}, \
"SampleRate": {"N": "100"}, \
"Locations": {"L": "Aberdeen MD, Warren MI, Orlando FL"} \
--return-consumed-capacity TOTAL
aws dynamodb put-item \
--table-name Sensors \
--item '{"Sensor": {"S", "Sensor 1"},
"SensorDescription": {"S": "A"},
"ImageFile": {"S": "file1"},
"SampleRate": {"N": "100"},
"Locations": {"L": [{"S": "Aberdeen MD"}, {"S": "Warren MI"}, {"S": "Orlando FL"}]}}' \
--return-consumed-capacity TOTAL
为了简单起见,并且为了避免shell延续字符的问题,您可以在文件中包含项信息,我们将其命名为item.json
:
{
"Sensor": {"S", "Sensor 1"},
"SensorDescription": {"S": "A"},
"ImageFile": {"S": "file1"},
"SampleRate": {"N": "100"},
"Locations": {
"L": [
{"S": "Aberdeen MD"},
{"S": "Warren MI"},
{"S": "Orlando FL"}
]
}
}
并按如下方式应用命令:
aws dynamodb put-item \
--table-name Sensors \
--item file://item.json \
--return-consumed-capacity TOTAL
谢谢对于分配,我应该使用CLI来创建表。我遇到了另一个问题。我收到以下错误:分析参数“--item”时出错:JSON无效:应使用双引号括起属性名:第1行第31列(char 30)。我最初以为它是说每个属性都需要括号,但当我添加括号时,它就不起作用了。不客气!不,恐怕新问题与您的列表
位置的定义有关。请看我修改过的答案。我希望这会有帮助。嗯……我改变了我的位置定义,但我仍然得到相同的错误。分析参数“--item”时出错:无效JSON:应使用双引号括起属性名称:第1行第31列(字符30)收到JSON:{“传感器”:{“S”:“传感器1”},\“传感器描述”:{“S”:“A”},\“图像文件”:{“S”:“文件1”},\“采样器”:{“N”:“100”},\“位置”:{“L:{“S”:“Aberdeen MD”},{“S”:“Warren MI”},{“S”:“Orlando”}]}}您使用的是item.json
文件还是内联信息?请在命令shell中删除JSON中的\字符,请参阅我的答案。正如我告诉你的,至少对我来说,JSON中的shell延续字符是一场噩梦。。。另请参见:我使用的是内联b/c,分配需要它,但我正在切换到item.json。这似乎奏效了。谢谢如果您也要发布错误,这可能会有所帮助。然而,我认为您在--item
参数中缺少了一个结束括号和一个引号。我认为该错误可能是json的某种意外结尾。我修复了缺少的括号和单引号,但我得到了以下错误:错误解析参数'--item':无效json:需要包含在双引号中的属性名称:第1行第31列(char 30)。我最初以为它是说每个属性都需要更多的括号,但当我添加括号时,它并没有起作用。