com4dc’s blog

Javaプログラマーのはずだけど運用してます

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