在aws_api_gateway_deployment
的Terraform文档中,它说:
注意:取决于您的休息区中是否包含aws_api_gateway_integration api(取决于aws_api_gateway_method)。为了避免种族 条件,您可能需要添加一个显式的depends_on = [“ aws_api_gateway_integration.name”]。
我的aws_api_gateway_deployment
资源位于根模块中,但是大多数aws_api_gateway_integration
是在子模块(这是我创建的本地模块)中创建的。
我的理解是您不能从模块中导出资源。
文件夹结构为:
- main.tf <-- contains the aws_api_gateway_rest_api and aws_api_gateway_deployment and uses the service_func_lambda module multiple times
- modules/
- service_func_lambda/
- main.tf <-- contains the aws_api_gateway_integration and other bits such as aws_api_gateway_method and aws_api_gateway_resource
如何引用从调用根模块在模块内部创建的aws_api_gateway_integration
?
答案 0 :(得分:1)
您不能依赖另一个模块内的资源。您可以通过引用该模块的输出 在整个模块上创建隐式依赖项。
我认为您可以为此使用null_resource
(尽管可能有更好的方法)。这样创建一个空资源,然后让您的aws_api_gateway_deployment
依赖于它:
resource "null_resource" "depend_on_module" {
triggers {
service_func_lambda_module_output = "${module.service_func_for_lambda.some_output}"
}
}
答案 1 :(得分:1)
因此,最后我使aws_api_gateway_deployment
依赖于整个模块。这似乎工作得很好:
resource "aws_api_gateway_deployment" "api_gw_deploy" {
depends_on = [
"module.user_func_list",
"module.user_func_create",
"module.resource_func_list",
]
rest_api_id = "${aws_api_gateway_rest_api.main_api_gw.id}"
stage_name = "live"
}