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
関連記事
-
-
名前解決してセッションマネージャが使えるようにVyOSのhost_name.pyを編集しました
発生したエラー セッションマネージャからこんなエラーが出力されました。 [cra …
-
-
S3インベントリ設定でインベントリファイルの作成を設定
インベントリレポートファイルはオブジェクトの一覧情報です。 日次、週次で定期作成 …
-
-
Rocket.ChatをAmazon EC2 Ubuntuサーバーで起動
こちらRocket.Chatを1行でAWS上に導入を参照させていただきました。 …
-
-
S3署名付きURL(GetObject)生成後にオブジェクトを上書きアップロードしたら
ダウンロードリクエストを実行したタイミングのオブジェクトがダウンロードされるので …
-
-
百聞は一見にしかず!AWSセルフペースラボの無料ラボ!
※2019年5月12日現在に試してみた記録です。 AWSセルフペースラボとは A …
-
-
AWS Organizations SCPがリソースベースのポリシーには影響しないことを確認
AWS Organizations SCPで許可ポリシーの設定をし継承の関係を確 …
-
-
AWS CodeStarのプロジェクトテンプレートLambda+Pythonによって生成されるもの
勉強会のデモで、AWS CodeStarのプロジェクトテンプレートLambda+ …
-
-
執筆環境(PyCharm, CodeCommit, CodePipeline, S3, Lambda, 署名付きURL)
2018年から、年に1回ぐらい商業本の執筆をさせていただいております。 2020 …
-
-
Amazon Augmented AI (Amazon A2I) のチュートリアル
Amazon Augmented AI (Amazon A2I)を使ったことがあ …
-
-
Rocket.ChatのOutGoingWebhookからのAPI GatewayからのDynamoDB
少し前に、Rocket.ChatからOut Going Webhookを設定して …



