[アップデート] Aurora PostgreSQL のエクスプレス構成を CloudFormation で作成できるようになりました
いわさです。
Amazon Aurora PostgreSQL には、クラスターと書き込みインスタンスを数秒で作れる「エクスプレス構成」というものがあります。
作成時にひとつ指定するだけで、インスタンスの設定を個別に決めなくてよくなりますし、数秒で接続できるインスタンスが用意できます。検証用とかにとても良いですよね。
先日のアップデートで、これを AWS CloudFormation のテンプレートからも作れるようになったみたいです。
実際に使ってみたので紹介します。
使ってみた
今回のアップデートで追加されたのは、AWS::RDS::DBCluster の WithExpressConfiguration プロパティです。
これをtrueにするとエクスプレスモードで作成されるみたいです。
東京リージョンで試しました。テンプレートは公式リファレンスの例を使い、クラスター名だけ変えることに。
AWSTemplateFormatVersion: '2010-09-09'
Resources:
ExpressCluster:
Type: 'AWS::RDS::DBCluster'
Properties:
Engine: aurora-postgresql
DBClusterIdentifier: hoge-expr-cfn-0115
WithExpressConfiguration: true
Tags:
- Key: CreatedWith
Value: ExpressConfiguration
なお、このマネジメントコンソールのエクスプレス構成と同様に対象は Aurora PostgreSQL だけです。
その他 VPC 関係などいくつか前提条件が必要で、そのあたりはマネジメントコンソールから作成した場合と同様です。ご注意ください。
スタック(CloudFormation が作成と削除をまとめて扱うリソースの単位)を作成すると、約 20-30 秒でスタックが CREATE_COMPLETE になりました。
スタックのリソースを見ると、作成されたリソースは次の 1 つだけ。
ExpressCluster AWS::RDS::DBCluster CREATE_COMPLETE
上記のCREATE_COMPLETE時点で、クラスターの状態は available になってました。速すぎる!
RDS コンソールを見てみると書き込みインスタンスも作られていて、クラスターのメンバーとして表示されました。なお、特に CloudFormation 側で指定してませんがインスタンスは db.serverless です。まぁマネコンと同じですね。
クラスターのみでインスタンスがスタックに含まれていないのがきになりますが、公式ドキュメントに次のとおり記載されていまして、CloudFroamtion は書き込みインスタンスを管理しないとのこと。
CloudFormation doesn't manage the writer DB instance. To manage it, import it into your stack as an
AWS::RDS::DBInstanceresource.
ただ、このままでもスタックを削除すると、クラスターと書き込みインスタンスは両方とも削除されました。こちらの挙動も公式ドキュメントに記載されてます。
When CloudFormation deletes the DB cluster, it also deletes the writer DB instance.
なおWithExpressConfiguration は更新すると置き換えになると公式ドキュメントにも書かれていますので注意しましょう。
ちなみに、Aurora MySQL でも、同じ WithExpressConfiguration を指定して試しましたが、どちらもエラーになりました。
$ aws cloudformation create-stack --stack-name hoge-expr-amy-0115 --region ap-northeast-1 --template-body file://aurora-mysql-test.yaml
09:37:30 CREATE_IN_PROGRESS hoge-expr-amy-0115 User Initiated
09:37:33 CREATE_IN_PROGRESS MysqlExpressCluster None
09:37:35 CREATE_IN_PROGRESS MysqlExpressCluster Resource creation Initiated
09:39:45 CREATE_FAILED MysqlExpressCluster (Service: Rds, Status Code: 500, Request ID: ...) (SDK Attempt Count: 3)
09:39:46 ROLLBACK_IN_PROGRESS hoge-expr-amy-0115 The following resource(s) failed to create: [MysqlExpressCluster]. Rollback requested by user.
09:39:47 DELETE_IN_PROGRESS MysqlExpressCluster None
09:39:48 DELETE_IN_PROGRESS MysqlExpressCluster DBCluster hoge-expr-amy-0115 not found. (Service: Rds, Status Code: 404, ...) (SDK Attempt Count: 1)
09:39:49 DELETE_COMPLETE MysqlExpressCluster None
09:39:49 ROLLBACK_COMPLETE hoge-expr-amy-0115 None
$ aws cloudformation delete-stack --stack-name hoge-expr-amy-0115
エラーになるのは当たり前だろうと思っていたのですが、普通にサポートされていない系のエラーではなくて内部エラーが出ていたのはちょっと気になります。
まぁコンソールと同様に作成できないってことで覚えておきましょう。
さいごに
本日は、Aurora PostgreSQL のエクスプレス構成を CloudFormation から作成できるようになったので確認してみました。
検証用にサッとリソースを作りたい時に CloudFormation を使う場合はこちらのオプションを使うと良いですね。











