【发布时间】:2020-09-01 20:30:47
【问题描述】:
我想将托管 IAM 策略 ARN(如 AmazomS3FullAccess)和内联/自定义 IAM 策略(在 terraform 文件中以 JSON 编写)附加到单个 IAM 角色。
通过使用aws_iam_role_policy_attachment,我只能附加一个策略,如何附加两个?
variables.tf
------------
variable "iam_policy_arn" {
description = "IAM Policy to be attached to role"
type = list(string)
default = ["arn:aws:iam::aws:policy/AWSLambdaFullAccess", "arn:aws:iam::aws:policy/AmazonSSMFullAccess", "arn:aws:iam::aws:policy/AmazonSageMakerFullAccess"]
}
main.tf
-------
resource "aws_iam_role" "test_role" {
name = "test_role"
assume_role_policy = <<-EOF
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal":{
"Service":"ec2.amazonaws.com"
},
"Action":"sts:AssumeRole"
},
{
"Effect":"Allow",
"Principal":{
"Service":"sagemaker.amazonaws.com",
"AWS":"*"
},
"Action":"sts:AssumeRole"
}
]
}
EOF
}
resource "aws_iam_role_policy_attachment" "role_policy_attachment" {
role = "${aws_iam_role.test_role.name}"
count = "${length(var.iam_policy_arn)}"
policy_arn = "${element(var.iam_policy_arn,count.index)}"
}
resource "aws_iam_instance_profile" "test_profile" {
name = "test_profile"
role = "${aws_iam_role.test_role.name}"
}
现在我想为角色附加如下自定义策略
resource "aws_iam_role_policy" "test_policy" {
name = "test_policy"
role = aws_iam_role.test_role.id
policy = <<-EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:Describe*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
EOF
}
如何将托管 IAM 策略和自定义 IAM 策略附加到 IAM 角色?
【问题讨论】:
-
您能否分享您目前拥有的代码以及您遇到的任何错误,为什么要尝试添加额外的策略?
-
请检查更新后的代码@Marcin
-
您可以在您的策略的操作块中定义多个操作。这就是你所追求的吗?
-
我想使用
aws_iam_role_policy_attachment将test_policy附加到test_role -
您可以为您的策略创建一个单独的模板文件,然后将其中的两个操作添加到文件中。看看这个medium.com/@mitesh_shamra/…
标签: terraform terraform-provider-aws