您能帮我解决通过Terraform获取AWS IAM角色名称的问题吗?
简而言之,我之前创建了一个角色,名称为: test-platform-testenv-eks2020041915272704860006 。 不同的角色具有不同的名称,其名称中带有变量(平台/堆栈名称)。 现在,我有一个Terraform文件,该文件必须获取此IAM角色的名称(以将策略附加到该角色)。 我可以使用角色的确切名称来做到这一点。 但是如何在没有硬代码的情况下做到这一点(知道标签和该角色的其他一些参数)呢?
非常感谢。
答案 0 :(得分:1)
您可以将角色名称存储在AWS Systems Manager Parameter Store resource中,作为原始堆栈的一部分。
随后的堆栈可以使用aws_ssm_parameter
data source从参数存储中选择角色名称,如以下代码片段所示:
data "aws_ssm_parameter" "role" {
name = "/path/to/role/name"
}
resource "aws_iam_policy_attachment" "policy-attachment" {
roles = ["${data.aws_ssm_parameter.role.value}"] # pull value from parameter store
...
}
答案 1 :(得分:1)
我有一个解决方案。也许不是最好的,但是对我有用。所以,
data "aws_instance" "eks_node" {
filter {...}
}
data "aws_iam_instance_profile" "eks_node_profile" {
name = data.aws_instance.eks_node.iam_instance_profile
}
resource "aws_iam_role_policy_attachment" "attach_policy_to_eks" {
policy_arn = aws_iam_policy.created_policy_eks.arn
role = data.aws_iam_instance_profile.eks_node_profile.role_name
}
谢谢大家的帮助。