我使用以下代码片段通过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服务而被收取费用。