Terraform中能否在depends_on属性使用资源列表?写法是否合规?
关于Terraform depends_on作用于资源列表的问题解答
你的写法完全合规,且会等待所有实例
当在depends_on中直接引用通过count/for_each创建的资源集合(比如aws_dms_replication_instance.dms_instances)时,Terraform会自动识别并等待该集合中的所有实例创建完成,才会启动当前资源的创建流程。这种写法是Terraform原生支持的标准用法,无需额外遍历操作。为什么用concat()会报错?
concat()要求拼接的所有列表元素类型一致,但资源集合是对象列表,若你试图把它和其他类型(比如单个资源实例、字符串)拼接,会触发类型不匹配错误。实际上depends_on本身支持直接放入多个资源/资源集合,完全不需要用concat合并。比如需要同时依赖多个资源集合时,直接写:depends_on = [ aws_dms_replication_instance.dms_instances, aws_sns_topic.dms_notification_topic # 另一个资源或资源集合 ]Terraform会自动处理所有依赖项的就绪状态。
最优方案就是你当前的写法
直接引用资源集合的方式简洁且不易出错,是Terraform推荐的依赖资源集合的方式。不需要额外遍历每个实例(比如用[for ri in ... : ri]),因为Terraform会自动展开集合中的所有实例作为依赖项。
内容的提问来源于stack exchange,提问作者Ross Bush
相关产品推荐
相关产品推荐

