【问题标题】:Detach a policy from an IAM user using terraform使用 terraform 从 IAM 用户分离策略
【发布时间】:2021-05-21 18:11:01
【问题描述】:

以下代码将现有 IAM 策略“policy_1”附加到现有 IAM 用户“user_1

resource "aws_iam_user_policy_attachment" "test-attach" {
  user       = "user_1"
  policy_arn = "arn:aws:iam::aws:policy/policy_1"

}

我需要有关如何使用 Terraform 从“user_1”中删除相同策略的帮助。谢谢!

我尝试了另一种 "aws_iam_user_policy_detachment" ,但不存在这样的功能。我知道这可以通过 AWS CLI 完成,只需使用 detach-user-policy,但我们要求它通过 Terraform 完成。

【问题讨论】:

  • 删除该语句将 terraform 导致分离它。 Terraform 是声明性的 - 您编写的内容将被部署,您从代码中删除某些内容,然后将创建/删除/更新旧描述和新描述之间的差异。
  • 换句话说,如果您添加 aws_iam_user_policy_attachment,则现在将附加一个策略,如果您删除 aws_iam_user_policy_attachment,则以前附加的策略现在将被分离。显式声明分离是没有意义的。
  • 我明白你在说什么,但我现在不清楚如何remove。你能回答command吗?我执行附加 terraform apply 的机器是否存在依赖关系? detach 是否必须来自同一台机器?
  • 您知道 terraform 状态文件,其中 terraform 存储其状态,也就是它控制和部署的资源以及配置?
  • 我只是做了一些没有深入的初步研究,但我得到了附加工作,所以认为分离很简单。你认为 Terraform 是这个操作的错误选择吗? AWS CLI 是更好的选择吗?我们一直通过 GUI 添加和删除用户,并希望避免这种情况,因为它会导致疏忽。

标签: amazon-web-services amazon-ec2 terraform amazon-iam


【解决方案1】:

Terraform 创建资源,然后对其进行管理。当您运行terraform planterraform apply 时,terraform 会查找您描述的状态与现有状态之间的差异,并根据需要添加或删除资源。

您可以通过三种方式删除它。

简单的方法

如果您有一个包含此资源的有效状态文件,只需删除代码并运行terraform apply

艰难的道路

如果您没有管理此资源的状态文件,则需要创建一个。使用terraform import 开始管理此资源。

terraform import aws_iam_user_policy_attachment.test-attach user_1/arn:aws:iam::aws:policy/policy_1

terraform 导入所需的 ID 取决于资源 - check your provider's documentation 以了解如何找到它。

然后删除定义aws_iam_user_policy_attachment.test-attach的代码,并运行terraform apply以创建没有资源的新状态。

极其简单的方法

terraform destroy 将删除本地状态文件中的每个项目。这是清理实验的好方法。

【讨论】:

    猜你喜欢
    • 2018-01-11
    • 2020-11-11
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 2020-08-12
    • 2022-01-19
    • 2021-06-04
    • 2014-07-05
    相关资源
    最近更新 更多