Terraform不同路径资源如何配置depends_on跨文件依赖关系
Terraform 跨目录资源依赖引用方法
首先明确:Terraform 不支持直接跨不同模块目录引用资源,你当前目录中example是独立的 Terraform 配置目录,根目录是被调用的模块,需要通过模块输出+模块引用的方式传递依赖,操作步骤如下:
- 第一步:在根目录新增
outputs.tf文件(如果已有则直接追加),把需要被外部依赖的资源暴露为模块输出,示例(假设根目录main.tf中依赖资源为aws_iam_role.app_role):
# 可仅输出整个资源对象供depends_on使用 output "app_role" { value = aws_iam_role.app_role } # 如果需要用到资源属性也可以单独输出对应字段 output "app_role_arn" { value = aws_iam_role.app_role.arn }
- 第二步:在
example/main.tf中先声明对根目录模块的引用:
module "root_module" { source = "../" # 路径指向根目录,即引用根模块 # 这里填写根模块要求传入的所有变量值 }
- 第三步:在
example目录下的资源depends_on参数中直接引用模块输出的资源即可:
resource "aws_s3_bucket_policy.example_policy" "this" { # 其他资源配置 depends_on = [module.root_module.app_role] }
注意:如果你只是在资源参数中用到根模块资源的属性,不需要显式写
depends_on,Terraform 会自动识别隐式依赖:resource "aws_iam_role_policy_attachment.example_attach" "this" { role = module.root_module.app_role.name policy_arn = "arn:aws-cn:iam::aws:policy/AdministratorAccess" }
内容的提问来源于stack exchange,提问作者Alex-
相关产品推荐
相关产品推荐

