簡體   English   中英

如何獲取現有 AWS VPC 的 InternetGatewayId

[英]How can I get InternetGatewayId of an existing AWS VPC

背景:我們有一個 VPC,它連接了一個 Internet 網關。

我想通過 aws-cdk 獲取 VPC 的 InternetGatewayId

vpc := awsec2.Vpc_FromLookup(stack, jsii.String(viper.GetString(`vpc.id`)), &awsec2.VpcLookupOptions{
        VpcId: jsii.String(viper.GetString(`vpc.id`)),
    }) //Here it returns awsec2.Ivpc

但根據代碼,只有awsec2.Vpc有方法InternetGatewayId() 如何將awsec2.Ivpc轉換為awsec2.Vpc

Vpc_FromLookup返回的Ivpc類型是一種CDK 便捷方法,用於在合成時緩存一組有限的 VPC 屬性。 不幸的是, 互聯網網關 ID 不是其中之一

目前您無法獲取導入的 VPC 的 [Internet Gateway] ID。 為此,您必須專門按名稱查找 Internet 網關,這需要事先知道名稱。

一個簡單的確定性解決方法是將 ID 手動存儲為SSM Parameter Store Parameter 在合成時, StringParameter_ValueFromLookup查找 IGW ID 值並將其緩存為cdk.context.json中的上下文

igwID := awsssm.StringParameter_ValueFromLookup(stack, jsii.String("/my-params/vpc/igw-id"))

更高級的僅 CDK 解決方案是在部署時CustomResource中查找 ID,它“可以在 CloudFormation 部署期間進行任意查找或修改” (通常通過使用 Lambda 進行 SDK 調用)。 請注意,這不一定是更好的解決方案,因為它在部署中引入了不確定性

暫無
暫無

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

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