背景
業務の中でDynamoDbの構築を依頼された。最終的なアウトプットとしてCloud Formationとしてほしいと要望があったため、
今回構築ついでに作成手順についてまとめる。
Cloud Formationとは
ソース/テキストを元にAWSリソースを構築するサービス。
テキスト化しておくことで同じ環境の構築を簡易的に行うことができる。
テンプレートファイルの作成
Cloud Formationを使用して環境の構築を実行するには、AWSサービスの構成を記述したテンプレートファイルを用意する必要がある。
今回は依頼されたDynamoDbの構築をサンプルとして作成してみる。
構築するDynamoDbの構成
例として生徒の名簿を管理するテーブルを作成する。
- テーブル名:school_member
- primary_key :
- パーテションキー : クラス
- ソートキー : 番号
 
- LSI : 性別
- GSI : 名前
テンプレートファイル
sample.yml
# 今回設定が不要のものはコメントアウトしている
Resources:
  DynamoResource : # リソース名
    Type: AWS::DynamoDB::Table
    Properties: 
      TableName: "school_member"  # テーブル名
      TableClass: "STANDARD"      # テーブルクラス(STANDARD/STANDARD_INFREQUENT_ACCESS)
      BillingMode : "PAY_PER_REQUEST" # 課金モード
      AttributeDefinitions:       # 属性値リスト
        - AttributeName : 'class'
          AttributeType : 'S'
        - AttributeName : 'no'
          AttributeType : 'N'
        - AttributeName : 'name'
          AttributeType : 'S'
        - AttributeName : 'sex'
          AttributeType : 'N'
      GlobalSecondaryIndexes: # GSIの定義
        - IndexName : "IDX_name"
          KeySchema : 
          - AttributeName : 'name'
            KeyType : 'HASH'
          Projection : # 射影するプロパティ
            ProjectionType : 'ALL'
      LocalSecondaryIndexes: # LSIの定義
        - IndexName : "IDX_sex"
          KeySchema : 
          - AttributeName : 'class'
            KeyType : 'HASH'
          - AttributeName : 'sex'
            KeyType : 'RANGE'
          Projection : # 射影するプロパティ
            ProjectionType : 'ALL'
      KeySchema: # テーブルのプライマリキーを構成する属性を指定
        - AttributeName : 'class'
          KeyType : 'HASH'
        - AttributeName : 'no'
          KeyType : 'RANGE'
構築手順
AWSコンソールの操作手順を記載する。
- AWSコンソールのCloud Formationから「スタックの作成」を実施する。
- 上記から取得したテンプレートファイルをアップロードする。
- スタックの名前を入力し、「次へ」ボタンを押下する。
- その他オプションなどはいったんデフォルトのままで「送信」を押下。
- 「CloudFormation > スタック > DynamoDbStack] が実行中であることを確認。
- 「DynamoDB」の欄に「school_member」テーブルが追加されていることが確認できた。
実施してみての感想
Cloud Formationの操作はそこまで難しくない。どちらかというとINPUTファイルそれぞれのパラメータを各型式に合わせて設定するほうに時間がかかった。
今後
- 手順3,4にてオプション設定はすべてスキップして今回は記載した。スタック実行時にカスタムの値を設定などは今後インプットファイルを作成するうえで大事な部分になりそうなので、もう少し深堀してみたい。
- AWSのスクショは使用してよいかわからなかったため、今回未使用。調べたうえで問題なければ画像も添付してわかりやすくしたいと思う。
引用