如果AWS_API_GATEWAY_INTEGRATION在Terraform模块中创建了AWS_API_GATEWAY



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"
}

相关内容

  • 没有找到相关文章

最新更新