Amazon Elastic Container Service (Amazon ECS) クラスターを削除できません。
簡単な説明
Amazon ECS クラスターは、リソースの依存関係の問題が原因で削除に失敗することがあります。ECS クラスターを作成すると、AWS CloudFormation は自動スケーリンググループ、仮想プライベートクラウド (VPC)、ロードバランサーなどのリソースをクラスターに関連付けます。これらのリソースや AWS CloudFormation に関するその他の問題により、クラスターの削除が妨げられる可能性があります。
2015 年 11 月 24 日よりも後に ECS コンソールまたはクラスター作成ウィザードを使用してクラスターを作成した場合、そのクラスターには CloudFormation スタックがあります。クラスターを削除するときに、EC2ContainerService-yourClusterName スタックで次のエラーが発生することがあります。
- 「vpc 'vpc-1234567' には依存関係があるため、削除できません」
- 「"リソース sg-123456 に依存オブジェクトがあります" というエラーが原因で、セキュリティグループ sg-123456 を削除できませんでした」
- 「ユーザー:arn: aws: sts:: 1111222233334444:assumed-role/example-user は次の実行を許可されていません。ecs: DeleteCluster 該当リソース: arn: aws: ecs: リージョン: 1111222233334444:cluster/Example-Cluster」
上記のエラーが原因でクラスターの削除が失敗し、CloudFormation スタックは DELETE_FAILED 状態に移行します。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
IAM アクセス許可を確認する
次の手順を実行します。
- AWS Identity and Access Management (IAM) コンソールを開きます。
- ナビゲーションペインで、[ロール] を選択します。
- [ロール] ページで、エラーメッセージで指定されている IAM ロールを入力します。AWS CloudTrail イベント履歴ページからエラーメッセージを確認するには、DeleteCluster API コールをフィルター処理します。
注: API コールを行う IAM エンティティが、Amazon ECS クラスターを削除しようとしているエンティティです。
- IAM エンティティを選択します。
- [アクセス許可] タブを選択します。
- アクセス許可ポリシーに、必要な ecs:Delete* アクセス許可が含まれているかどうかを確認します。そのアクセス許可がない場合は、AmazonECS_FullAccess を IAM エンティティに付与します。
依存関係のあるリソースをスキップしてクラスターを削除する
次の手順を実行します。
- CloudFormation コンソールを開きます。
- [フィルター] で [Active] を選択し、[Failed] を選択します。
- 障害が発生したスタックを選択します。
- [アクション] を選択し、[スタックを削除] を選択します。
- 削除に失敗したリソースを選択します。
- [はい、削除します] を選択します。
重要: リソースを削除できないが、スタックを削除する場合は、[保持] を選択します。AWS CLI の delete-stack コマンドを使用してリソースを保持することもできます。
- ECS クラスターを削除します。
保持されているリソースを削除する
以下の例は、CloudFormation スタックに一般的に関連付けられているリソースを削除する方法を示しています。
セキュリティグループの依存関係
次の例では、あるセキュリティグループのインバウンドルールまたはアウトバウンドルールが他のセキュリティグループを参照しているため、クラスターを削除することはできません。
セキュリティグループの依存関係をクリアするには、次の手順を実行します。
- describe-security-groups コマンドを実行して、関連するセキュリティグループを検索します。
aws ec2 describe-security-groups --filters Name=ip-permission.group-id,Values=[sg-xxxxxxxxx] --region us-east-1 | jq '.SecurityGroups[] .GroupId'
注: jq は、コマンドライン JSON プロセッサです。
- 削除するセキュリティグループの依存関係をクリアします。
- セキュリティグループのリソースを削除します。
VPC の依存関係
一般的な VPC の依存関係には、インターネットゲートウェイ、サブネット、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスなどがあります。
VPC の依存関係をクリアするには、次の手順を実行します。
- describe-subnets コマンドを実行して、VPC の依存リソースを特定します。
aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-########" --region RegionId | grep SubnetId
注: vpc-######## はお使いの VPC の値に、RegionId はお使いの AWS リージョン ID に置き換えます。describe-internet-gateways や describe-instances など、他の依存関係に対しても同様の describe_* コマンドを実行できます。
- 削除する VPC の依存関係をクリアします。
- VPC を削除します。
詳細については、「Amazon VPC を削除しようとしましたが、依存関係エラーが発生しました。Amazon VPC を削除する方法を教えてください」を参照してください。
関連情報
スタックの削除に失敗する