如何解决 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 

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

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 

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

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

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

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

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

排查资源已被修改的错误

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

如果您遇到此错误:

There was an error creating this change set
You have modified resources  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  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 传递给所有要导入的新资源。