При создании роли кросс-аккаунта с использованием ошибки получения terraform Ошибка: Ошибка при запросе пользовательского ввода: Невозможно проанализировать значение для переменной policy_arns - PullRequest
0 голосов
/ 02 мая 2019

Пытаюсь создать роль кросс-аккаунта, используя terraform, давая имя политики в качестве ошибки при получении ввода Ошибка: Ошибка при запросе ввода пользователя: невозможно проанализировать значение для переменной policy_arns

data "aws_iam_policy_document" "cross_account" {
  statement {
    effect = "Allow"

    principals {
      type        = "AWS"
      identifiers = ["${var.principal_arns}"]
    }

    actions = ["sts:AssumeRole"]
  }
}

resource "aws_iam_role" "cross_account_role" {
  name               = "${var.name}"
  assume_role_policy = "${data.aws_iam_policy_document.cross_account_assume_role_policy.json}"
}

resource "aws_iam_role_policy_attachment" "cross_account_role" {
  count = "${length(var.policy_arns)}"

  role       = "${aws_iam_role.cross_account_role.name}"
  policy_arn = "${element(var.policy_arns, count.index)}"
}
variable "name" {
  type        = "string"
  description = "Name of the role being created."
}

variable "principal_arns" {
  type        = "list"
  description = "ARNs of accounts, groups, or users with the ability to assume this role."
}

variable "policy_arns" {
  type        = "list"
  description = "List of ARNs of policies to be associated with the created IAM role"
}

1 Ответ

0 голосов
/ 02 мая 2019

Переменные, передаваемые либо с -var foo=bar флагом командной строки, либо в качестве переменной среды TF_VAR_foo=bar, могут быть только литеральными строками :

  • Указанные переменныечерез флаг командной строки -var будут литеральные строки «истина» и «ложь», поэтому следует позаботиться о том, чтобы явно использовать «0» или «1».

  • Переменные, указанные с помощьюпеременные окружения TF_VAR_ будут литеральными строковыми значениями, точно так же как -var.

Если вы хотите использовать переменные списка, вам нужно либо определить их заранеевремя в terraform.tfvars файле или другом файле vars или вы можете использовать функцию split() , чтобы взять отдельную строку и превратить ее в список:

variable "string_list" {
  type = "string"
}

locals {
  list_list = "${split(",", var.string_list)}"
}

output "list_list" {
  value = ["${local.list_list}"]
}
...