繁体   English   中英

Terraform:如何检查另一个资源是否可用

[英]Terraform: how can I check if another resource is available

我有一个 Terraform 设置,基本上如下所示:

Project
├──common
│  └─── cloudfront.tf
│  └─── lambda1.tf
│  └─── lambda2.tf
│
├──staging
│  └─── main.tf
│  └─── symlink to ../common/cloudfront.tf
│  └─── symlink to ../common/lambda2.tf
│
└──prod
   └─── main.tf
   └─── symlink to ../common/cloudfront.tf
   └─── symlink to ../common/lambda1.tf
   └─── symlink to ../common/lambda2.tf

因此,为了能够重用不同的文件进行暂存和/或生产。

我现在遇到的问题是,在此示例中,暂存只有 lambda2.tf 而没有 lambda1.tf,但 cloudfront.tf 必须根据 lambda1.tf 中的资源是否“可用”有条件地创建动态块.

我试过这样的事情(有和没有try() ):

dynamic "blockname" {
    for_each = try( aws_lambda_function.myname, null ) != null ? [1] : []
    # ...
}

但正如文档中所说:

try function 不会捕获与可能在动态表达式评估之前无效的构造相关的错误,例如格式错误的引用或对尚未声明的顶级 object 的引用

我不想添加额外的变量来切换动态块的创建。
有没有办法实现我正在尝试的目标?

您必须创建自定义数据源来查询资源的预先存在状态。 否则,你不能在 TF 中这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM