Fre*_*sen 7 amazon-web-services terraform terraform-provider-aws
地形版本:12
\n我们有一个遗留的、不受 Terraform IAM 角色管理的问题,我想从一个aws_iam_policy_attachment块中引用该角色,并且我尝试了以下操作:
resource "aws_iam_policy_attachment" "example-attach" {\n name = "example-attach"\n\n roles = [ \n aws_iam_role.managed-role.name, \n "arn:aws:iam::1234567890:role/unmanaged-role"\n ]\n\n policy_arn = aws_iam_policy.example-policy.arn\n}\nRun Code Online (Sandbox Code Playgroud)\n试运行效果很好,但应用 TF 时说:
\n\n\n\xe2\x80\x93 ValidationError: 指定的 roleName 值无效。它必须仅包含字母数字字符和/或以下内容:+=,.@_-
\n
有没有办法可以只引用非托管角色而不在 TF 中定义它?或者是否有某种非破坏性的方式来声明它,而不会改变与非托管角色有关的任何内容?
\nMar*_*cin 10
在您的 中roles,您提供的是角色 ARN,而不是角色名称。
因此,您应该使用其名称而不是 ARN:
resource "aws_iam_policy_attachment" "example-attach" {
name = "example-attach"
roles = [
aws_iam_role.managed-role.name,
"unmanaged-role"
]
policy_arn = aws_iam_policy.example-policy.arn
}
Run Code Online (Sandbox Code Playgroud)
您还可以使用data_source
data "aws_iam_role" "example" {
name = "unmanaged-role"
}
Run Code Online (Sandbox Code Playgroud)
并在您的资源中引用它:
resource "aws_iam_policy_attachment" "example-attach" {
name = "example-attach"
roles = [
aws_iam_role.managed-role.name,
data.aws_iam_role.example.name
]
policy_arn = aws_iam_policy.example-policy.arn
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6123 次 |
| 最近记录: |