簡體   English   中英

VPC“fromLookup”導致所有私有子網和沒有公共子網

[英]VPC "fromLookup" results in all Private Subnets and no Public Subnets

我正在嘗試使用 CDK v1.1.0 創建一個面向 Internet 的應用程序負載均衡器。

當我使用我的vpcId調用ec2.vpc.fromLookup ,我得到了我的所有子網,但它們都被標記為PRIVATE子網。 因此,我收到一個錯誤,提示沒有可用的公共子網。

如果我嘗試使用我的vpcIdavailabilityZonesec2.vpc.fromVpcAttributes使用SubnetIDs ,我會收到錯誤“無法讀取未定義的屬性‘selectSubnets’”。

我的子網的路由表:在子網中,我的 RouteTable 有兩個路由:

  • 目的地:10.140.0.0/16,目標:本地,狀態活躍
  • 目的地:0.0.0.0/0,目標:internet-gateway,Status Active

我不確定是我的子網/VPC 配置不正確還是 aws-cdk 有錯誤。

我已經手動嘗試使用公共子網創建應用程序負載均衡器,並且能夠成功創建。 所以我不能說我的子網配置不正確。

我花了一段時間,但我想通了。 對於我的公共子網,需要啟用屬性: Auto-assign public IPv4 address (設置為 YES)。

但這導致了一個奇怪的要求,我必須在所有支持的可用區中擁有相同數量的公共和私有子網。 我不明白為什么。 否則我得到錯誤:
Not all subnets in VPC have the same AZs: ap-southeast-2a,ap-southeast-2b vs ap-southeast-2a,ap-southeast-2a,ap-southeast-2a,ap-southeast-2a,ap-southeast-2b,ap-southeast-2b,ap-southeast-2b,ap-southeast-2b,ap-southeast-2c,ap-southeast-2c,ap-southeast-2c

導入和控制子網分類方式的最簡單方法是使用ec2.Vpc.fromVpcAttributes

// Import existing VPC
const vpc = ec2.Vpc.fromVpcAttributes(this, 'Vpc', {
  vpcId: 'vpc-xxxxxx',
  availabilityZones: ['eu-west-1a', 'eu-west-1b', 'eu-west-1c'],
  publicSubnetIds: ['subnet-xxxxxx', 'subnet-xxxxxx', 'subnet-xxxxxx'],
  privateSubnetIds: ['subnet-xxxxxx', 'subnet-xxxxxx', 'subnet-xxxxxx'],
});

子網順序和長度很重要,並且必須與可用區匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM