В настоящее время я пытаюсь настроить конечные точки Google Cloud для Cloud Run, чтобы иметь возможность иметь документацию OpenApi для моих облачных функций. Я следовал инструкциям в здесь для Po C, и он работал нормально.
Теперь я попытался настроить его с помощью terraform 0.12.24
Конечная точка службы
data "template_file" "openapi_spec" {
template = file("../../cloud_functions/openapi_spec.yaml")
vars = {
endpoint_service = local.service_name
feedback_post_target = google_cloudfunctions_function.feedbackPOST.https_trigger_url
}
}
resource "google_endpoints_service" "api-gateway" {
service_name = local.service_name
project = var.project_id
openapi_config = data.template_file.openapi_spec.rendered
depends_on = [
google_project_service.endpoints,
google_project_service.service-usage,
]
}
Cloud RUN
locals {
service_name = "${var.endpoint_service_name}.endpoints.${var.project_id}.cloud.goog"
}
resource "google_cloud_run_service" "api-management" {
name = "api-gateway-1233"
location = "europe-west1"
template {
spec {
containers {
image = "gcr.io/endpoints-release/endpoints-runtime-serverless:2"
env {
name = "ENDPOINTS_SERVICE_NAME"
value = local.service_name
}
}
}
}
traffic {
percent = 100
latest_revision = true
}
depends_on = [google_project_service.run]
}
Если я сейчас пытаюсь выполнить свою функцию с портала Endpoints, я получаю следующую ошибку
ENOTFOUND: Error resolving domain "https://function-api-gateway.endpoints.PROJECT_ID.cloud.goog"
, которая имеет смысл, так как моя служба конечных точек должна использовать URL-адрес хоста службы облачного запуска, которая задается
google_cloud_run_service.api-management.status[0].url
, что означает, что я должен использовать это в приведенном выше определении конечных точек службы в качестве имени службы и переменной среды хоста в определении openApi. Только когда это установлено, я снова могу применить свой сервис облачного запуска с переменной env, равной самому URL.
Это круговая зависимость, которую я не знаю, как решить . Любая помощь высоко ценится!