AWS CloudFormationでAmazon DynamoDBテーブルを作ってアイテムを追加する
デモ用にDynamoDBテーブルを作って消して、ということをたまにするので、CloudFormationのテンプレートにして、その後のデモ用アイテムの追加もCLIのメモとして置いておきます。
ローカルセカンダリインデックスで少しはまりました。
目次
CloudFormationのテンプレート
Musicというテーブルを作って、ArtistとSongTitleをキーにしています。
AlbumTitleを事前に定義してローカルセカンダリインデックスにしました。
Resourcesの部分です。
YAMLです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Resources: DDBT10HT3: Type: 'AWS::DynamoDB::Table' Properties: TableName: Music AttributeDefinitions: - AttributeName: Artist AttributeType: S - AttributeName: SongTitle AttributeType: S - AttributeName: AlbumTitle AttributeType: S KeySchema: - AttributeName: Artist KeyType: HASH - AttributeName: SongTitle KeyType: RANGE ProvisionedThroughput: ReadCapacityUnits: 1 WriteCapacityUnits: 1 LocalSecondaryIndexes: - IndexName: AlbumTitleIndex KeySchema: - AttributeName: Artist KeyType: HASH - AttributeName: AlbumTitle KeyType: RANGE Projection: ProjectionType: KEYS_ONLY |
JSONだとこうなりました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
{ "Resources": { "DDBT10HT3": { "Type": "AWS::DynamoDB::Table", "Properties": { "TableName": "Music", "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" }, { "AttributeName": "SongTitle", "AttributeType": "S" }, { "AttributeName": "AlbumTitle", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "Artist", "KeyType": "HASH" }, { "AttributeName": "SongTitle", "KeyType": "RANGE" } ], "ProvisionedThroughput": { "ReadCapacityUnits": 1, "WriteCapacityUnits": 1 }, "LocalSecondaryIndexes": [ { "IndexName": "AlbumTitleIndex", "KeySchema": [ { "AttributeName": "Artist", "KeyType": "HASH" }, { "AttributeName": "AlbumTitle", "KeyType": "RANGE" } ], "Projection": { "ProjectionType": "KEYS_ONLY" } } ] } } } } |
このテンプレートでスタックを作って、
無事出来ました。
初期アイテムの追加
4アイテムを登録します。
CLIコマンド
「file://」をつけないと
Error parsing parameter ‘–request-items’: Expected: ‘=’, received: ‘EOF’ for input:
music_initial.json
というエラーになります。
1 2 |
$ aws dynamodb batch-write-item --request-items file://music_initial.json |
music_initial.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
{ "Music": [ { "PutRequest": { "Item": { "Artist": {"S":"Aerosmith"}, "SongTitle": {"S":"Young Lust"}, "AlbumTitle": {"S":"Pump"}, "Year": {"N":"1989"} } } }, { "PutRequest": { "Item": { "Artist": {"S":"Bad Religion"}, "SongTitle": {"S":"Suffer"}, "AlbumTitle": {"S":"Suffer"} } } }, { "PutRequest": { "Item": { "Artist": {"S":"Damn Yankees"}, "SongTitle": {"S":"High Enough"}, "AlbumTitle": {"S":"The Essentials"}, "Genre": {"S":"Rock"} } } }, { "PutRequest": { "Item": { "Artist": {"S":"Guns N' Roses"}, "SongTitle": {"S":"Think About You"}, "AlbumTitle": {"S":"Appetite For Destruction"}, "Year": {"N":"1987"} } } } ] } |
アイテムが追加されました。
アイテムを追加
もう1アイテム追加します。
1 2 |
$ aws dynamodb put-item --table-name Music --item file://music.json |
mjusic.json
1 2 3 4 5 6 7 8 9 |
{ "Artist": {"S": "Heart"}, "SongTitle": {"S": "Alone"}, "AlbumTitle": {"S": "Bad Animals"}, "Year": {"N": "1987"}, "Genre": {"S": "Hard Rock"}, "Length": {"S": "3:39"} } |
アイテムが追加されました。
ここでデモしたいのは項目を定義しておかなくても、lengthという項目を追加出来ました、ということなのでこれでOKです。
あといくつかデモに利用して終わればスタックの削除で削除しておきます。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
IAMアクセス許可の境界でIAMロールの権限を制御する
IAMユーザー自身の権限はIAMポリシーで制御できますが、IAMユーザーにIAM …
-
API Gatewayから直接 DynamoDBに書き込む
やりたいこと WebページでOやXを押したときに、どっちを押したかをDynamo …
-
WordPress W3 Total Cache のDatabaseCacheをAmazon ElastiCacheのmemcachedに格納する
このブログのアーキテクチャは現在こちらです。 データベースは、Amazon Au …
-
AWS VPC ネットワークACLでHTTP(80)のみ許可する
ユーザーガイドのカスタムネットワーク ACLのうち、HTTP(80)を許可する設 …
-
Amazon Quantum Ledger Database(QLDB)でサンプル台帳の作成と検証
Quantum Ledger Database(QLDB)を触ったことなかったの …
-
DynamoDB IAMポリシーで特定属性だけを許可する
検証記録です。 対象テーブル 書籍のサンプルで作ったこちらです。 所属バンドの楽 …
-
AWS License ManagerでAMIからインスタンスの起動を制御
EC2 Image BuilderでRocket.ChatのAMIを作って起動テ …
-
AWS Transit Gatewayピアリング接続確認
AWS Transit Gatewayのピアリング接続を使用して、異なるリージョ …
-
AWS Transfer Family S3向けのSFTP対応サーバー
S3バケットは作成済です。 IAMロールの作成 [crayon-6622c661 …
-
AWS Toolkit for Eclipseをセットアップ(2021年版)
AWS Toolkit for Eclipseをセットアップするで6年前に書いて …