Terraform:将预先存在的aws策略附加到预先存在的角色



我不需要使用aws控制台简单地将几个预先存在的策略附加到一个预先存在的角色上,而是需要通过Terraform在一个模块中为需要perms的特定系统执行此操作。

不过我做这件事运气不太好?

variables.tf
variable "masterrole" {
description = "role already present within the cn-tio-tooling-acc"
default = "arn:aws-cn:iam::12345678910:role/Master"
}
variable "policies" {
description = "policies already present within the cn-tio-tooling-acc"
default = "arn:aws-cn:iam::12345678910:policy/Source-1,arn:aws-cn:iam::351767606935:policy/Source-2"
}

data.tf<--引用帐户中已经存在的角色和策略数据

data "aws_iam_role" "masterrole" {
name = "Master"
}
data "aws_iam_policy" "policies" {
arn = var.policies
}

IAM.tf

resource "aws_iam_role_policy_attachment" "Sources" {
role       = aws_iam_role.masterrole.name
policy_arn = aws_iam_policy.policies.arn
}

这里可能有一些非常简单的事情,但为什么我要从"计划"结果中得到以下内容?

错误:引用未声明的资源在cn_cpm_iam.tf的第3行;aws_iam_role_policy_attachment"quot;来源":3:角色=aws_iam_role.masterrole.name被管理的资源";aws_iam_role"主角色";尚未在中声明根模块

错误:引用未声明的资源在cn_cpm_iam.tf第4行;aws_iam_role_policy_attachment"quot;来源":4:policy_arn=aws_iam_policy.cmpolicies.arn被管理的资源";aws_iam_policy"政策;尚未在中声明根模块

在地形中引用数据源时,需要在它们前面加上data.。所以尝试使用

resource "aws_iam_role_policy_attachment" "Sources" {
role       = data.aws_iam_role.masterrole.name
policy_arn = data.aws_iam_policy.policies.arn
}

但是,由于您已经知道名称和ARN,您可以在不查询数据源的情况下使用它们:

resource "aws_iam_role_policy_attachment" "Sources" {
role       = "Master"
policy_arn = var.policies
}

如果我在这里遗漏了什么,请告诉我;(

相关内容

  • 没有找到相关文章

最新更新