【问题标题】:How can I get InternetGatewayId of an existing AWS VPC如何获取现有 AWS VPC 的 InternetGatewayId
【发布时间】:2022-01-21 19:33:01
【问题描述】:

背景:我们有一个 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 是如何创建的?
  • 手动@fedonev

标签: amazon-web-services go amazon-vpc aws-cdk


【解决方案1】:

Vpc_FromLookup 返回的Ivpc 类型是CDK convenience method,用于在合成时缓存一组有限的VPC 属性。不幸的是,Internet Gateway ID isn't one of them

目前您无法获取导入的 VPC 的 [Internet Gateway] ID。为此,您必须专门按名称查找 Internet 网关,这需要事先知道名称。

一个简单的确定性解决方法是将 ID 手动存储为 SSM Parameter Store Parameter。在合成时,StringParameter_ValueFromLookupcdk.context.json 中查找并将IGW ID 值缓存为Context。:

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

更高级的仅 CDK 解决方案是在部署时查找 ID CustomResource“可以在 CloudFormation 部署期间进行任意查找或修改”(通常通过调用 SDK使用 Lambda)。请注意,这不一定是更好的解决方案,因为它introduces non-determinacy 进入部署。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 2016-09-24
    • 2019-11-27
    相关资源
    最近更新 更多