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 クラウドプラクティショナー」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。
i【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター3年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
AWS Summit Tokyo 2017 Day3 開場~基調講演~Dev Day Night
AWS Summit Tokyo 2017 参加2日目のDay3です。 基調講演 …
-
-
Microsoft TeamsのOutgoing Webhooksを使ってAWS Lambda(Python), Amazon API Gatewayとbot
Microsoft Teamsの検証その2、Slackで実装しているbotも対応 …
-
-
JAWS-UG 大阪 関西女子合同 Amazon Personalizeハンズオンやってみました
久しぶりに大阪でJAWS-UGに参加です。 Amazon Personalize …
-
-
Redmineの添付ファイルをS3に同期する
RedmineをAWS上で構築するデザインを考えていて、せっかくなので冗長化しよ …
-
-
Pandocサーバーのコンテナイメージを作成する
マークダウンからEPUBへの変換をAWS Batchで行いたく、ECRにアップロ …
-
-
AWS Summit 2016 Tokyoに参加してきました (Day3)
飛天3日目です。 JAWS-UGブースのすぐ前にあったこのお水がめちゃめちゃおい …
-
-
AWS EC2 インスタンスステータスのチェックで失敗 原因はPHP-FPMのOOM-KILLER
先週に引き続きEC2のインスタンスステータスチェックで失敗 再起動するも失敗する …
-
-
webフォームからの問い合わせをRedmineに自動登録して対応状況を管理する(API Gateway + Lambda)
先日、検証目的で作成したRedmineの冗長化の一機能として、webフォームから …
-
-
ブログ画像のシンガポールリージョンへのレプリケーションはじめました
このブログの画像はS3バケットに保存して、CloudFront経由で配信していま …
-
-
Extend Switch Roles(Chromeのアドオン)で6つ以上のスイッチロール履歴
最近アカウントIDを忘れたりすることも多くなったので、切り替えに手間取ることがあ …