Terraform在销毁时强制删除IAM组



我使用以下代码片段通过terraform创建了一个IAM组。后来,我根据需求手动将用户分配到这个组中——因此,这些组关联是在地形之外管理的。

resource "aws_iam_group" "eks_user" {
name          = "eks_user"
path          = "/eks/user/"
force_destroy = true
}

现在我想在一天结束时使用terraform destroy删除该组以节省成本,但它失败了,因为该组仍有分配的用户。即使资源有关联,我怎么还能删除它们?

...
module.main.module.vpc.module.vpc.aws_vpc.this[0]: Destruction complete after 0s
module.main.module.eks.module.eks.aws_iam_role.cluster[0]: Destruction complete after 2s
╷
│ Error: Error deleting IAM Group eks_user: DeleteConflict: Cannot delete entity, must remove users from group first.
│       status code: 409, request id: 479d0bfb-b099-4d4a-9753-d1c7601d142e
│
│
╵

您可以使用AWS CLI删除这些用户:
remove-user-from-group
https://docs.aws.amazon.com/cli/latest/reference/iam/remove-user-from-group.html

在Terraform上,当您调用destroy时,您可以使用null资源来进行删除,
类似于:

resource "null_resource" "remove_users" {
depends_on  = ["aws_iam_group.your_group"]
provisioner "local-exec" {
when    = "destroy"
command = "aws iam remove-user-from-group --user-name Bob --group-name Admins"
}
}

当然,这是一个非常简单的命令
您可能需要多次删除这些或循环删除所有


现在,如果您只这样做是为了降低成本,
您可能不需要这样做,看来AWS组是免费的
https://aws.amazon.com/iam/faqs/

任何AWS客户都可以使用IAM。这项服务是免费提供的。您只会因用户使用其他AWS服务而被收取费用。

最新更新