AWS CLI DynamoDB将非键属性添加到现有表中



我正在进行一个云计算类项目,使用AWS命令行接口在DynamoDB中插入一个表。我一直坚持的步骤是将其他非键属性添加到表中。我阅读了关于添加属性的帮助部分,并提出了以下内容:

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帮助找到的批量写入项目和重新格式化示例,但我仍然有问题。我使用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"
}
}

请注意,在put项操作中始终需要包含主键属性。

另一方面,列表Locations没有被正确地定义。

另外,请注意,您在项目值末尾遗漏了}'

请尝试以下方法:

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

最新更新