首页 > 解决方案 > 有没有办法指定创建 vpc 时使用的可用区数量?

问题描述

使用 CDK 在堆栈中实例化 vpc 对象时。有一个参数 max_azs 应该默认为 3。但是,当我创建一个 vpc 时,无论我将该数字设置为什么,我都只会得到 2 个 AZ。

from aws_cdk import (
  core,
  aws_ec2 as ec2
)

app = core.App()

subnets = []
subnets.append(ec2.SubnetConfiguration(name = "public", subnet_type = ec2.SubnetType.PUBLIC, cidr_mask = 20))
subnets.append(ec2.SubnetConfiguration(name = "private", subnet_type = ec2.SubnetType.PRIVATE, cidr_mask = 20))
subnets.append(ec2.SubnetConfiguration(name = "isolated", subnet_type = ec2.SubnetType.ISOLATED, cidr_mask = 20))

vpc = ec2.Vpc(app, "MyVpc", subnet_configuration = subnets, max_azs = 3)

print(vpc.availability_zones)
app.synth()

我希望看到这里使用 3 个 azs,但实际上只得到 2 个。即使我将值设置为 99,这应该意味着所有 azs。

标签: aws-cdk

解决方案


啊,是的,我自己也遇到了同样的问题。为我解决的问题是在创建堆栈时指定区域和帐户。

以下示例用于打字稿,但我相信您可以编写相应的 python。

new MyStack(app, 'MyStack', {
  env: {
    region: 'us-east-1',
    account: '1234567890',
  }
});

对于打字稿,您需要在部署之前重新构建和合成。

$ npm run build
$ cdk synth

推荐阅读