デプロイサーキットブレーカーを無効な状態で ECS サービスを新規作成する方法を教えてください
困っていた内容
ECS サービスの新規作成で問題が発生し、デプロイサーキットブレーカーがトリガーされました。
原因調査のためサービスイベントメッセージを確認したところ、トリガーにより ECS サービスが削除され、イベントメッセージも確認できませんでした。
デプロイサーキットブレーカーを無効な状態で ECS サービスを作成する方法を教えてください。
hato-ecs-service のデプロイ中にエラーが発生しました Resource handler returned message: "Error occurred during operation 'ECS Deployment Circuit Breaker was triggered'." (RequestToken: 5f40c577-3534-4b20-9599-0b0123456789, HandlerErrorCode: GeneralServiceException)
どう対応すればいいの?
サービス作成時の「デプロイ不具合の検出」からデプロイサーキットブレーカーを無効にしてください。
※「デプロイ不具合の検出」をクリックすると項目が表示されます。
デプロイで繰り返し問題が発生した場合、コスト発生を抑制するためデプロイサーキットブレーカーがトリガーされます。トリガーにより ECS サービスの作成が失敗状態となり、CloudFormation を通して ECS サービスの作成がロールバックされます。
ロールバックにより ECS サービスとその中に含まれるサービスイベントメッセージは削除されるため、トラブルシューティングなどで必要な場合は、デプロイサーキットブレーカーを無効な状態で ECS サービスを作成してください。
ただし、デプロイサーキットブレーカーが無効な場合も、約3時間で CloudFormation により ECS サービス作成がロールバックされる場合があるため、EventBridge を利用して CloudWatch Logs にイベントを保管することもご検討ください。
EventBridge を使用して AWS サービスのイベントをCloudWatch Logs に保管してみた | DevelopersIO
また、トラブルシューティングには ECS タスクの停止理由が有用な場合があります。ECS タスクの停止理由も約1時間で非表示となるため、あわせて保管をご検討ください。
- Amazon ECS タスクの停止理由 (エラー内容) を CloudWatch Logs に保存する方法とその分析をしてみた | DevelopersIO
- ECS タスクの停止理由を CloudWatch Logs に保管する方法を教えてください | DevelopersIO
参考資料
デプロイサーキットブレーカーを使用して障害を検出し、障害時にデプロイを自動的にロールバックするオプションを設定します。
サービスがタスク定義で希望する数のタスクを起動したことを確認するために、AWS CloudFormation は DescribeService API 呼び出しを繰り返します。これらの呼び出しは、状態が要求通りになるまで、サービスのステータス確認を続けます。この呼び出しプロセスには、最大で 3 時間かかります。