使用标签查找 AWS IAM 角色
Lookup AWS IAM role using tags
你能帮我解决通过 terraform 获取 AWS IAM 角色名称的问题吗?
简单地说,我有一个以前创建的角色,名称为:test-platform-testenv-eks2020041915272704860006。
不同的角色有不同的名称,名称中有变量(platform/stack 名称)。
现在我有一个 Terraform 文件,它必须获取此 IAM 角色的名称(以将策略附加到此角色)。
我可以使用角色的确切名称来完成。
但是如果没有硬代码(知道这个角色的标签和其他一些参数)怎么办?
非常感谢。
您可以将角色名称存储在 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
...
}
我有办法了。也许不是最好的,但它对我有用。所以,
- 使用数据"aws_instance"获取创建的EKS节点的iam_instance_profile,例如:
data "aws_instance" "eks_node" {
filter {...}
}
- 使用数据"aws_iam_instance_profile"获取先前创建的EKS节点的角色名称(来自步骤1aws_instance中定义的),例如:
data "aws_iam_instance_profile" "eks_node_profile" {
name = data.aws_instance.eks_node.iam_instance_profile
}
- 将新创建的策略附加到之前定义的 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
}
感谢大家的帮助。
你能帮我解决通过 terraform 获取 AWS IAM 角色名称的问题吗?
简单地说,我有一个以前创建的角色,名称为:test-platform-testenv-eks2020041915272704860006。 不同的角色有不同的名称,名称中有变量(platform/stack 名称)。 现在我有一个 Terraform 文件,它必须获取此 IAM 角色的名称(以将策略附加到此角色)。 我可以使用角色的确切名称来完成。 但是如果没有硬代码(知道这个角色的标签和其他一些参数)怎么办?
非常感谢。
您可以将角色名称存储在 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
...
}
我有办法了。也许不是最好的,但它对我有用。所以,
- 使用数据"aws_instance"获取创建的EKS节点的iam_instance_profile,例如:
data "aws_instance" "eks_node" {
filter {...}
}
- 使用数据"aws_iam_instance_profile"获取先前创建的EKS节点的角色名称(来自步骤1aws_instance中定义的),例如:
data "aws_iam_instance_profile" "eks_node_profile" {
name = data.aws_instance.eks_node.iam_instance_profile
}
- 将新创建的策略附加到之前定义的 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
}
感谢大家的帮助。