[英]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.