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.
我使用以下代码片段通过 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.