0
2

More than 1 year has passed since last update.

【CloudFormation】AuroraPostgreSQLの作成

Last updated at Posted at 2021-08-31

1. はじめに

 4月に入ってからAWS SAMとAWS CloudFormationを用いて自身が作成したリソースをテンプレートに書き起こす作業をしてきました。DB自体は作り直すことがほぼないため後回しにしてきましたが、必要と判断したため、DBを作成するCloudFormationのテンプレートの調査を行いました。
 CloudFormationって? SAMって? って人はこちらの記事をとりあえず参考にしてください。

2. DB設定

 以下のようなDBを作成したいと思います。

DBクラスターの設定

・使用DB:Aurora PostgreSQL ver 12.4
・サブネットグループを指定
・VPCセキュリティグループの指定

DBインスタンスの設定

・インスタンスのクラス:db.t3.medium
・アベイラビリティゾーン:ap-northeast-1a(サブネットグループの中から選んでください)
・パブリックアクセス:なし
・マルチAZ配置:なし
・Performance Insights:なし
・拡張モニタリング:なし

3. テンプレートファイル

 各種設定はMappingsに書きました。任意の設定に書き換えて使用してくださるとありがたいです。また、DBのパスワードはParametersで設定し、デプロイする時に入力するようにしました。NoEcho: trueを指定することで入力した値がみられる心配はありません。
 細かい設定の説明はテンプレートファイル内に記載しております。ご確認ください。

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
  AuroraPostgreSQL

Parameters:
  Password:
    Type: String
    NoEcho: true

#各種設定
Mappings:
  RDSMap:
    RDSCluster: 
      DBClusterIdentifier: xxxxxxxx
      DBName: xxxxxxxx
      MasterUsername: xxxxxxxx
      DBSubnetGroupName: xxxxxxx
      RdsSecurityGroup: sg-xxxxxxxx
    RDSInstance:
      DBInstanceIdentifier: xxxxxxxx
      DBInstanceClass: db.t3.medium
      AvailabilityZone: ap-northeast-1a

#resource
Resources:
  #DBクラスターの設定
  RDSCluster:
    Type: AWS::RDS::DBCluster
    Properties:
      Engine: aurora-postgresql #DBエンジンの設定
      EngineVersion: 12.4 #PostgreSQLのversion
      DBClusterIdentifier: !FindInMap [ RDSMap, RDSCluster, DBClusterIdentifier ] #DBクラスターの識別子
      DatabaseName: !FindInMap [ RDSMap, RDSCluster, DBName ] #データベースの名前
      MasterUsername: !FindInMap [ RDSMap, RDSCluster, MasterUsername ] #データベースのマスターユーザーネーム
      MasterUserPassword: !Ref Password #データベースのマスタ―パスワード
      Port: 5432 #ポート番号
      DBSubnetGroupName: !FindInMap [ RDSMap, RDSCluster, DBSubnetGroupName ] #サブネットの指定
      VpcSecurityGroupIds: #VPCセキュリティグループの指定
        - !FindInMap [ RDSMap, RDSCluster, RdsSecurityGroup ] 

  #DBクラスター内のインスタンスの設定
  RDSInstance1:
    Type: AWS::RDS::DBInstance 
    Properties:
      Engine: aurora-postgresql #DBエンジンの設定
      EngineVersion: 12.4 #PostgreSQLのversion
      DBClusterIdentifier: !Ref RDSCluster #DBクラスターの識別子 RDSClusterとの紐づけ
      DBInstanceIdentifier: !FindInMap [ RDSMap, RDSInstance, DBInstanceIdentifier ] #DBインスタンスの識別子
      DBInstanceClass: !FindInMap [ RDSMap, RDSInstance, DBInstanceClass ] #インスタンスのクラス 
      DBSubnetGroupName: !FindInMap [ RDSMap, RDSCluster, DBSubnetGroupName ] #サブネットの指定
      PubliclyAccessible: false #パブリックアクセスの有無設定
      AvailabilityZone: !FindInMap [ RDSMap, RDSInstance, AvailabilityZone ] #アベイラビリティゾーンの設定
      MultiAZ: false #マルチAZ配置有無の設定
      EnablePerformanceInsights: false #Performance Insights有無の設定
      MonitoringInterval: 0 #拡張モニタリングの詳細度の設定(0で拡張モニタリング無効)

4. 終わりに

 いかがだったでしょうか。いかがも何もテンプレートファイル張ってあるだけなので感想の何もないと思いますが。。。CloudFormationにはネストされたストックという機能があるので、今度はこれを試してみようかな。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2