🌊

CloudFormationスタック削除のエラー(Role ... is invalid or cannot be assumed)の対応

2024/08/20に公開

AWSでスタックを削除しようとしたら、こんなエラーメッセージが出たこと、ありませんか?

Role arn:aws:iam::999999999999:role/service/example-hogehoge-role is invalid or cannot be assumed

これは、IAMロールが無効だったり、削除されていたり、AWSがそのロールを「引き受けられないよー」と言ってるときに起こります。そこで、解決方法と最後にちゃんとお掃除まで済ませる手順を、ここにまとめました!

まずはロールを作成しよう!

CloudFormationがちゃんと動けるように、新しいロールを作ってあげましょう。以下のコマンドでサクッと作成できます。
ロール名は、エラーで出力されたロール名を!
パスが設定されていたら、忘れずにパスも!

aws iam create-role \
    --role-name example-hogehoge-role \
    --path /service/ \
    --assume-role-policy-document '{
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "cloudformation.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }'

このコマンドで、/service/パスにロールが作成され、CloudFormationがそのロールを引き受けて実行できるようになります。

とにかく削除したいだけなので管理者アクセスを付与しちゃう

次に、ロールに「管理者アクセス」を与えます。これで、スタック削除も何でもできる強力なロールになります。

aws iam attach-role-policy \
    --role-name example-hogehoge-role \
    --policy-arn arn:aws:iam::aws:policy/AdministratorAccess

これで準備完了!次は、いよいよスタック削除の手順に行きましょう。

スタックを削除しよう!

ロールが準備できたら、今度は問題のスタックを削除します。ExampleStackという名前のスタックを削除するときは、こんな感じ。

aws cloudformation delete-stack --stack-name ExampleStack

これでスタックが削除されるはず。ちゃんと削除されたか確認したいときは、次のコマンドでステータスをチェックできます。

aws cloudformation describe-stacks --stack-name ExampleStack

ステータスが DELETE_COMPLETE になっていたら、OKです!

最後にロールを削除

スタックが無事に削除できたら、最後にお掃除として、作ったロールを削除しておきましょう。
強力なAdministratorAccessなポリシーを付与しているので、終わったら削除!

まず、ロールに付与したポリシーをデタッチ(外す)します。

aws iam detach-role-policy \
    --role-name example-hogehoge-role \
    --policy-arn arn:aws:iam::aws:policy/AdministratorAccess

そして、ロール自体を削除します。

aws iam delete-role --role-name example-hogehoge-role

これで作業完了です!きれいさっぱり、次の作業に移れますね。

Let's Happy Coding!

Discussion