Я хочу использовать переменную для имени лямбда-функции. Например:
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}"
Так какой же синтаксис позволяет мне использовать переменную здесь?