スキップしてコンテンツを表示

Amazon ECS クラスターを AWS CloudFormation スタックの一部として削除できない場合の対応策を教えてください。

所要時間2分
0

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 アクセス許可を確認する

次の手順を実行します。

  1. AWS Identity and Access Management (IAM) コンソールを開きます。
  2. ナビゲーションペインで、[ロール] を選択します。
  3. [ロール] ページで、エラーメッセージで指定されている IAM ロールを入力します。AWS CloudTrail イベント履歴ページからエラーメッセージを確認するには、DeleteCluster API コールをフィルター処理します。
    注: API コールを行う IAM エンティティが、Amazon ECS クラスターを削除しようとしているエンティティです。
  4. IAM エンティティを選択します。
  5. [アクセス許可] タブを選択します。
  6. アクセス許可ポリシーに、必要な ecs:Delete* アクセス許可が含まれているかどうかを確認します。そのアクセス許可がない場合は、AmazonECS_FullAccess を IAM エンティティに付与します。

依存関係のあるリソースをスキップしてクラスターを削除する

次の手順を実行します。

  1. CloudFormation コンソールを開きます。
  2. [フィルター][Active] を選択し、[Failed] を選択します。
  3. 障害が発生したスタックを選択します。
  4. [アクション] を選択し、[スタックを削除] を選択します。
  5. 削除に失敗したリソースを選択します。
  6. [はい、削除します] を選択します。
    重要: リソースを削除できないが、スタックを削除する場合は、[保持] を選択します。AWS CLI の delete-stack コマンドを使用してリソースを保持することもできます。
  7. ECS クラスターを削除します

保持されているリソースを削除する

以下の例は、CloudFormation スタックに一般的に関連付けられているリソースを削除する方法を示しています。

セキュリティグループの依存関係

次の例では、あるセキュリティグループのインバウンドルールまたはアウトバウンドルールが他のセキュリティグループを参照しているため、クラスターを削除することはできません。

セキュリティグループの依存関係をクリアするには、次の手順を実行します。

  1. 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 プロセッサです。
  2. 削除するセキュリティグループの依存関係をクリアします。
  3. セキュリティグループのリソースを削除します

VPC の依存関係

一般的な VPC の依存関係には、インターネットゲートウェイ、サブネット、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスなどがあります。

VPC の依存関係をクリアするには、次の手順を実行します。

  1. describe-subnets コマンドを実行して、VPC の依存リソースを特定します。
    aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-########" --region RegionId | grep SubnetId
    注: vpc-######## はお使いの VPC の値に、RegionId はお使いの AWS リージョン ID に置き換えます。describe-internet-gatewaysdescribe-instances など、他の依存関係に対しても同様の describe_* コマンドを実行できます。
  2. 削除する VPC の依存関係をクリアします。
  3. VPC を削除します

詳細については、「Amazon VPC を削除しようとしましたが、依存関係エラーが発生しました。Amazon VPC を削除する方法を教えてください」を参照してください。

関連情報

スタックの削除に失敗する

AWS公式更新しました 1年前