list - Terraform 不起作用输入和环境变量
问题描述
我有一个glue job
在aws
. 我做了一个循环。
在variables.tf
variable "list_of_jobs" {
type = list(string)
default = ["myjob1","myjob2","myjob3"]
}
在glue.tf
resource "aws_glue_job" "this" {
for_each = toset(var.list_of_jobs)
name = each.value
role_arn = var.role_arn
command {
name = "pythonshell"
python_version = 3
script_location = "s3://mybucket/${each.value}/run.py"
}
}
在main.tf
variable "region" {}
variable "list_of_jobs" {}
module "my_glue" {
source = "../terraform-glue"
region = var.region
list_of_jobs = var.list_of_jobs
}
这个循环工作正常,glue jobs
执行后我有 3 个terraform apply
. 问题,当我试图使:
export TF_VAR_list_of_jobs='["myjob1","myjob2","myjob3"]'
在这种情况下,当我制作时terraform apply
,我会收到以下信息:
Error: Invalid function argument
on ../terraform-glue/glue.tf line 2, in resource "aws_glue_job" "this":
2: for_each = toset(var.list_of_jobs)
|----------------
| var.list_of_jobsis "[\"myjob1\",\"myjob2\",\"myjob3\"]"
Invalid value for "v" parameter: cannot convert string to set of any single
type.
输入变量,也不起作用。唯一的变量来自variables.tf
。请问你能帮帮我吗 ?我试图在整个晚上解决这个问题。
解决方案
它不起作用,因为如果要通过 env 变量传递复杂变量,则需要为复杂变量提供类型约束:
variable "list_of_jobs" {
type = list(string)
default = ["myjob1","myjob2","myjob3"]
}
推荐阅读
- python - 网页抓取后将一种表数据转换为整数用于 if/else 语句
- elasticsearch - Elasticsearch:对内部点击进行排序
- angular - Angular updateTag 函数不会更新源视图 HTML 中的元标记
- sql - Postgresql/SQL 基于多列值插入表
- python - 如何在 Mac OS 上安装 pykaldi?
- python-3.x - 想要从字符串列创建列表
- spring - 带有 Rest API 404 的 Spring Boot
- sql - 如果发生更改,检查数据并禁用以前的记录并插入新的
- twitter-bootstrap-3 - FontAwesome 5 在 SmartAdmin 模板中使用 Bootstrap 复选框
- c++ - 对 std::runtime_error::operator= 的未定义引用