【发布时间】:2020-12-08 02:42:13
【问题描述】:
在开发 terraform 模块时,我有时会发现自己需要为相同的资源定义不同的输入变量。例如,现在我的模块需要同一个 AWS/ECS 集群的 NAME 和 ARN,因此,我在模块中定义了两个变量:ecs_cluster_arn 和 ecs_cluster_name。
为了 DRY,如果我可以定义 aws_ecs_cluster 类型的输入变量 ecs_cluster 并在我的模块中使用我需要的任何东西,那就太好了。
我似乎找不到办法做到这一点。有谁知道可以吗?
【问题讨论】:
-
使用
aws_ecs_clusterdata source 阻止您的模块并查找给定名称的 ARN? -
谢谢@ydaetskcoR。老实说,我没想过,我想这可能会奏效。不过我觉得有点脏,为什么要再次请求获取我已经拥有的信息?
-
我个人在内部模块中大量使用这样的数据源。对于公共模块,一般建议是允许人们将事物作为 ID 传入,并让他们负责从数据源、资源或硬编码 ID 传入以实现灵活性。对于内部使用,尽管我只关心使模块用户的界面尽可能简单,为此我可以询问资源的名称并使用数据源来获取模块中的更多信息。
标签: terraform terraform-provider-aws