gpt4 book ai didi

amazon-web-services - 如何将默认 VPC 导入 CloudFormation 堆栈并使用 AWS CDK 重新创建它?

转载 作者:行者123 更新时间:2023-12-03 07:15:20 24 4
gpt4 key购买 nike

我想使用我的所有网络资源创建一个 AWS CloudFormation 堆栈。所以我还想包含我的默认 VPC。我使用 AWS CDK 创建了堆栈,并希望使用 CDK 配置我的所有资源。

为了导入我的默认 VPC,我使用了管理控制台和堆栈操作“将资源导入堆栈”。我使用此模板导入我的默认 VPC:

Resources:
VPC:
Type: AWS::EC2::VPC
DeletionPolicy: Retain
Properties:
CidrBlock: 172.31.0.0/16
EnableDnsSupport: 'true'
EnableDnsHostnames: 'true'
InstanceTenancy: default

导入向导需要 VPC ID,我使用了默认 VPC ID。成功导入后,我得到了一个与上面内容相同的堆栈的 CloudFormation 模板。

现在我想使用 AWS CDK 重新创建我的默认 VCP。我不想使用 Vpc.fromLookupfromVpcAttributes。我想使用 AWS CDK 创建一个新的 VPC,这是我的默认 VPC。所以我写道:

const vpc = new ec2.Vpc(this, 'VPC', {
cidr: "172.31.0.0/16",
enableDnsSupport: true,
enableDnsHostnames: true,
defaultInstanceTenancy: DefaultInstanceTenancy.DEFAULT
});

但是当我调用 cdk diff 时,它显示:

[-] AWS::EC2::VPC VPC orphan
[+] AWS::EC2::VPC VPC VPCXYZ12345

因此它想要创建一个新的 VPC,而我导入的默认 VPC 是孤立的。

我还尝试覆盖逻辑 ID。所以它与我的默认 VPC 的 ID 匹配:

const cfnVpc = vpc.node.defaultChild as cdk.CfnResource;
cfnVpc.overrideLogicalId('vpc-abcd1234');

但是 cdk diff 的输出与上面类似,但现在使用我的默认 VPC 的 VPC ID。

是否可以将默认 VPC 导入 CloudFormation 堆栈并使用 AWS CDK 重新创建它?

最佳答案

尽管您保持堆栈名称相同,但导入的cloudformation中的vpc资源的逻辑id和cdk生成的cloudformation中的逻辑id不同。 VPC 与 VPCXYZ12345。

这就是 cdk diff 显示删除和重新创建的原因。

以下是我们理想的做法:

  • 删除现有的云信息
  • 创建cloudformation cdk --no-version-reporting Synth
  • 从 cdk.out 获取模板
  • 将其导入到 cloudformation 控制台中,就像常规模板一样。

此过程应该可以帮助您将现有的 vpc 导入 cdk。 Here是在 cdk 中导入 DynamoDB 表的类似答案。

关于amazon-web-services - 如何将默认 VPC 导入 CloudFormation 堆栈并使用 AWS CDK 重新创建它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67235562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com