AWS Amplify アプリケーションをデプロイしようとすると、「Resource is not in the state stackUpdateComplete」(リソースは stackUpdateComplete の状態ではありません) というような AWS CloudFormation エラーが表示されます。この問題をトラブルシューティングするにはどうすればよいですか?
簡単な説明
Amplify プロジェクトの CloudFormation スタックの問題をトラブルシューティングするには、まず CloudFormation コンソールで次を確認して、問題の原因を特定します。
- バックエンドスタックの [Status code] (ステータスコード) と [Status reason] (ステータスの理由)。
- バックエンドスタックの最近の [Events] (イベント) の [Status] (ステータス)、[Status reason] (ステータスの理由)、および [Logical ID] (論理 ID) の値。
- バックエンドスタックの [Resources] (リソース) の [Status] (ステータス)、[Status reason] (ステータスの理由)、および [Logical ID] (論理 ID) の値。
注: [Status reason] (ステータスの理由) の値には、CloudFormation によって返されたエラーメッセージが含まれています。これにより、エラーの原因を特定できます。
その後、コンソールに一覧表示された [Status](ステータス)、[Status reason] (ステータスの理由)、および [Logical ID] (論理 ID) の値に基づいて問題を修正します。
解決方法
注: Amplify がプロビジョニングまたは更新する CloudFormation スタックは、さまざまな理由でエラーを返すことがあります。CloudFormation スタックが Amplify プロジェクトに関連するエラーを返す最も一般的な理由は次のとおりです。
CloudFormation コンソールでスタックのステータスコードとステータスの理由を確認して、問題の原因を特定する
1. Amplify コンソールを開きます。
2. [Backend environments] (バックエンド環境) タブを選択します。その後、アプリケーションのバックエンド環境を選択します。
3. [Overview] (概要) タブを選択します。その後、[View in CloudFormation] (CloudFormation で表示) を選択します。バックエンド環境の関連付けられた CloudFormation スタックの [Stack info] (スタック情報) ページが CloudFormation コンソールで開きます。
4. [Overview] (概要) ペインで、[Status] (ステータス) と [Status reason] (ステータス) の理由の値を確認します。これは、バックエンドスタックのステータスコード [Status reason] (ステータスの理由) です。
注: プロジェクトのルートスタックのステータスが UPDATE_ROLLBACK_FAILED の場合は、「CloudFormation スタックが UPDATE_ROLLBACK_FAILED 状態のままになっている場合に、このスタックを更新するにはどうすればよいですか?」の記事の手順に従ってください。
5. [Events] (イベント) タブを選択します。失敗ステータスの最近のすべてのイベントの [Status] (ステータス)、[Status reason] (ステータスの理由)、および [Logical ID] (論理 ID) の値を確認します。
注: UPDATE_FAILED ステータスのイベントをすべて特定してください。
6. [Resources] (リソース) タブを選択します。失敗ステータスのすべてのリソースの [Status] (ステータス)、[Status reason] (ステータスの理由)、および [Logical ID] (論理 ID) の値を確認します。
7. (ネストされたスタックの場合のみ) [Resources] (リソース) ペインで、AWS::CloudFormation::Stack タイプのリソースを探します。その後、失敗ステータスのネストされたスタックの [Status reason] (ステータスの理由) の値を確認します。
重要: トラブルシューティングの際には、[Resource update cancelled] (リソースの更新がキャンセルされました) ステータスで失敗したリソースは無視してください。このステータスは、依存するダウンストリームのリソースで、障害は発生しなかったが、別のリソースの障害のために更新もされなかったことを示します。
コンソールに一覧表示された [Status] (ステータス)、[Status reason] (ステータスの理由)、および [Logical ID] (論理 ID) の値に基づいて問題を修正する
「Amplify CLI トラブルシューティングガイド」の指示に従います。詳細については、GitHub の「Amplify CLI Issues」ページで特定の [Status reasons] (ステータスの理由) を検索することもできます。
注: ソリューションを最初に本番以外の環境でテストすることがベストプラクティスです。