Как создавать роли в терраформе - PullRequest
0 голосов
/ 19 октября 2018

Я хотел бы создать aws_iam_role с terraform, но после запуска 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
}

Что сделалЯ неправ?Я также пытался сделать это только с Принципалами, но потом я получаю сообщение, что "Принципы" также не запрещены?

1 Ответ

0 голосов
/ 19 октября 2018

Assume_role_policy не принимает файлы json политики aws. Таким образом, приведенный выше код не работает.Для подробного объяснения accept_role_policy в aws_iam_role см. 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}"
}

Здесь мы используем политику AWSLambdaRoleприсутствует в разделе политики IAM.

  • Добавьте несколько политик к роли, используя aws_iam_role_policy_attach
  • Используйте политики по умолчанию, предоставляемые aws, как показано выше.Иначе, чтобы создать новую политику, см. Документы здесь

...