🌊
CloudFormationスタック削除のエラー(Role ... is invalid or cannot be assumed)の対応
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