はじめに
Amazon Auroraでは、既存のAuroraクラスターを素早く複製するクローン機能があります。
クローン機能を使い、CloudformationでAuroraを作成する方法についてまとめます。
事前準備
CloudFormationでスタックを作成
下記のymlファイルでスタックを作成します。
AWSTemplateFormatVersion: '2010-09-09'
Description: For each environment of project
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
- Label:
default: Clone source DB cluster information
Parameters:
- EngineType
- MySQLMajorVersion
- MySQLMinorVersion
- CloneSourceDBCluster
- Label:
default: RDS Configuration
Parameters:
- DBInstanceClass
- DBSubnetGroup
- DBParameterGroup
- DBClusterParameterGroup
- DBSecurityGroup
- DBInstanceIdentifierName
- DBClusterIdentifierName
Parameters:
EngineType:
Type: String
Description: Clone source DB cluster engine type.
Default: aurora-mysql
MySQLMajorVersion:
Type: String
Description: Clone source DB cluster mysql major version. For example 5.7
MySQLMinorVersion:
Type: String
Description: Clone source DB cluster mysql minor version. For example 2.10.2
CloneSourceDBCluster:
Type: String
Description: Clone source DB cluster name.
DBInstanceClass:
Type: String
Default: db.t3.small
DBSubnetGroup:
Type: String
Description: DB Subnet Group
DBClusterParameterGroup:
Type: String
Description: DB Cluster Parameter Group
DBParameterGroup:
Type: String
Description: DB instance Parameter Group
DBSecurityGroup:
Type: AWS::EC2::SecurityGroup::Id
Description: Security Group ID
DBInstanceIdentifierName:
Type: String
Description: DB instance identifier name
DBClusterIdentifierName:
Type: String
Description: DB cluster identifier name
Resources:
DBCluster:
Type: AWS::RDS::DBCluster
DeletionPolicy: Delete
Properties:
BackupRetentionPeriod: 7
DBClusterIdentifier: !Ref DBClusterIdentifierName
DBSubnetGroupName: !Ref DBSubnetGroup
DBClusterParameterGroupName: !Ref DBClusterParameterGroup
Engine: !Ref EngineType
EngineVersion: !Sub ${MySQLMajorVersion}.mysql_aurora.${MySQLMinorVersion}
EngineMode: provisioned
VpcSecurityGroupIds:
- !Ref DBSecurityGroup
PreferredBackupWindow: 16:00-17:00
DeletionProtection: false
PreferredMaintenanceWindow: tue:18:00-tue:19:00
SourceDBClusterIdentifier: !Ref CloneSourceDBCluster
RestoreType: copy-on-write
UseLatestRestorableTime: true
DBInstance:
Type: AWS::RDS::DBInstance
DeletionPolicy: Delete
Properties:
DBClusterIdentifier: !Ref DBCluster
DBInstanceIdentifier: !Ref DBInstanceIdentifierName
DBInstanceClass: !Ref DBInstanceClass
DBSubnetGroupName: !Ref DBSubnetGroup
DBParameterGroupName: !Ref DBParameterGroup
Engine: !Ref EngineType
EngineVersion: !Sub ${MySQLMajorVersion}.mysql_aurora.${MySQLMinorVersion}
PubliclyAccessible: false
AvailabilityZone: !Sub ${AWS::Region}a
AutoMinorVersionUpgrade: false
EnablePerformanceInsights: false
PreferredMaintenanceWindow: tue:18:00-tue:19:00
PromotionTier: 1
MonitoringInterval: 0
ymlファイルの解説
ymlファイルは、AWSの公式ドキュメントがわかりやすかったので、参考にしました。
必須プロパティ
クローンを作成する上で必須のプロパティは、3つです。
- SourceDBClusterIdentifier
- クローン元のクラスター識別子名
- RestoreType
-
copy-on-write
は、クローン元からクローンとして復元されます。
-
- UseLatestRestorableTime
- クラスターを最新の復元可能なバックアップ時刻に復元するかどうかを示す値。
true
にすることで、最新から復元する。
- クラスターを最新の復元可能なバックアップ時刻に復元するかどうかを示す値。
不要プロパティ
クローンを作成する上で、記載してはならないプロパティは、4つあります。
クローン元に依存するため、指定できないようです。
- MasterUsername
- MasterUserPassword
- SnapshotIdentifier
- スナップショットからAuroraを作成(復元)する
- StorageEncrypted
- DB クラスターを暗号化するかどうか
注意点
クローン元と作成するAuroraのエンジンバージョンは、同じにしてください。
今回の場合は、5.7.mysql_aurora.2.10.2
です。
- Engine
- EngineVersion
入力するパラメータ
入力するパラメータは、結論から言うと、以下のようになります。
下記画像の上部の赤枠は、クローン元の情報でありクローン元に依存するパラメータ
、
下部は、作成するAuroraに関するパラメータ
を記載します。
クローン元に依存するパラメータ
各パラメータで入力する値を説明していきます。
バージョンに関する3点は、クローン元と同じ値にします。
- EngineType
- MySQLMajorVersion
- MySQLMinorVersion
また、クローン元の識別子を以下のパラメータに記載します。
作成するAuroraに関するパラメータ
各パラメータは、自身の環境に合わせて記載しましょう。
- DBSubnetGroup
- DBParameterGroup
- DBClusterParameterGroup
- DBSecurityGroup
- Aurora用のセキュリティーグループのID
- DBInstanceIdentifierName
- インスタンスの識別子名
- DBClusterIdentifierName
- クラスターの識別子名
上記のパラメータからスタックを作成すると、test
というクラスターからクローンが作成されました!