第1步:创建一个表
在这一步,你在Amazon DynamoDB中创建一个音乐表。该表有以下细节。
分区键 - Artist
排序键 - SongTitle
使用AWS管理控制台
要使用DynamoDB控制台创建一个新的音乐表。
1.登录到AWS管理控制台,在https://console.aws.amazon.com/dynamodb/,打开DynamoDB控制台。
2.在控制台左侧的导航窗格中,选择 Dashboard。
3.在控制台的右侧,选择创建表。
4.输入表的详细信息如下。
A.对于表的名称,输入Music。
B.对于分区键,输入艺术家。
c.输入SongTitle作为排序键。
D.保持选择默认设置。
5.选择 "创建 “来创建表。
使用AWS CLI
下面的AWS CLI例子使用create-table创建了一个新的音乐表。
aws dynamodb create-table \
--table-name Music \
--attribute-definitions \
AttributeName=Artist,AttributeType=S \
AttributeName=SongTitle,AttributeType=S \
--key-schema \
AttributeName=Artist,KeyType=HASH \
AttributeName=SongTitle,KeyType=RANGE \
--provisioned-throughput \
ReadCapacityUnits=5,WriteCapacityUnits=5 \
--table-class STANDARD
使用create-table会返回以下样本结果。
{
"TableDescription": {
"TableArn": "arn:aws:dynamodb:us-west-2:522194210714:table/Music",
"AttributeDefinitions": [
{
"AttributeName": "Artist",
"AttributeType": "S"
},
{
"AttributeName": "SongTitle",
"AttributeType": "S"
}
],
"ProvisionedThroughput": {
"NumberOfDecreasesToday": 0,
"WriteCapacityUnits": 5,
"ReadCapacityUnits": 5
},
"TableClassSummary": {
"LastUpdateDateTime": 1558028402.69,
"TableClass": "STANDARD"
},
"TableSizeBytes": 0,
"TableName": "Music",
"TableStatus": "CREATING",
"TableId": "d04c7240-0e46-435d-b231-d54091fe1017",
"KeySchema": [
{
"KeyType": "HASH",
"AttributeName": "Artist"
},
{
"KeyType": "RANGE",
"AttributeName": "SongTitle"
}
],
"ItemCount": 0,
"CreationDateTime": 1558028402.69
}
}
注意,TableStatus字段的值被设置为CREATING。
为了验证DynamoDB已经完成了音乐表的创建,请使用describe-table命令。
aws dynamodb describe-table --table-name Music | grep TableStatus
该命令返回以下结果。当DynamoDB完成了表的创建,TableStatus字段的值被设置为ACTIVE。
"TableStatus": “ACTIVE",
第2步:使用控制台或AWS CLI将数据写入表中
AWS管理控制台
按照以下步骤,使用DynamoDB控制台向音乐表写入数据。
1.在https://console.aws.amazon.com/dynamodb/,打开DynamoDB控制台。
2.在控制台左侧的导航窗格中,选择表。
3.在表的列表中,选择音乐表。
4.选择查看项目。
5.在项目视图中,选择创建项目。
6.选择添加新属性,然后选择数字。命名该字段为Awards。
7.重复这个过程,创建一个类型为String的AlbumTitle。
8.为你的项目输入以下值。
a.对于艺术家,输入No One You Know作为值。
b.对于SongTitle,输入Call Me Today。
c.对于AlbumTitle,输入Somewhat Famous。
D.对于奖项,输入1。
9.选择创建项目。
10.重复这个过程,用以下数值创建另一个项目。
A.对于艺术家,输入Acme乐队。
b.在SongTitle中输入Happy Day。
C.对于专辑名称,输入 “关于生活的歌曲”。
D.对于奖项,输入10。
11.再做一次,创建另一个项目,其艺术家与上一步相同,但其他属性的数值不同。
A.对于艺术家,输入Acme乐队。
b.在SongTitle中输入PartiQL Rocks。
C.对于AlbumTitle,输入另一个专辑名称。
D.对于奖项,输入8。
使用AWS CLI
aws dynamodb put-item \
--table-name Music \
--item \
'{"Artist": {"S": "No One You Know"}, "SongTitle": {"S": "Call Me Today"}, "AlbumTitle": {"S": "Somewhat Famous"}, "Awards": {"N": "1"}}'
aws dynamodb put-item \
--table-name Music \
--item \
'{"Artist": {"S": "No One You Know"}, "SongTitle": {"S": "Howdy"}, "AlbumTitle": {"S": "Somewhat Famous"}, "Awards": {"N": "2"}}'
aws dynamodb put-item \
--table-name Music \
--item \
'{"Artist": {"S": "Acme Band"}, "SongTitle": {"S": "Happy Day"}, "AlbumTitle": {"S": "Songs About Life"}, "Awards": {"N": "10"} }'
aws dynamodb put-item \
--table-name Music \
--item \
'{"Artist": {"S": "Acme Band"}, "SongTitle": {"S": "PartiQL Rocks"}, "AlbumTitle": {"S": "Another Album Title"}, "Awards": {"N": "8"} }'
第3步:从表中读取数据
AWS管理控制台
按照这些步骤,使用DynamoDB控制台从音乐表中读取数据。
1.在https://console.aws.amazon.com/dynamodb/,打开DynamoDB控制台。
2.在控制台左侧的导航窗格中,选择表。
3.从表列表中选择音乐表。
4.选择 “查看项目”。
5.在项目选项卡上,查看存储在表中的项目列表,按艺术家和歌曲名称排序。列表中的第一个项目是艺术家Acme Band和歌名Happy Day的那个。
使用AWS CLI
aws dynamodb get-item --consistent-read \
--table-name Music \
--key '{ "Artist": {"S": "Acme Band"}, "SongTitle": {"S": "Happy Day"}}'
使用get-item会返回以下样本结果。
{
"Item": {
"AlbumTitle": {
"S": "Songs About Life"
},
"Awards": {
"N": "10"
},
"SongTitle": {
"S": "Happy Day"
},
"Artist": {
"S": "Acme Band"
}
}
}
第4步:更新表中的数据
AWS管理控制台
你可以使用DynamoDB控制台来更新音乐表中的数据。
1.在https://console.aws.amazon.com/dynamodb/,打开DynamoDB控制台。
2.在控制台左侧的导航窗格中,选择表。
3.从表列表中选择音乐表。
4.选择查看项目。
5.选择艺术家值为Acme Band,SongTitle值为Happy Day的项目。
6.将AlbumTitle值更新为Update Album Title,然后选择Save。
下面的图片显示了控制台中更新的项目。
使用AWS CLI
aws dynamodb update-item \
--table-name Music \
--key '{ "Artist": {"S": "Acme Band"}, "SongTitle": {"S": "Happy Day"}}' \
--update-expression "SET AlbumTitle = :newval" \
--expression-attribute-values '{":newval":{"S":"Updated Album Title"}}' \
--return-values ALL_NEW
因为指定了返回值ALL_NEW,所以使用update-item会返回以下样本结果。
{
"Attributes": {
"AlbumTitle": {
"S": "Updated Album Title"
},
"Awards": {
"N": "10"
},
"SongTitle": {
"S": "Happy Day"
},
"Artist": {
"S": "Acme Band"
}
}
}