使用标签查找AWS IAM角色

问题描述 投票:0回答:1

能否帮我解决通过terraform获取AWS IAM角色名称的问题?

简单的说,我有一个之前创建的角色名称。test-platform-testenv-eks2020041915272704860006。.不同的角色有不同的名字,名字里有变量(platformstack名字).现在我有一个Terraform文件,必须得到这个IAM角色的名字(要把策略附加到这个角色上).我可以用角色的准确名字来做.但是如何在没有硬代码的情况下做(知道标签和这个角色的一些其他参数)?

非常感谢。

amazon-web-services terraform amazon-iam lookup aws-eks
1个回答
0
投票

你可以将角色名存储在一个 AWS系统管理器参数存储资源 作为原始堆栈的一部分。

后续的堆栈可以从参数存储中使用 aws_ssm_parameter 数据源 就像下面这个片段。

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
  ...
}

0
投票

我有一个解决方案。也许不是最好的,但对我来说是有效的。所以。

  1. 获取创建的EKS节点的iam_instance_profile。数据 "aws_instance",例如。
data "aws_instance" "eks_node" {
  filter {...}
}
  1. 获取之前创建的EKS节点的角色名称,使用: 数据 "aws_iam_instance_profile" (来自步骤 1 中定义的 aws_instance),例如:。
data "aws_iam_instance_profile" "eks_node_profile" {
  name = data.aws_instance.eks_node.iam_instance_profile
}
  1. 将新创建的策略附加到之前定义的EKS角色上,例如:
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
}

谢谢大家的帮助

© www.soinside.com 2019 - 2024. All rights reserved.