[アップデート]CloudFormation が Aurora Global Database に対応しました

2020.11.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、崔です。

CloudFormation が Amazon Aurora Global Database に対応したので、やってみました。
Amazon Aurora Global Database Expands Manageability Capabilities

CloudFormation のドキュメントはこちら。GlobalClusterというリソースが追加されてます。
AWS::RDS::GlobalCluster - AWS CloudFormation

やってみた

東京リージョンにあるクラスターをグローバルデータベース化していきます。
まず、最初の状態はこちらです。

CloudFormation でグローバルデータベース化します。

AWSTemplateFormatVersion: 2010-09-09

Parameters:
  GlobalClusterIdentifier:
    Type: String
    Description: Identifier used for global database cluster
    AllowedPattern: '^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$'
  RDSCluster:
    Type: String
    Description: Identifier used for DB cluster
    AllowedPattern: '^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$'
Resources:
  GlobalCluster:
    Type: 'AWS::RDS::GlobalCluster'
    Properties:
      GlobalClusterIdentifier: !Ref GlobalClusterIdentifier
      SourceDBClusterIdentifier: !Ref RDSCluster

新規作成する Global Database 名と、既存のクラスター名をパラメータに入力します。

これで、既存クラスターが、 Global Database に取り込まれました。

次に、ソウルリージョンで CloudFormation を実行して、セカンダリークラスターを追加します。

AWSTemplateFormatVersion: 2010-09-09

Parameters:
  GlobalClusterIdentifier:
    Type: String
    Description: Identifier used for global database cluster
    AllowedPattern: '^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$'
  RDSClusterIdentifier:
    Type: String
    Description: Identifier used for DB cluster
    AllowedPattern: '^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$'
Resources:
  RDSCluster:
    Type: 'AWS::RDS::DBCluster'
    Properties:
      GlobalClusterIdentifier: !Ref GlobalClusterIdentifier
      DBClusterIdentifier: !Ref RDSClusterIdentifier
      Engine: aurora-mysql
      EngineVersion: 5.7.mysql_aurora.2.07.2
      DBClusterParameterGroupName: test-cluster-parameter-group
      DBSubnetGroupName: db-test-subnet
      VpcSecurityGroupIds: 
        - 'sg-xxxxxxxxxxxxxxxxx'

先程、作成した Global Database 名と追加するセカンダリークラスター名をパラメータに入力します。

無事に、セカンダリークラスターが追加されました。

もちろん、CloudFormation のテンプレートに、AWS::RDS::DBInstance リソースを記載していれば、セカンダリークラスター下にインスタンスも同時に作成されます。
今までは、マネコンや CLI でしか作成できなかったので、CloudFormation で作成できるようになったのは、地味に嬉しいです!

参考

Aurora Global Databaseをセカンダリークラスターにインスタンスを立てずに作成してみた | Developers.IO