Closed6

terraformでIAMユーザを削除できなかった

not75743not75743

terraformでIAMユーザを削除しようとしたところ

aws_iam_user.user1: Destroying... [id=user1]
aws_iam_user.user2: Destroying... [id=user2]
╷
│ Error: deleting IAM User user1: DeleteConflict: Cannot delete entity, must delete access keys first.
│ 	status code: 409, request id: <id>
│ 
│ 
╵
╷
│ Error: deleting IAM User user2: DeleteConflict: Cannot delete entity, must delete access keys first.
│ 	status code: 409, request id: <id>

このように出力されて削除できなかった。

tfファイルはこんな感じ

resource "aws_iam_user" "user1" {
  name          = "user1"
}
not75743not75743

解決

このようにforce_destroyをtrueにするとdestroyが出来るようになった
(一度applyで適用し、再度destroy)

resource "aws_iam_user" "user1" {
  name          = "user1"
  force_destroy = true
}
not75743not75743

force_destroyを詳しく見てみる

ドキュメントより引用

force_destroy - (Optional, default false) When destroying this user, destroy even if it has non-Terraform-managed IAM access keys, login profile or MFA devices. Without force_destroy a user with non-Terraform-managed access keys and login profile will fail to be destroyed.

  • デフォルトでfalse
  • trueにすると、terraform管理外のリソースも削除する

ログインプロファイルがterraform管理外であったため、削除できなかった...っぽい...?

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_user

not75743not75743

またこのように書かれていました

NOTE: If policies are attached to the user via the aws_iam_policy_attachment resource and you are modifying the user name or path, the force_destroy argument must be set to true and applied before attempting the operation otherwise you will encounter a DeleteConflict error. The aws_iam_user_policy_attachment resource (recommended) does not have this requirement.

  • aws_iam_policy_attachmentに変更を加える場合、force_destroyが必要
    • 記載がないとDeleteConflict error.
  • aws_iam_user_policy_attachmentの場合は起こらない

aws_iam_user_policy_attachmentを使えということですね

not75743not75743

でも

aws_iam_user_policy_attachment使ってるんだよな

resource "aws_iam_user_policy_attachment" "attach1" {
  user       = aws_iam_user.user1.name
  policy_arn = data.aws_iam_policy.S3FullAccess.arn
}
not75743not75743

不審に思ってもう一度apply、destoryを実行したら問題なく削除出来た。
なんだったんだろう

このスクラップは2023/05/25にクローズされました