Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 在不解除弹性IP关联的情况下删除CloudFormation VPC堆栈会导致删除失败_Amazon Web Services_Amazon Cloudformation - Fatal编程技术网

Amazon web services 在不解除弹性IP关联的情况下删除CloudFormation VPC堆栈会导致删除失败

Amazon web services 在不解除弹性IP关联的情况下删除CloudFormation VPC堆栈会导致删除失败,amazon-web-services,amazon-cloudformation,Amazon Web Services,Amazon Cloudformation,我有一个正确创建的CloudFormation堆栈(匿名版本为),但尝试删除它时无法尝试删除VPCGatewayAttachment,因为它抱怨VPC映射了公共地址。但是,如果我先将弹性IP与VPC内的实例断开关联,它就可以正常工作 堆栈JSON中的注意事项: 弹性IP和VPCGatewayAttachment作为堆栈创建的一部分创建和关联。我不会在创建和删除之间做任何更改 我正在使用AWS Powershell帮助程序创建和销毁,特别是新建CFNStack和删除CFNStack,但是从AWS

我有一个正确创建的CloudFormation堆栈(匿名版本为),但尝试删除它时无法尝试删除VPCGatewayAttachment,因为它抱怨VPC映射了公共地址。但是,如果我先将弹性IP与VPC内的实例断开关联,它就可以正常工作

堆栈JSON中的注意事项:

  • 弹性IP和VPCGatewayAttachment作为堆栈创建的一部分创建和关联。我不会在创建和删除之间做任何更改
  • 我正在使用AWS Powershell帮助程序创建和销毁,特别是新建CFNStack和删除CFNStack,但是从AWS控制台手动删除堆栈会产生相同的结果
  • AWS控制台中的删除序列表明它正试图在弹性IP之前删除VPCGatewayAttachment,但如果我解除关联,它会按照正确的顺序进行操作

我可以通过事先解除弹性IP的关联来解决这个问题,但我不明白为什么它不能按照正确的顺序进行操作,鉴于CloudFormation似乎知道删除序列中的其他依赖项。

这是弹性IP地址释放顺序中的一个错误,是在CloudFormation从单一处理转为并行处理时引入的

AWS已经意识到了这一点,希望他们能将其列入路线图,以便尽快修复。同时,有些不可接受的解决方法是再次运行removecfn堆栈

(实际上,我们有一个助手运行删除,并不断调用delete,直到最终决定删除它)

当前(从2016年4月起)的解决方案是在资源中添加一个指向该资源的属性

有关以下信息,请参阅AWS CloudFormation文档:

VPC中的某些资源需要网关(Internet或VPN网关)。如果AWS CloudFormation模板定义了VPC、网关和网关附件,则需要网关的任何资源都依赖于网关附件。例如,如果VPC和InternetGateway资源也在同一模板中声明,则具有公共IP地址的Amazon EC2实例依赖于VPC网关附件

当前,当以下资源具有关联的公共IP地址且位于专有网络中时,它们依赖于专有网络网关连接:

  • 自动缩放组
  • 亚马逊EC2实例
  • 弹性负载平衡负载平衡器
  • 弹性IP地址
  • Amazon RDS数据库实例
  • 包括互联网网关的亚马逊专有网络路由
在您的示例中,您需要添加
“DependsOn”:“AttachGateway”
WebServer
WebServerEIP
,以及
路由
资源(在上面的引文中以粗体显示),例如

"WebServerEIP": {
        "Type" : "AWS::EC2::EIP",
        "DependsOn" : "AttachGateway",
        [...]
}