Terraform 如何在';终点';属于';aws#U sns#U主题#U订阅';?
我想为lambda函数名使用一个变量。例如:Terraform 如何在';终点';属于';aws#U sns#U主题#U订阅';?,terraform,Terraform,我想为lambda函数名使用一个变量。例如: 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 =
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\u sns\u主题\u订阅[通过\u sns调用\u lambda\u]: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}"
那么,允许我在这里使用变量的语法是什么呢?这可以在解决一些问题后完成
- 不能在资源名称中使用插值,因此请更改
到硬编码的通用值resource“aws\u lambda\u function”“${var.lambda\u function\u name}”{
资源“aws\u lambda\u函数”“默认”{
- 无法在插值中使用插值,因此请更改
使用上面的endpoint=“${aws\u lambda\u函数。${var.lambda\u rotate\u db\u函数\u name}.arn}”
的通用名称default
endpoint=“${aws\u lambda\u function.default.arn}”
变量“lambda\u函数\u名称”{
default=“我的项目lambda func”
}
资源“aws_lambda_函数”“默认”{
filename=“${data.archive\u file.package zip.output\u path}”
function\u name=“这是一个测试”
handler=“lambda\u函数。简单\u处理程序”
source_code_hash=“${data.archive_file.package zip.output_base64sha256}”
runtime=“python3.7”
tags=“${var.tags}”
超时=300
}
资源“aws\u sns\u主题订阅”“呼叫\u lambda\u由\u sns”{
topic_arn=“${module.myproject_event_sns.arn}”
协议=“lambda”
endpoint=“${aws\u lambda\u function.default.arn}”
}