開発部の「エイジ」です。
今回はterraformを使ってDynamoDBを構築する手順を書きたいと思います。
関連記事
terraformとは
HashiCorpが手がける、インフラ構築や設定をコード(テンプレートファイル)を使って自動化するためのツールであり、 Infrastructure as Code を実現するOSSです。
DynamoDBとは
AWSが提供するキーバリュー型のマネージドデータストアサービスです。
terraformを使用することのメリット
Terraformインストール
1 2 3 |
# brew install terraform |
Terraformのバージョン確認
1 2 3 |
# terraform version |
AWSの環境構築
今回はAWS CLIを利用するにあたりiamユーザーを作ります。
IAM ユーザーを作る
AWS CLIを使うのでプログラムによるアクセスにも☑️してください。
管理権限をAdministratorAccessにしてください。
無事作成できたら次にAWS CLIをインストールします。
AWS CLI
1 2 3 |
# sudo pip install awscli |
AWS CLIの設定
先ほど制作したiamユーザーの情報を登録します。
1 2 3 |
# aws configure --profile ユーザー名 |
一つづづ先ほど作成したiamユーザーから設定していきます。
1 2 3 4 5 6 7 |
AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]: json # Asia Pacific (Tokyo) ap-northeast-1 |
Terraformを作成する。
これからDynamoDB作成までを書いていきます。
まずはTerraformのコマンドを記します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
初期化 Terraformで新しく設定を記述した場合、初期化を行う必要があります。 # terraform init 確認(所謂dry-run) # terraform plan 適用 コードの状態をAWS上へ適用 # terraform apply すべて消去するコマンド # terraform destroy リソースの閲覧 # terraform show |
まずはTerraformを書き込むファイルを作成します。
1 2 3 |
touch main.tf |
※Terraformは拡張子が.tfのファイルを自動的にテンプレートとして認識してくれます。
DynamoDBの宣言
aws_dynamodb_tableを宣言します。
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 |
provider "aws" { profile = "プロフィール名" region = "ap-northeast-1" } resource "aws_dynamodb_table" "basic-dynamodb-table" { name = "basic-dynamodb-table" billing_mode = "PROVISIONED" read_capacity = 1 write_capacity = 1 hash_key = "UserId" range_key = "GameTitle" attribute { name = "UserId" type = "S" } attribute { name = "GameTitle" type = "S" } } |
name | テーブル名 |
billing_mode | Dynamoの支払い選択
PROVISIONED:プロビジョニングされたキャパシティーの料金 PAY_PER_REQUEST:オンデマンドキャパシティーモードの料金 デフォルトでPROVISIONED。選択はPROVISIONEDかPAY_PER_REQUEST |
read_capacity | テーブルの読み取りユニットの数
PROVISIONEDを選んだ場合、必須。 |
write_capacity | テーブルの書き取りユニットの数
PROVISIONEDを選んだ場合、必須。 |
hash_key |
パーテーションキー
|
range_key |
ソートキー
|
attribute
|
hash_keyとrange_keyのtypeの指定
type:S, N, or B は 文字, 数値 or バイナリデータ
|
コマンドを実行します。
1 2 3 4 5 |
# terraform init # terraform plan # terraform apply |
実際にAWS上で確かめると作成されています。
以上になります。お読みいただきありがとうございました。
このブログは株式会社CoLabMixによる技術ブログです。
GCP、AWSなどでのインフラ構築・運用や、クローリング・分析・検索などを主体とした開発を行なっています。
Ruby on RailsやDjango、Pythonなどの開発依頼などお気軽にお声がけください。
開発パートナーを増やしたいという企業と積極的に繋がっていきたいです。