知識のリンク集

技術系アウトプット

AWS Cloud FormationでDaynemoDBのテーブル作った備忘録

AWS CloudFormationでテーブルを作ってみた。

CloudFormationはコードでインフラ環境構築できちゃうその手軽さからインフラ畑の人たちからこよなく愛されている。

AWSCloudFormation

今回はDynamoDBのテーブルを1つ新規追加した。
ymlファイルに30行ほど追加するだけで作業は完了した。


テンプレートの基礎をおさえればあとはリソースごとのサンプルがあるのでテンプレートをベースに微調整していく。

テンプレートの基礎
DynamoDBのテンプレートサンプル

  [リソースオブジェクト名]:
    Type: AWS::DynamoDB::Table // リソース
    Properties:
      AttributeDefinitions: // キーで使用するアトリビュートの型定義
        - AttributeName: "UserID"
          AttributeType: "N"
        - AttributeName: "Timestamp"
          AttributeType: "N"
      KeySchema: // キーの指定
        - AttributeName: "UserID"
          KeyType: "HASH"
        - AttributeName: "Timestamp"
          KeyType: "RANGE"
      TableName: !FindInMap [TableMap, !Ref Env, UserActivities]

DynamoDBの設定項目はキーとするアトリビュート(ハッシュ&レンジ)とその型くらいなものでカラムを全部論う必要はない。

TableNameはFindInMap関数で開発環境(Env)に応じて参照先を変えるようにしている

TableMap:
    pro:
      UserActivities: [テーブル名]
    stg:
      UserActivities: STG[テーブル名]
    dev:
      UserActivities: Dev[テーブル名]

最後に開発環境に応じて定まるテーブルネームをLambdaのビルド環境変数としてセットする

Resources:
  VideoMutationEndpoint:
    Type: AWS::Serverless::Function
    Properties:
      // ・・・
      Environment:
        Variables:
          [Lambdaの環境変数名]: !Ref [リソースオブジェクト名]
||>