You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Terraform中动态获取第二代Cloud Function的URI

动态获取第二代Cloud Function URI并配置Cloud Workflow的方案

以下是几种无需硬编码、自动获取第二代Cloud Function URI的可行方案:

方案1:Terraform数据源拉取(适用于函数已提前部署的场景)

通过Terraform的google_cloudfunctions2_function数据源,直接拉取已部署的第二代函数的URI,再注入到Cloud Workflow的配置中。

配置示例:

# 定义数据源,拉取目标函数信息
data "google_cloudfunctions2_function" "target_function" {
  project = "你的项目ID"
  region  = "你的函数部署区域(如us-central1)"
  name    = "你的第二代函数名称"
}

# 部署Cloud Workflow,动态引用函数URI
resource "google_workflows_workflow" "my-workflow" {
  name        = "my-workflow"
  region      = "你的Workflow部署区域"
  project     = "你的项目ID"

  source_contents = <<-EOT
  main:
    steps:
      - step_1:
          try:
            call: http.get
            args:
                url: "${data.google_cloudfunctions2_function.target_function.service_config.uri}"
                timeout: 1800
                auth:
                    type: OIDC
            result: resp
  EOT
}

方案2:Terraform资源直接引用(适用于函数和Workflow同批次部署的场景)

如果你的第二代Cloud Function也是通过Terraform部署的,可以直接引用函数资源的service_config.uri属性,实现部署时自动绑定。

配置示例:

# 先部署第二代Cloud Function
resource "google_cloudfunctions2_function" "my_function" {
  name        = "my-function"
  region      = "us-central1"
  project     = "你的项目ID"
  
  # 函数的核心配置(示例)
  build_config {
    runtime     = "nodejs20"
    entry_point = "helloWorld"
    source {
      storage_source {
        bucket = "你的代码存储桶"
        object = "函数代码包路径"
      }
    }
  }

  service_config {
    available_memory = "256Mi"
    timeout_seconds = 60
  }
}

# 部署Cloud Workflow,直接引用函数的URI
resource "google_workflows_workflow" "my-workflow" {
  name        = "my-workflow"
  region      = "us-central1"
  project     = "你的项目ID"

  source_contents = <<-EOT
  main:
    steps:
      - step_1:
          try:
            call: http.get
            args:
                url: "${google_cloudfunctions2_function.my_function.service_config.uri}"
                timeout: 1800
                auth:
                    type: OIDC
            result: resp
  EOT
}

方案3:Workflow内调用Cloud Functions API动态获取(适用于需要实时获取的场景)

如果需要在Workflow执行时动态获取函数URI,可以通过调用Cloud Functions的REST API实现,前提是Workflow的服务账号拥有cloudfunctions.functions.get权限(可通过Cloud Functions Viewer角色授予)。

Workflow配置示例:

main:
  steps:
    # 第一步:调用API获取函数详情
    - fetch_function_info:
        call: http.get
        args:
            url: ${"https://cloudfunctions.googleapis.com/v2/projects/你的项目ID/locations/你的区域/functions/你的函数名称"}
            auth:
                type: OIDC
        result: function_data
    # 第二步:使用获取到的URI调用函数
    - invoke_function:
        try:
            call: http.get
            args:
                url: ${function_data.body.serviceConfig.uri}
                timeout: 1800
                auth:
                    type: OIDC
            result: resp

内容的提问来源于stack exchange,提问作者archyl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 00:52:37