CloudformationでAurora(MySQL5.7互換)を作ってみる

2019.01.28

こんばんわ、吉江です。

皆さんはCloudformationでAurora(5.7互換)を作成されたことがありますか? 私の場合、5.6互換はすんなり作成できたのですが5.7互換でいくつか躓いたところがあったのでご紹介させてもらいます。

そもそも何が行った?

事の発端はAuroraをCloudFormationで作成する際に5.6互換はエンジンバージョン等の具体的なバージョン変更のみで行けると対応出来ると考えてましたが、 改めてテンプレートを作成してみると失敗しまくりでした。

大まかな変更点

RDSインスタンスを作成する最低限のリソースで変更点を以下のようにまとめます。 具体的には以下のリソース作成で使うアクションです。

  • DBCluster関連リソース作成
  • ClusterParameterGroup
  • Cluster
  • DBInstance関連リソース作成
  • OptionGroup
  • InstanceParameterGroup
  • Instance
リソース名 エンティティ名 MySQL5.6互換 MySQL5.7互換
AWS::RDS::DBClusterParameterGroup Family aurora5.6 aurora-mysql5.7
AWS::RDS::DBCluster Engine aurora aurora-mysql
AWS::RDS::OptionGroup EngineName aurora aurora-mysql
AWS::RDS::OptionGroup MajorEngineVersion 5.6 5.7
AWS::RDS::DBParameterGroup Family aurora5.6 aurora-mysql5.7
AWS::RDS::DBInstance Engine aurora aurora-mysql

Aurora(5.7互換)を作成するテンプレです。

全テンプレートを貼り付けると長ったらしくなってしまうため、Resource部分だけ抜き出しました。 RefとなっているところはParamterを参照している部分となりますので、参考に留めていただければと思います。

Resources:
TestAurora57dbSubnetGroup:
Type: AWS::RDS::DBSubnetGroup
Properties:
DBSubnetGroupDescription: Subnets available for the RDS DB Instance
SubnetIds:
Ref: DBSubnetsInVPC
TestAurora57dbClusterParameterGroup:
Type: AWS::RDS::DBClusterParameterGroup
Properties:
Family: "aurora-mysql5.7"
Description: "Test-Aurora-57ClusterParameterGroup"
Parameters:
time_zone: "Asia/Tokyo"
TestAurora57dbOptionGroup:
Type: "AWS::RDS::OptionGroup"
Properties:
EngineName: "aurora-mysql"
MajorEngineVersion: "5.7"
OptionGroupDescription: "TestAurora57db_RDS_OptionGroup"
Tags:
- Key: Name
Value: Test-Aurora-57db-OptionGroup
TestAurora57dbInstanceParameterGroup:
Type: AWS::RDS::DBParameterGroup
Properties:
Family: "aurora-mysql5.7"
Description: "Test-Aurora-57InstanceParameterGroup"
TestAurora57dbCluster:
Type: AWS::RDS::DBCluster
Properties:
BackupRetentionPeriod:
Ref: DBBackupRetentionPeriod
DatabaseName: TestAurora57db
DBClusterIdentifier: Test-Aurora-57cluster
DBClusterParameterGroupName:
Ref: TestAurora57dbClusterParameterGroup
DBSubnetGroupName:
Ref: TestAurora57dbSubnetGroup
Engine: aurora-mysql
MasterUsername:
Ref: DBMasterUser
MasterUserPassword:
Ref: DBMasterPassword
Port: 3306
PreferredBackupWindow:
Ref: DBBackupWindow
PreferredMaintenanceWindow:
Ref: DBMaintenanceWindow
StorageEncrypted: True
VpcSecurityGroupIds:
- Ref: DBSecurityGroupId
Tags:
- Key: Name
Value: Test-Aurora-57db-Cluster
TestAurora57dbInstance:
Type: "AWS::RDS::DBInstance"
Properties:
AutoMinorVersionUpgrade: False
AvailabilityZone: ap-northeast-1a
DBInstanceClass:
Ref: DBInstanceClass
DBInstanceIdentifier: Test-Aurora-57db
DBClusterIdentifier:
Ref: TestAurora57dbCluster
DBSubnetGroupName:
Ref: TestAurora57dbSubnetGroup
Engine: aurora-mysql
OptionGroupName:
Ref: TestAurora57dbOptionGroup
DBParameterGroupName:
Ref: TestAurora57dbInstanceParameterGroup
PubliclyAccessible: False
Tags:
- Key: Name
Value: TestAurora57dbInstance

最後に

おそらくAurora5.6互換が発表されたタイミングではAurora(PostgreSQL)が発表されていなかったことでaurora5.6といった形だったのかと思いました。 aurora-mysql5.7aurora-mysqlの形で記載したほうが確かに区別が付きやすいのでアリだと思います。