1. 概要
前回はAmazon DynamoDBを「DynamoDB API」で操作する内容でした。今回は「PartiQL for DynamoDB」で操作する内容となります。
前回の「DynamoDB API」で操作する内容と比較しながら見てみると尚良いと思います。
2. AWSアカウントにサインアップ
2-1. 前提条件
3. AWSアクセスキーの取得
3-1. AWSアクセスキーの取得
4. AWS CLI のインストール
4-1. インストール
5. テーブルを作成
5-1. テーブルを作成
【公式】Amazon DynamoDBとは(マネージド NoSQL データベース)| AWS
6. データの書き込み
6-1. データの書き込み
- データを4つ(4レコード)作成
①
aws dynamodb execute-statement --statement "INSERT INTO Music VALUE {'Artist':'No One You Know','SongTitle':'Call Me Today', 'AlbumTitle':'Somewhat Famous', 'Awards':'1'}"
②
aws dynamodb execute-statement --statement "INSERT INTO Music VALUE {'Artist':'No One You Know','SongTitle':'Howdy', 'AlbumTitle':'Somewhat Famous', 'Awards':'2'}"
③
aws dynamodb execute-statement --statement "INSERT INTO Music VALUE {'Artist':'Acme Band','SongTitle':'Happy Day', 'AlbumTitle':'Songs About Life', 'Awards':'10'}"
④
aws dynamodb execute-statement --statement "INSERT INTO Music VALUE {'Artist':'Acme Band','SongTitle':'PartiQL Rocks', 'AlbumTitle':'Another Album Title', 'Awards':'8'}"
7. データを読み込み
7-1. データの読み込み
aws dynamodb execute-statement --statement "SELECT * FROM Music WHERE Artist='Acme Band' AND SongTitle='Happy Day'"
{
"Items": [
{
"AlbumTitle": {
"S": "Songs About Life"
},
"Awards": {
"S": "10"
},
"Artist": {
"S": "Acme Band"
},
"SongTitle": {
"S": "Happy Day"
}
}
]
}
8. データを更新
8-1. データの更新
aws dynamodb execute-statement --statement "UPDATE Music SET AlbumTitle='Updated Album Title' WHERE Artist='Acme Band' AND SongTitle='Happy Day' RETURNING ALL NEW *"
{
"Items": [
{
"AlbumTitle": {
"S": "Updated Album Title"
},
"Awards": {
"S": "10"
},
"Artist": {
"S": "Acme Band"
},
"SongTitle": {
"S": "Happy Day"
}
}
]
}
9. データをクエリ
9-1. データをクエリ
aws dynamodb execute-statement --statement "SELECT * FROM Music WHERE Artist='Acme Band'"
{
"Items": [
{
"AlbumTitle": {
"S": "Updated Album Title"
},
"Awards": {
"S": "10"
},
"Artist": {
"S": "Acme Band"
},
"SongTitle": {
"S": "Happy Day"
}
},
{
"AlbumTitle": {
"S": "Another Album Title"
},
"Awards": {
"S": "8"
},
"Artist": {
"S": "Acme Band"
},
"SongTitle": {
"S": "PartiQL Rocks"
}
}
]
}
10. グローバルセカンダリインデックスを作成
10-1. グローバルセカンダリインデックスを作成
- AlbumTitle
aws dynamodb update-table \
--table-name Music \
--attribute-definitions AttributeName=AlbumTitle,AttributeType=S \
--global-secondary-index-updates \
"[{\"Create\":{\"IndexName\": \"AlbumTitle-index\",\"KeySchema\":[{\"AttributeName\":\"AlbumTitle\",\"KeyType\":\"HASH\"}], \
\"ProvisionedThroughput\": {\"ReadCapacityUnits\": 10, \"WriteCapacityUnits\": 5 },\"Projection\":{\"ProjectionType\":\"ALL\"}}}]"
{
"TableDescription": {
"AttributeDefinitions": [
{
"AttributeName": "AlbumTitle",
"AttributeType": "S"
},
{
"AttributeName": "Artist",
"AttributeType": "S"
},
{
"AttributeName": "SongTitle",
"AttributeType": "S"
}
],
"TableName": "Music",
"KeySchema": [
{
"AttributeName": "Artist",
"KeyType": "HASH"
},
{
"AttributeName": "SongTitle",
"KeyType": "RANGE"
}
],
"TableStatus": "UPDATING",
"CreationDateTime": "2024-04-27T15:12:21.096000+09:00",
"ProvisionedThroughput": {
"NumberOfDecreasesToday": 0,
"ReadCapacityUnits": 5,
"WriteCapacityUnits": 5
},
"TableSizeBytes": 0,
"ItemCount": 0,
"TableArn": "arn:aws:dynamodb:ap-northeast-1:123456789012:table/Music",
"TableId": "be3ff07c-19d3-4375-8e00-3473aed42629",
"GlobalSecondaryIndexes": [
{
"IndexName": "AlbumTitle-index",
"KeySchema": [
{
"AttributeName": "AlbumTitle",
"KeyType": "HASH"
}
],
"Projection": {
"ProjectionType": "ALL"
},
"IndexStatus": "CREATING",
"Backfilling": false,
"ProvisionedThroughput": {
"NumberOfDecreasesToday": 0,
"ReadCapacityUnits": 10,
"WriteCapacityUnits": 5
},
"IndexSizeBytes": 0,
"ItemCount": 0,
"IndexArn": "arn:aws:dynamodb:ap-northeast-1:123456789012:table/Music/index/AlbumTitle-index"
}
],
"TableClassSummary": {
"TableClass": "STANDARD"
},
"DeletionProtectionEnabled": false
}
}
※IndexStatusが「CREATING」⇒「ACTIVE」となる事を確認
aws dynamodb describe-table --table-name Music | grep IndexStatus
11. グローバルセカンダリインデックスをクエリ
11-1. グローバルセカンダリインデックスをクエリ
aws dynamodb execute-statement --statement "SELECT * FROM \"Music\".\"AlbumTitle-index\" WHERE AlbumTitle='Somewhat Famous'"
{
"Items": [
{
"AlbumTitle": {
"S": "Somewhat Famous"
},
"Awards": {
"S": "1"
},
"Artist": {
"S": "No One You Know"
},
"SongTitle": {
"S": "Call Me Today"
}
},
{
"AlbumTitle": {
"S": "Somewhat Famous"
},
"Awards": {
"S": "2"
},
"Artist": {
"S": "No One You Know"
},
"SongTitle": {
"S": "Howdy"
}
}
]
}
12. リソースをクリーンアップ
※必要に応じ削除
aws dynamodb delete-table --table-name Music
13. 備考
Amazon DynamoDBをPartiQLで操作する内容でした。
14. 参考
- Amazon DynamoDB とは – Amazon DynamoDB
- IAM ユーザーグループ – AWS Identity and Access Management (amazon.com)
- AWS アカウント での IAM ユーザーの作成 – AWS Identity and Access Management (amazon.com)
- AWS Command Line Interface とはどのようなものですか。 – AWS Command Line Interface (amazon.com)
投稿者プロフィール
-
開発好きなシステムエンジニアです。
卓球にハマってます。