【问题标题】:How to create roles in terraform如何在 terraform 中创建角色
【发布时间】:2018-10-19 22:21:05
【问题描述】:

我想使用 terraform 创建一个 aws_iam_role,但在运行 terraform apply后,我收到以下错误消息: aws_iam_role.role: Error Updating IAM Role (edb_eb_role) Assume Role Policy: MalformedPolicyDocument: Has prohibited field Resource

这是我的政策:

resource "aws_iam_role" "role" {
name = "edb_eb_role"

  assume_role_policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Effect": "Allow",
      "Sid": ""
    },
    {
        "Action": [
            "logs:*"
        ],
        "Effect": "Allow",
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": [
            "lambda:InvokeFunction"
        ],
        "Resource": [
            "*"
        ]
    }
  ]
}
EOF
}

我做错了什么?我也尝试只对 Principals 执行此操作,但随后我收到消息说“Principals”也不被禁止?

【问题讨论】:

  • AssumeRole 不能直接拥有策略。您需要使用 aws_iam_role_policy_attachment 步骤来执行此操作。
  • 提供指向您对策略 json 的引用的链接。将发布答案。

标签: amazon-web-services terraform amazon-iam


【解决方案1】:

Assume_role_policy 不接受 aws 策略 json 文件。 所以上面的代码不起作用。
有关 aws_iam_role 中的assume_role_policy 的详细说明,请参阅此thread

如下所示更新代码并执行。

variable policy_arn{
    default = "arn:aws:iam::aws:policy/service-role/AWSLambdaRole"
}
resource "aws_iam_role" "edb_role" {
name = "edb_role"

  assume_role_policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Principal": {
        "Service": ["ec2.amazonaws.com" ]
      },
      "Effect": "Allow",
      "Sid": ""
    }
  ]
}
EOF
}


resource "aws_iam_role_policy_attachment" "test-attach" {
    role       = "${aws_iam_role.edb_role.name}"
    policy_arn = "${var.policy_arn}"
}

output "role" {
  value = "${aws_iam_role.edb_role.name}"
}

在这里,我们使用 IAM 的“策略”部分中的 AWSLambdaRole 策略。

  • 使用aws_iam_role_policy_attach向一个角色添加多个策略
  • 使用 aws 提供的默认策略,如上所示。否则要创建新策略,请参阅文档here


【讨论】:

    猜你喜欢
    • 2020-01-06
    • 1970-01-01
    • 2021-12-13
    • 2019-11-17
    • 2020-04-25
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 2013-10-06
    相关资源
    最近更新 更多