Terraform - интерполяция значений переменных - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь вызвать переменную из нижеприведенного списка, но в данный момент мне приходится вводить ее вручную, что немного застряло.Как заставить Terraform автоматически вставить значение переменной.

resource "aws_iam_role" "aws-admin-role" {
  name        = "AWS-AdminAccess"
  description = "Administration of Account from AWSxx"

  assume_role_policy = <<EOF
{  
  "Version":"2012-10-17",
  "Statement":[  
    {  
      "Effect":"Allow",
      "Principal":{  
        "AWS":"arn:aws:iam::INSERTACCOUNTMANUALLY:root"
      },
      "Action":"sts:AssumeRole",
      "Condition":{  

      }
    }
  ]
}
EOF
}

1 Ответ

0 голосов
/ 22 мая 2018

Terraform позволяет вам интерполировать известные ему значения, такие как переменные или выходные данные из источников данных, ресурсов или модулей.

В вашем случае вы можете использовать aws_caller_identity источник данных чтобы динамически получить идентификатор учетной записи вызывающего абонента и вставить его в свою политику IAM с помощью чего-то вроде этого:

data "aws_caller_identity" "current" {}

resource "aws_iam_role" "aws-admin-role" {
  name        = "AWS-AdminAccess"
  description = "Administration of Account from AWSxx"

  assume_role_policy = <<EOF
{  
  "Version":"2012-10-17",
  "Statement":[  
    {  
      "Effect":"Allow",
      "Principal":{  
        "AWS":"arn:aws:iam::${data.aws_caller_identity.current.account_id}:root"
      },
      "Action":"sts:AssumeRole",
      "Condition":{  

      }
    }
  ]
}
EOF
}

Если вместо этого вы хотите использовать переменную для ссылки на другую учетную запись AWS, которую вы можете сделатькак то так:

variable "account_id" {}

resource "aws_iam_role" "aws-admin-role" {
  name        = "AWS-AdminAccess"
  description = "Administration of Account from AWSxx"

  assume_role_policy = <<EOF
{  
  "Version":"2012-10-17",
  "Statement":[  
    {  
      "Effect":"Allow",
      "Principal":{  
        "AWS":"arn:aws:iam::${var.account_id}:root"
      },
      "Action":"sts:AssumeRole",
      "Condition":{  

      }
    }
  ]
}
EOF
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...