如何解决 CloudFormation 中的更改集错误?

上次更新时间:2021 年 3 月 17 日

当我尝试将资源导入 AWS CloudFormation 堆栈时,我遇到了错误。

简短描述

根据您遇到的错误类型,完成以下相应部分中的步骤

  • 排查输出错误
  • 排查堆栈属性验证错误
  • 排查资源已被修改的错误
  • 排查要导入的资源列表错误

注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时遇到错误,请确保您使用的是最新版的 AWS CLI

解决方法

排查输出错误

如果您遇到以下错误:

There was an error creating this change set.
As part of the import operation, you cannot modify or add [Outputs]

请尝试以下问题排查步骤:

1.    比较最新 CloudFormation 模板与您的堆栈当前正在使用的模板的 Outputs(输出)部分。两个模板的 Outputs(输出)部分应该相同。

如果其中的值不一样,请更新最新的模板以使其与您的堆栈当前正在使用的模板 Outputs(输出)部分的值和输出完全一致。

重要提示:导入操作不能包含对 Outputs(输出)部分中 Logical ID(逻辑 ID)、Description(描述)、Value(值)、Export(导出)以及其他参数的增加和修改。

2.    导入操作完成后,使用所需的 Outputs(输出)配置更改再次更新堆栈。

排查堆栈属性验证错误

如果您遇到以下错误:

An error occurred (ValidationError) when calling the CreateChangeSet operation: As part of the import operation, you cannot modify or add [Tags]

请尝试以下问题排查步骤:

1.    确认所包含用于更改集创建操作的堆栈属性(例如 TagsNotificationARNs)与堆栈的当前属性值同步。

重要提示:请勿更新或添加任何新属性值。

2.    导入资源后,通过单独的更新操作更新属性。

注意:当使用 AWS CLI 或 AWS 开发工具包创建 IMPORT 类型的更改集并包含修改或添加的堆栈属性时,会出现此错误。

排查资源已被修改的错误

在资源导入操作期间修改现有的资源时,会引发此错误。在导入操作期间,不允许执行创建、更新和删除操作。

如果您遇到此错误:

There was an error creating this change set
You have modified resources [ResourceName] in your template that are not being imported. Update, create or delete operations cannot be executed during import operations.

请尝试以下操作:

1.    创建 UPDATE 类型的更改集而不是 IMPORT 类型的更改集。这将会显示资源中的更改源。

2.    使用与现有资源完全相同的 Resources(资源)规范,并且只添加应导入模板的资源。

排查要导入的资源列表错误

如果您遇到以下错误:

An error occurred (ValidationError) when calling the CreateChangeSet operation: Resources [<ResourceName>] is missing from ResourceToImport list

请尝试以下操作:

1.    在您的 CloudFormation 模板中,验证您是否在将某个物理 ID 传递到要导入到堆栈的所有资源的 ResourceToImport 属性。

如果您遇到以下错误:

An error occurred (ValidationError) when calling the CreateChangeSet operation: Must Provide at least one resource to import

请尝试以下操作:

1.    验证您是否在 AWS CLI 命令包含了 --resources-to-import,或在 API 调用中包含了ResourceToImport。此外,请务必列出所有要导入的资源。

注意:这些错误通常会在使用 AWS CLI 或 AWS 开发工具包创建 IMPORT 类型的更改集时发生。

重要提示:您必须将某个物理 ID 传递给所有要导入的新资源。