aws-cdkでAurora Postgresqlを起動するために試行錯誤した結果
概要
諸事情あってAurora postgresqlを起動する必要があった。折角なのでCDKで試した結果。
エラー
Cluster requires at least 2 subnets, got 0
Subnetを2つ以上指定しないとダメ。vpcをIDから解決しているので vpc.privateSubnets
とかで取れる。
vpcSubnets: { subnets: vpc.privateSubnets },
MasterUsername admin cannot be used as it is a reserved word used by the engine
db-aurora (dbaurora55E909B7) MasterUsername admin cannot be used as it is a reserved word used by the engine (Service: AmazonRDS; Status Code: 400; Error Code: InvalidParameterValue; Request ID: f8ff0919-c8ae-4809-a354-837a77311ca3)
Aurora MySQLのサンプルだと admin
と書いてあったんだが? Postgresql だとどうもダメらしい。この辺はDatabase Engineの話なんだろうがよく分かっていない。 clusteradmin
に変えたら問題なく通った。
DBClusterParameterGroup not found: default.aurora5.6
db-aurora (dbaurora55E909B7) DBClusterParameterGroup not found: default.aurora5.6 (Service: AmazonRDS; Status Code: 404; Error Code: DBClusterParameterGroupNotFound; Request ID: a2dd5963-3371-4a89-874c-a8e3a797415b)
parameterGroup指定してるのになんでや!と思ったら instanceProps
の方に指定していた。Clusterの方の parameterGroup
を指定するのが正解。
const rdsClusterPrameterGroup = new ClusterParameterGroup(this, 'DBClusterPArameterGroup', { family: 'aurora-postgresql10', parameters: { application_name: 'db-gateway', } }); const cluster = new DatabaseCluster(this, "db-aurora", { engine: DatabaseClusterEngine.AURORA_POSTGRESQL, removalPolicy: RemovalPolicy.DESTROY, masterUser: { username: "clusteradmin" }, instanceProps: { // TODO: ここもパラメータ化した方が良い? instanceType: ec2.InstanceType.of(ec2.InstanceClass.BURSTABLE2, ec2.InstanceSize.SMALL), vpcSubnets: { subnets: vpc.privateSubnets }, vpc: vpc, securityGroup: props.dbSg, parameterGroup: rdsClusterPrameterGroup // ← ここじゃない } // ← ここが正しい });
RDS does not support creating a DB instance with the following combination:
db-aurora/Instance1 (dbauroraInstance11F6C709C) RDS does not support creating a DB instance with the following combination: DBInstanceClass=db.t2.small, Engine=aurora-postgresql, EngineVersion=10.7, LicenseModel=postgresql-license. For supported combinations of instance class and database engine version, see the documentation. (Service: AmazonRDS; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: 853d8c16-c07b-400c-abfe-b518675f18d3)
Instanceのタイプとサイズが起動しようとするDBでサポートしていないらしい。ごめんなさい。ケチりすぎた。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.html