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
関連記事
-
AWS Cost Explorerの履歴を38ヶ月とリソース別コストを見られるように設定しました
AWS Cost Explorer がより詳細な履歴データの提供を開始 知らなか …
-
AtomエディタでEC2のファイルを直接編集する
Webページを編集していてEC2のファイルをvimエディタでさわったりしています …
-
AWS Summit 2017 Tokyo Day2 開場~基調講演
昨年に引き続き今年もAWS Summit Tokyoへ行ってきました。 朝一の新 …
-
S3 VPCエンドポイント設定前と設定後を確認
S3のVPCエンドポイントを設定した際に、S3バケットのAPIエンドポイントへの …
-
AWS LambdaでChrome HeadlessドライバをAWS Lambda Layersから使う
この記事はSelenium/Appium Advent Calendar 201 …
-
JAWS-UG関西「AI で人を笑わせてみよう!ハンズオン」に参加しました
AI で人を笑わせてみよう!ハンズオン 灼熱の7月最終日にJAWS-UG関西のオ …
-
AWS EC2 でインスタンスにIPアドレスを紐付ける
AWS EC2で作ったサーバは何もしなければ起動するたびにIPアドレスが変わって …
-
YouTubeチャンネル「ヤマムギ」をはじめました
YouTubeチャンネル「ヤマムギ」をはじめました。 2021年GWチャレンジと …
-
Organizations組織でAWS SSOを有効にする
先日AWS Control Towerで環境を作ったら、自動でAWS SSOがで …
-
AWS Backupで取得したAMIとスナップショットの削除
個人で使っているAWSリソースの断捨離をしてました。 Cloud9も複数アカウン …