【问题标题】:Create EC2 instances after they are terminated using "update" from service catalog product使用服务目录产品中的“更新”终止后创建 EC2 实例
【发布时间】:2020-09-25 15:29:55
【问题描述】:

我有 2 个使用服务目录产品配置生成的 EC2 实例。由于某些原因,我已经终止了它们并希望重新生成新的 EC2 实例(不是终止的实例)。 因此,我尝试从服务目录再次更新产品,并希望服务目录能够重新创建它们,因为早期的实例不存在。 产品配置成功,但未创建 EC2 实例。

我的产品实际上是一个包含一些子堆栈的完整堆栈,其中一个子堆栈实际上创建了 EC2 实例。

我们可以设想如下 -

全栈

  • 子栈 1
  • 子栈 2
  • 子栈 3

问题是如何在不终止整个堆栈的情况下创建新的 EC2 实例。

有关这些权限的更多信息 -
我有两个角色用来实现这一目标。 1 个角色仅用于从服务目录供应产品。其他类似管理员的角色,我可以使用它来终止 EC2 实例。我只是不想从管理员角色中生成 EC2 并使用产品来配置它们。

【问题讨论】:

  • 所以你是说AWS Service Catalog部署的CloudFormation堆栈仍然存在,但是被终止的两个实例最初是从这个堆栈启动的?您是否有足够的 CloudFormation 权限来修改已部署的堆栈?如果是这样,您可能会从模板中删除这些实例,更新,然后将它们添加回模板并更新。如果您无法在 CloudFormation 中管理堆栈,则需要管理员的帮助才能执行此操作。
  • @JohnRotenstein - 是的,最初我使用完整堆栈来获取所有资源。我不得不终止从其中一个子堆栈创建的 EC2。现在,我再次更新全栈产品以创建新的 EC2。我有权使用 2 个不同的角色这样做。 1 个角色可以从服务目录配置产品,另一个是可以终止 EC2 实例的管理员角色。但我不想从这个角色手动生成新的 EC2 实例。希望这可以澄清。
  • 如果您可以在 CloudFormation 上使用管理员角色,那么上述技术应该可以工作(从模板中删除、更新、添加回模板、更新)。
  • @JohnRotenstein - 是的,同意它应该有效,但事实并非如此。我很确定它与我正在使用的角色无关,因为如果我可以使用相同的角色让它首先运行,那么理想情况下我应该能够再次这样做。供应产品的角色足以满足供应产品的要求,因此我只是将角色作为问题的根本原因。另一个观察结果是,当我终止实例并尝试更新完整堆栈(包括创建 EC2 的堆栈)时,CF 中的资源链接指向终止的实例。
  • @JohnRotenstein - 哦,对不起,我想你误会了。我没有更改源代码。当我说“更新”时,我的意思是服务目录中有一个更新现有产品的规定。我正在使用该选项来取回资源。希望它现在澄清。

标签: amazon-web-services amazon-ec2 amazon-cloudformation


【解决方案1】:

AWS CloudFormation 不会“意识到”超出其控制范围的资源更改。因此,它目前认为 EC2 实例仍然存在,即使它们已被终止。

如果您有足够的权限使用 CloudFormation,您可以:

  • 下载由 Service Catalog 部署的 CloudFormation 模板
  • 删除定义 EC2 实例的部分
  • 通过提供已编辑的模板更新堆栈 - 这将导致 CloudFormation 终止实例(已终止)
  • 编辑模板并添加回实例定义,然后使用此模板再次更新堆栈(实际上与最初用于启动堆栈的模板相同)- - 这应该会导致部署符合原始规范的新实例

【讨论】:

    猜你喜欢
    • 2015-05-16
    • 2013-12-18
    • 2018-12-14
    • 1970-01-01
    • 2018-07-12
    • 2018-06-21
    • 2017-06-08
    • 2014-02-07
    • 1970-01-01
    相关资源
    最近更新 更多