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です。
あといくつかデモに利用して終わればスタックの削除で削除しておきます。
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
【PR】 「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第2版」という本を書きました。
【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。
【PR】 「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
再会の日 ~re:Union 2018 Osaka by JAWS-UG~
8/5は大阪でre:Unionでした。 「再会」と名うったこのイベントは、6月に …
-
-
Route 53 の加重ラウンドロビンルーティングでロードバランサー
Route 53の加重ラウンドロビンで両方1に設定してみました。 上図はイメージ …
-
-
S3オブジェクトロックを試しました
S3オブジェクトロックが必要になる要件に今のところ、出会ってないのでまだ設定した …
-
-
slackのbotに天気を教えてもらう(Python on AWS Lambda + API Gateway)
slackのbotにAPIの定番ともいえる天気情報を教えてもらいました。 環境は …
-
-
Amazon CloudWatch Anomaly Detectionをダッシュボードに設定
Amazon CloudWatch クロスリージョンクロスアカウントダッシュボー …
-
-
Amazon Glacierでボールトロックポリシーの作成開始をしてみました
Glacierを単体で使用することもそうそうないので、確認しました。 まずボール …
-
-
「JAWS-UG Osaka 第22回勉強会 東西の中の人が語る!!! Microservices × Serverless On AWS」で運営と懇親会LTをしてきました
「JAWS-UG Osaka 第22回勉強会 東西の中の人が語る!!! Micr …
-
-
このブログをAWS大阪リージョンへ移行しました
大阪リージョン爆誕!! 朝起きて寝ぼけながらリージョンを見てると。 「大阪リージ …
-
-
AWS Toolkit for EclipseからLambda関数を直接作成できずにMavenでパッケージ化して作成
AWS Toolkit for EclipseからLambda関数を直接作成 チ …
-
-
RDSスナップショットのS3エクスポート結果確認
RDSのスナップショットをS3へエクスポートが日本語マネジメントコンソールでもで …