使用资源导入将 Amazon 资源导入 CloudFormation 堆栈 - Amazon CloudFormation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用资源导入将 Amazon 资源导入 CloudFormation 堆栈

借助资源导入功能,您可以将现有 Amazon 资源导入新的或现有 CloudFormation 堆栈中。如果您想在无需删除和重新创建相关资源的情况下,开始使用 CloudFormation 来管理在 CloudFormation 之外创建的资源,此功能将非常实用。

CloudFormation 提供了三种将现有资源导入堆栈的方法:

  • IaC 生成器是一种导入工具,它可自动扫描现有资源并根据其当前状态生成 CloudFormation 模板,然后可以使用此模板将这些资源导入堆栈。

  • 资源导入是一种手动过程,您可以在其中描述 CloudFormation 模板中的现有资源,然后将其导入堆栈。这种方法要求您在模板中手动指定资源属性和配置。

  • 堆栈重构功能可简化 CloudFormation 堆栈中资源的重新整理,同时仍保留现有资源属性和数据。借助堆栈重构功能,您可以在堆栈之间移动资源,将整体堆栈拆分为较小的组件,或者将多个堆栈整合为一个。

除将现有资源纳入 CloudFormation 管理范围之外,资源导入功能对于下列场景也非常实用:

  • 在堆栈之间移动资源 – 您可以将资源从一个堆栈导入另一个堆栈,从而可以根据需要重新组织基础设施。

  • 嵌套现有堆栈 – 您可以将现有堆栈作为嵌套堆栈导入另一个堆栈,从而实现模块化和可重复使用的基础设施设计。

CloudFormation 支持导入广泛的资源。有关更多信息,请参阅 资源类型支持

概览

在导入操作期间,您创建一个更改集以将现有资源导入到堆栈中,或者从现有资源中创建新的堆栈。您在导入期间提供以下内容。

  • 描述整个堆栈的模板,包括原始堆栈资源和您要导入的资源。每个要导入的资源都必须具有 DeletionPolicy 属性

  • 要导入的资源的标识符,CloudFormation 可以使用这些标识符将模板中的逻辑 ID 与现有资源进行映射。

注意

使用资源导入功能时,CloudFormation 仅支持一层嵌套。这意味着,您无法将堆栈导入到子堆栈中,也无法导入具有子堆栈的堆栈。

资源标识符

提供两个值来标识正在导入的每个资源。

  • 标识符属性。这是一个资源属性,可用于标识每种资源类型。例如,可以使用 BucketName 标识 AWS::S3::Bucket 资源。

    用于标识要导入的资源的资源属性因资源类型而异。可在 CloudFormation 控制台中找到资源属性。创建包含要导入的资源的模板后,可以启动导入过程,您可以在其中找到要导入的资源的标识符属性。某些资源类型可能存在多种标识方式,您可以在下拉列表中选择要使用的属性。

    或者,您也可以通过调用 get-template-summary CLI 命令并将堆栈模板的 S3 URL 指定为 --template-url 选项的值,获取要导入的资源的标识符属性。

  • 标识符值。这是资源的实际属性值。例如,BucketName 属性的实际值可能是 MyS3Bucket

    可从资源的服务控制台获取标识符属性的值。

资源导入验证

在导入操作期间,CloudFormation 执行以下验证。

  • 要导入的资源存在。

  • 每个要导入的资源的属性和配置值符合资源类型架构要求,该架构定义了它接受的属性、必需的属性和支持的属性值。

  • 在模板中指定了必需的属性。Amazon 资源和属性类型参考 中列出了每种资源类型所需的属性。

  • 要导入的资源不属于同一区域中的其他堆栈。

CloudFormation 不检查模板配置与资源属性的实际配置是否匹配。

重要

验证模板中定义的资源及其属性是否与资源导入的预期配置相匹配,以避免意外更改。

资源导入状态代码

下表描述了可与资源导入功能一起使用的各种状态类型。

导入操作状态 描述

IMPORT_IN_PROGRESS

正在执行导入操作。

IMPORT_COMPLETE

堆栈中所有资源的导入操作均已完成。

IMPORT_ROLLBACK_IN_PROGRESS

回滚导入操作正在回滚以前的模板配置。

IMPORT_ROLLBACK_FAILED

导入回滚操作失败。

IMPORT_ROLLBACK_COMPLETE

导入已回滚到以前的模板配置。

导入操作期间的注意事项

  • 在导入完成后以及执行后续堆栈操作之前,我们建议对导入的资源运行偏差检测。偏差检测确保模板配置与实际配置匹配。有关更多信息,请参阅 在整个 CloudFormation 堆栈上检测偏差

  • 导入操作不允许创建新资源,删除资源或更改属性配置。

  • 要导入的每个资源必须具有 DeletionPolicy 属性,才能成功完成导入操作。DeletionPolicy 可以设置为任何可能的值。只有要导入的资源才需要 DeletionPolicy。已属于堆栈的资源不需要使用 DeletionPolicy

  • 您不能将同一资源导入多个堆栈。

  • 您可以使用 cloudformation:ImportResourceTypes IAM policy 条件控制用户可以在导入操作期间使用的资源类型。有关更多信息,请参阅 CloudFormation 的策略条件键

  • CloudFormation 堆栈限制在导入资源时适用。有关限制的更多信息,请参阅 了解 CloudFormation 配额

其他 资源

要通过资源导入解决堆栈偏差问题,请参阅通过导入操作消除偏差