CloudFormation の変更セットエラーを解決する方法を教えてください。
AWS CloudFormation スタックにリソースをインポートしようとすると、エラーが表示されます。
解決策
エラーの種類に応じて関連するセクションの手順を実行し、問題をトラブルシューティングしてください。
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
変更された出力に関するエラー
両方のテンプレートの [出力] セクションの値は同じでなければなりません。CloudFormation コンソールを使用して、出力を含むリソースインポートテンプレートで新しいスタックを作成すると、次のようなエラーが表示されます。
"There was an error creating this change set.As part of the import operation, you cannot modify or add [Outputs]"
このエラーは、リソースをスタックにインポートしようとした場合にも発生します。
このエラーを解決するには、最新の CloudFormation テンプレートの [出力] セクションが、スタックで現在使用されているテンプレートと一致していることを確認します。値が同じでない場合は、現在のテンプレートの [出力] セクションの値と出力が一致するように最新のテンプレートを更新してください。
重要: インポート操作には、[論理 ID]、[説明]、[値]、[エクスポート]、または [出力] への追加や変更を含めることはできません。
インポート操作が完了したら、[出力] 設定で変更を加えてスタックを更新します。または、AWS リソースを CloudFormation スタックに自動的にインポートすることもできます。
スタック属性の検証エラー
AWS CLI または AWS SDK を使用して、変更または追加されたスタック属性を含む IMPORT タイプの変更セットを作成すると、次のようなエラーが表示されます。
"An error occurred (ValidationError) when calling the CreateChangeSet operation: As part of the import operation, you cannot modify or add [Tags]"
このエラーは、IMPORT タイプの変更セットに変更されたスタック属性が含まれている場合に発生します。
このエラーを解決するには、変更セットの作成操作に含まれるスタック属性が、現在のスタックの属性値と一致していることを確認します。
重要: 新しい属性値は更新または追加しないでください。
リソースをインポートしたら、別の更新操作で属性を更新します。または、AWS リソースを CloudFormation スタックに自動的にインポートすることもできます。
変更されたリソースに関するエラー
インポート操作では、リソースを作成、更新、または削除することはできません。リソースのインポート操作中に既存のリソースを変更すると、次のようなエラーが表示されます。
"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."
このエラーを解決するには、IMPORT タイプの変更セットの代わりに UPDATE タイプの変更セットを作成します。これにより、リソース内の変更されたソースが表示されます。次に、既存のリソースに同じリソース仕様を使用し、適切なリソースのみを追加してテンプレートにインポートします。または、AWS リソースを CloudFormation スタックに自動的にインポートすることもできます。
インポートするリソースのリストに関するエラー
AWS CLI または AWS SDK を使用して IMPORT タイプの変更セットを作成すると、次のいずれかのエラーメッセージが表示されます。
<ResourceName>"An error occurred (ValidationError) when calling the CreateChangeSet operation: Resources [] is missing from ResourceToImport list"
"Error: "An error occurred (ValidationError) when calling the CreateChangeSet operation: Must Provide at least one resource to import""
このエラーを解決するには、AWS CLI コマンドの**--resources-to-import** プロパティに物理 ID を渡していることを確認してください。または、スタックにインポートするリソースに対して、CreateChangeSet API の ResourceToImport プロパティを使用します。
インポートするには、新しいリソースに物理 ID を渡す必要があります。このエラーを解決するには、AWS CLI コマンドに --resources-to-import が含まれているか、API コールに ResourceToImport が含まれているか確認してください。また、インポートするリソースを必ずリストしてください。
IAM 機能に関するエラー
変更セットに、アクセス許可のない IAM リソースが含まれている場合、次のいずれかのエラーメッセージが表示されます。
<StackName>"Error: Failed to create changeset for the stack: , ex: Waiter ChangeSetCreateComplete failed: Waiter encountered a terminal failure state: For expression "Status" we matched expected path: "FAILED" Status: FAILED.Reason: Requires capabilities: [CAPABILITY_NAMED_IAM]"
"When calling the CreateChangeSet operation: Requires capabilities : [CAPABILITY_IAM/CAPABILITY_NAMED_IAM]"
"Please acknowledge all checkboxes before proceeding."
このエラーを解決するには、次の手順を実行します。
- CloudFormation コンソールを開きます。
- 既存のリソースを使用して [スタックを作成] または [スタックを更新] を選択します。
- [レビュー] ページに進み、[AWS CloudFormation が IAM リソースを作成する可能性があることを了承します] / [AWS CloudFormation がカスタム名の IAM リソースを作成する可能性があることを了承します] を選択します。
または、
create-stack および update-stack AWS CLI コマンドを使用して、--capabilities パラメータに CAPABILITY_IAM または CAPABILITY_NAMED_IAM の値を指定します。
注: CloudFormation テンプレートに AWS Identity and Access Management (IAM) リソースが含まれている場合は、CAPABILITY_IAM を了承する必要があります。テンプレートに IAM リソースのカスタム名が含まれている場合は、CAPABILITY_NAMED_IAM を了承する必要があります。詳細については、「AWS CloudFormation deploy action reference」(AWS CloudFormation デプロイアクションリファレンス) の「Capabilities」(機能) セクションを参照してください。
スタックの更新操作中の "Submitted information didn't contain changes" というエラー
[スタックを更新] 操作中に同じスタックテンプレートを使用すると、次のいずれかのエラーメッセージが表示されます。
"The submitted information didn't contain changes.Submit different information to create a change set"
"An error occurred (ValidationError) when calling the UpdateStack operation: No updates are to be performed."
このエラーを解決するには、次のアクションを実行します。
- スタックに変更を加えたことを確認します。CloudFormation は、[パラメータ] または [スタックの説明] への変更をスタックテンプレートの変更とは見なしません。
- リソースに実質的な変更があることを確認してください。例えば、スタックに説明を追加したい場合は、次にスタック内の他のリソースを更新するときに変更を加えます。
- スタックタグの変更などの実質的な変更を行い、スタックの変更検出を有効にします。例えば、テンプレートに [説明] のみを追加すると、エラーが発生する可能性があります。ただし、変更セットの作成時にスタックタグも変更しても、エラーは発生しません。
- カスタムメタデータを任意のリソースに追加して、変更を有効にします。<br id=hardline_break/>
テンプレートの例:
注: MyResourceType を実際のリソースタイプに、MyResourceProperties をリソースプロパティに置き換えます。Description: This description is the cause of the error when only updating this field. Resources: myResource: Type: MyResourceType Properties: MyResourceProperties Metadata: ### ADD THIS CUSTOM METADATA test: 1 ### ANY KEY-VALUE PAIR
それでもスタックを更新できない場合は、AWS サポートにお問い合わせください。
ExecuteChangeSet API コールのエラー
CreateChangeSet API の OnStackFailure パラメータと ExecuteChangeSet API の DisableRollback パラメータを同時に使用することはできません。
"Either DisableRollback or OnStackFailure can be specified, but not both.Validation error as OnStackFailure parameter was specified during CreateChangeSet."
このエラーを解決するには、これら 2 つのパラメータを一緒に使用しないようにしてください。
コンソールでの入力とフォーマットの不一致による変更セットのエラー
CloudFormation テンプレートで、AWS Secrets Manager の動的参照を誤った形式で使用すると、次のいずれかのエラーが表示されます。
"Given input did not match expected format"
"Incorrect format is used in the following SSM reference"
このエラーを解決するには、Secrets Manager 動的参照に関するベストプラクティスに従っていることを確認してください。詳細については、「動的参照を使用して他のサービスに格納されている値を取得する」を参照してください。
関連情報
- 言語
- 日本語
