Terraform 在销毁时强制删除 IAM 组

Terraform force delete IAM group on destroy

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

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 时使用空资源进行删除,
类似于:

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/

Any AWS customer can use IAM. The service is offered at no additional charge. You will be charged only for the use of other AWS services by your users.