【问题标题】:Export Existing EC2 instance to CloudFormation json/yaml将现有 EC2 实例导出到 CloudFormation json/yaml
【发布时间】:2020-09-12 13:45:00
【问题描述】:

问题:

我有一个 EC2 实例正在运行,并且我对该实例进行了一些修改:安装了 docker,为证书设置目录等。现在,我想创建相同的实例,但使用基础设施作为代码主体。我没有记住我所做的所有添加并手动创建模板,而是试图找到一种方法将我当前的 EC2 实例导出为 jsonyaml 格式,以便我可以终止此实例并创建另一个一个相当于运行的那个。

我试过了:

aws ec2 describe-instances

Reading through the AWS CLI EC2 docs

Reading through the CloudFormation docs

Searched Google

Searched SO

【问题讨论】:

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


    【解决方案1】:

    由于您不知道实例是如何设置的,因此唯一的选择是创建一个 Amazon 系统映像 (AMI)。这将创建磁盘的精确副本,因此您安装的所有内容都可用于从 AMI 启动的任何新实例。然后可以将 CloudFormation 模板配置为使用此 AMI 启动实例。

    另一方面,如果您知道配置实例需要运行的所有命令,那么您可以提供一个在新实例首次启动时运行的用户数据脚本。这将自动配置实例,并且是配置实例的推荐方式,因为它易于修改并允许实例使用最新版本的操作系统启动。

    此类脚本可以作为 CloudFormation 模板的一部分提供。

    见:Running commands on your Linux instance at launch - Amazon EC2

    【讨论】:

    • 感谢您的详细解答。我将探索用户数据脚本。我更喜欢实施最佳实践,似乎初始化脚本将是最好的方法。我相信,如果我有一家公司并且我创建了一个 mycompany-ami 映像,那么 AMI 用例会很好。
    【解决方案2】:

    有一个由 AWS 开发的工具(仍处于测试阶段),名为CloudFormer

    CloudFormer 是一个模板创建测试版工具,它从您账户中的现有 AWS 资源创建 AWS CloudFormation 模板。您选择在您的账户中运行的任何受支持的 AWS 资源,CloudFormer 会在 Amazon S3 存储桶中创建一个模板。

    CloudFormerAWS 托管模板。启动它后,该模板将为您创建一个 AWS::EC2::Instance 以及许多其他相关资源。您将使用 URL through browser 访问该实例,AWS 向导 将从那里引导您。

    它的教程甚至展示了如何从现有的 EC2 实例创建 CloudFormation 模板。

    【讨论】:

    • CloudFormer 实际上是一个没有维护的非常古老的工具。它已经处于“测试版”很多年了。
    • @JohnRotenstein 顺便说一句,它仍在 CloudFormation 控制台中。我今天在做出答案之前使用了它,它确实创建了它说应该的堆栈。
    • @Marcin 感谢您的回复。我将找到一个不同的解决方案,因为文档状态为CloudFormer is currently in beta. We recommend against utilizing it in critical or production environments.。再次感谢您!
    • @JohnRotenstein AWS 真的应该正式宣布(即在 AWS,而不是在论坛上)CloudFormer 的生命周期结束,并更新旧的 CloudFormer 博客文章来说明这一点。我刚刚浪费了很多时间试图弄清楚为什么在控制台中找不到仍然有内容的工具,就像其他 stackoverflow.com/questions/59575949/…
    • CloudFormer 的一个不错的免费第三方替代品是:Former2
    【解决方案3】:

    一种选择是从实时实例创建 AMI 并使用 AMI 启动新的 CF 堆栈。

    其他将导入资源:https://aws.amazon.com/blogs/aws/new-import-existing-resources-into-a-cloudformation-stack/

    【讨论】:

      【解决方案4】:

      将 EC2 实例导入 CloudFormation,然后复制它的模板。

      阅读更多:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resource-import.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-22
        • 2017-10-25
        • 2020-10-26
        • 2013-12-18
        • 2019-01-01
        • 1970-01-01
        • 2020-09-24
        • 2018-07-20
        相关资源
        最近更新 更多