在aws_api_gateway_deployment
的Terraform文档中说:
注意:取决于在您的其余 API(反过来取决于AWS_API_GATEWAY_METHOD)。避免比赛 条件您可能需要添加显式依赖性= = [" aws_api_gateway_integration.name"]。
我的 aws_api_gateway_deployment
资源生活在根模块中,但大多数 aws_api_gateway_integration
s是在子模块中创建的(这是我创建的本地模块)。
我的理解是您无法从模块中导出资源。
文件夹结构是:
- 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
?
您不能依赖另一个模块内的资源。您 can 通过引用该模块的输出来创建对整个模块的隐式依赖。
我认为您可以使用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}"
}
}
,因此我最终使 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"
}