Terraform AWS 提供商数据源 aws_iam_role 所需的参数“名称”是不是需要角色的路径?
Posted
技术标签:
【中文标题】Terraform AWS 提供商数据源 aws_iam_role 所需的参数“名称”是不是需要角色的路径?【英文标题】:Does the Terraform AWS provider data source aws_iam_role required argument "name" require the path to the role?Terraform AWS 提供商数据源 aws_iam_role 所需的参数“名称”是否需要角色的路径? 【发布时间】:2022-01-09 10:04:38 【问题描述】:Documentation for this data source
假设我在两个路径中有两个名为 s-s-r-lambda
的角色,/path-a/
和 /path-b/
如果我们这样声明数据源:
data "aws_iam_role" "example"
name = "s-s-r-lambda"
它怎么知道自己是哪个角色?
我是否需要在角色名称中包含路径,例如:/path-a/s-s-r-lambda
?
文档声明path
属性可以被引用,但它不是参数。
aws_iam_policy
数据源确实允许您指定路径前缀,这就是我觉得这令人困惑的原因。
【问题讨论】:
【参考方案1】:IAM 角色名称在每个账户中必须是唯一的,因此我的示例无效,两个角色永远不会具有相同的名称。
我通过尝试在一个 Terraform 项目中创建两个名称相同但路径不同的角色来得出这个结论。失败了。
错误:创建 IAM 角色 (s-s-r-lambda) 时出错:EntityAlreadyExists:名称为 s-s-r-lambda 的角色已存在。状态码:409
这就是为什么在为他们使用数据源时从不需要路径的原因。
【讨论】:
请注意,IAM 文档明确指出,相同的名称可以存在于不同的路径中。您在此处观察到的是 AWS API 中的一个错误。以上是关于Terraform AWS 提供商数据源 aws_iam_role 所需的参数“名称”是不是需要角色的路径?的主要内容,如果未能解决你的问题,请参考以下文章
Terraform:传递 AWS 系统管理器参数存储变量时,Terraform AWS 提供商凭证无效
如何使用 Terraform 配置 AWS EKS 自动扩缩器?
在 AWS 中使用 Terraform 创建角色,并附加 SAML 提供程序