Проблемы RDS с настраиваемыми подсетями VP C - PullRequest
0 голосов
/ 02 августа 2020
• 1000 попытка использовать. В моей настройке у меня есть 2 стека: 1 для VP C и 1 для RDS.

Это содержимое моего Vp c Stack:

const vpc = new Vpc(this, 'Vpc');

const privateSubnetIds = vpc.selectSubnets({
    subnetType: SubnetType.PRIVATE
}).subnetIds;

const rdsSecurityGroup = new SecurityGroup(this, 'RdsSecurityGroup', {
    securityGroupName: 'rds-security-group',
    allowAllOutbound: true,
    description: `RDS cluster security group`,
    vpc: vpc
});

...

// The rest of the file defines exports.

Случай 1:

Первоначально я пытался использовать CfnDBCluster, поскольку DatabaseCluster не позволяет вам напрямую определять engineMode: 'serverless' и enableHttpEndpoint: true. Ниже приводится содержимое стека RDS с использованием конструкции CfnDBCluster:

// The beginning of the file imports all the VPC exports from the VPC Stack:
//   subnetIds (for the private subnet), securityGroupId
...

const databaseSecret = new DatabaseSecret(this, 'secret', {
    username: 'admin'
});

const secretArn = databaseSecret.secretArn;

const dbSubnetGroup = new CfnDBSubnetGroup(this, "DbSubnetGroup", {
    dbSubnetGroupDescription: `Database cluster subnet group`,
    subnetIds: subnetIds
});

const dbCluster = new CfnDBCluster(this, 'DbCluster', {
    dbClusterIdentifier: 'aurora-cluster',
    engine: 'aurora-postgresql',
    engineMode: 'serverless',
    databaseName: DB_NAME,
    masterUsername: databaseSecret.secretValueFromJson('username').toString(),
    masterUserPassword: databaseSecret.secretValueFromJson('password').toString(),
    enableHttpEndpoint: true,
    scalingConfiguration: {
        autoPause: true,
        minCapacity: 1,
        maxCapacity: 16,
        secondsUntilAutoPause: 300
    },
    vpcSecurityGroupIds: [securityGroupId],
    dbSubnetGroupName: dbSubnetGroup.dbSubnetGroupName
});

Используя конструкцию CfnDBCluster, я получаю следующую ошибку:

Some input subnets in :[subnet-044631b3e615d752c,subnet-05c2881d9b13195ef,subnet-03c63ec89ae49a748] are invalid. (Service: AmazonRDS; Status Code: 400; Error Code: InvalidParameterValue; Request ID: 5c4e6237-6527-46a6-9ed4-1bc46c38dce0)

Я могу убедитесь, что эти подсети действительно существуют до запуска стека RDS.

Случай 2:

После того, как приведенный выше пример CfnDBCluster не заработал, я попытался использовать DatabaseCluster конструкция с необработанными переопределениями. Ниже представлено содержимое стека RDS с использованием конструкции DatabaseCluster:

// The beginning of the file imports all the VPC exports from the VPC Stack:
//   subnetIds (for the private subnet), securityGroupId, vpcId, AZs, vpc (using Vpc.fromAttributes)
...

const dbCluster = new DatabaseCluster(this, 'DbCluster', {
    engine: DatabaseClusterEngine.auroraPostgres({
        version: AuroraPostgresEngineVersion.VER_10_7
    }),
    masterUser: {
        username: databaseSecret.secretValueFromJson('username').toString(),
        password: databaseSecret.secretValueFromJson('password')
    },
    instanceProps: {
        vpc: vpc,
        vpcSubnets: {
            subnetType: SubnetType.PRIVATE
        }
    },
});

const cfnDbCluster = dbCluster.node.defaultChild as CfnDBCluster;
cfnDbCluster.addPropertyOverride('DbClusterIdentifier', 'rds-cluster');
cfnDbCluster.addPropertyOverride('EngineMode', 'serverless');
cfnDbCluster.addPropertyOverride('DatabaseName', DB_NAME);
cfnDbCluster.addPropertyOverride('EnableHttpEndpoint', true);
cfnDbCluster.addPropertyOverride('ScalingConfiguration.AutoPause', true);
cfnDbCluster.addPropertyOverride('ScalingConfiguration.MinCapacity', 1);
cfnDbCluster.addPropertyOverride('ScalingConfiguration.MaxCapacity', 16);
cfnDbCluster.addPropertyOverride('ScalingConfiguration.SecondsUntilAutoPause', 300);
cfnDbCluster.addPropertyOverride('VpcSecurityGroupIds', subnetIds);

Используя конструкцию DatabaseCluster, я получаю следующую ошибку:

There are no 'Private' subnet groups in this VPC. Available types:

Я могу убедитесь, что VP C имеет частный su bnet, я также проверил, что он был правильно импортирован и что все подсети имеют ожидаемые теги, то есть ключ: 'aws -cdk: su bnet -type' value: 'Private'

Эта проблема меня заблокировала и запутала, я не могу понять, почему проявляется какая-либо из этих проблем, и был бы признателен за любые рекомендации, которые помогут решить эту проблему.

Ссылки:

Примечания:

  • Я использую версию CDK 1.56.0 с Typescript
...