Создание сервисной роли AWS с помощью Terraform - PullRequest
0 голосов
/ 08 июля 2019

Я не понимаю, как настроить политики ролей с помощью Terraform для AWS.

Перво-наперво:

$ terraform version
Terraform v0.12.0
+ provider.aws v2.18.0

Теперь мне нужно создать сервисную роль, и, насколько я понял, сначала мне нужно создать роль с помощью aws_iam_role и использовать aws_iam_role_policy_attachment для присоединения политики CodeDeploy AWSCodeDeployRole.

resource "aws_iam_role" "codedeploy_service_role" {
  name = "CodeDeployServiceRole"
}
resource "aws_iam_role_policy_attachment" "codedeploy_service_role_policy_attach" {
   role       = "${aws_iam_role.codedeploy_service_role.name}"
   policy_arn = "arn:aws:iam::aws:policy/service-role/AWSCodeDeployRole"
}

Но это не работает, потому что ресурс aws_iam_role не имеет обязательного поля "accept_role_policy". А поле "accept_role_policy" принимает только поля политики в формате JSON. Я не понимаю, почему я не могу создать роль без настройки политик во время инициализации этой роли.

1 Ответ

1 голос
/ 08 июля 2019

Исправление, как я неправильно прочитал ваш вопрос:

Вы можете создать iam_policy, как показано ниже:

data "aws_iam_policy" "codedeploy_service_policy" {
  arn = "arn:aws:iam::aws:policy/service-role/AWSCodeDeployRole"
}

Тогда в приложении к политике:

resource "aws_iam_role_policy_attachment" "codedeploy_service_role_policy_attach" {
   role       = "${aws_iam_role.codedeploy_service_role.name}"
   policy_arn = "${data.aws_iam_policy.codedeploy_service_policy.arn}"
}

AWS iam роль с политикой предполагаемой роли (с доверительными отношениями) ** при создании роли в AWS вы ДОЛЖНЫ предоставить доверительные отношения (сервис, который будет использовать эта конкретная роль).

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