Как использовать переменную в интерполированной строке для конечной точки aws_sns_topic_subscription? - PullRequest
0 голосов
/ 02 июля 2019

Я хочу использовать переменную для имени лямбда-функции. Например:

variable "lambda_function_name" {
  default = "my-project-lambda-func"
}


resource "aws_lambda_function" "${var.lambda_function_name}" {
  filename         = "${data.archive_file.package-zip.output_path}"
  function_name    = "this_is_a_test"
  handler          = "lambda_function.simple_handler"
  source_code_hash = "${data.archive_file.package-zip.output_base64sha256}"
  runtime          = "python3.7"
  tags             = "${var.tags}"
  timeout          = 300
}

Я хочу использовать переменную для создания подписки SNS:

resource "aws_sns_topic_subscription" "call_lambda_by_sns" {
  topic_arn = "${module.myproject_event_sns.arn}"
  protocol  = "lambda"
  endpoint  = "${aws_lambda_function.${var.lambda_rotate_db_function_name}.arn}"
}

Выдает эту ошибку, когда я запускаю terraform validate

Ошибка чтения конфигурации для aws_sns_topic_subscription [call_lambda_by_sns]: ошибка синтаксического анализа в 1:23: ожидается "}", но обнаружена неверная последовательность "$"

Итак, я попробовал альтернативу:

resource "aws_sns_topic_subscription" "call_lambda_by_sns" {
  topic_arn = "${module.myproject_event_sns.arn}"
  protocol  = "lambda"
  endpoint  = "aws_lambda_function.${var.lambda_rotate_db_function_name}.arn"
}

Теперь строка конечной точки вызывает эту ошибку:

Error: Error parsing address 'aws_lambda_function.${var.lambda_rotate_db_function_name}': invalid resource address "aws_lambda_function.${var.lambda_rotate_db_function_name}"

Так какой же синтаксис позволяет мне использовать переменную здесь?

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