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

如何通过Terraform为Google Identity Platform的beforeSignIn事件配置Cloud Function

解决Terraform配置Google Identity Platform beforeSignIn触发器的问题

你之前的思路有误——beforeSignIn是Google Identity Platform(GIP)专属的触发器事件,不属于Cloud Functions原生支持的事件类型,因此无法通过Cloud Function的event_trigger配置。正确的做法是使用Terraform的google_identity_platform_trigger资源,直接在GIP侧关联已创建的Cloud Function。

步骤1:创建无事件触发的Cloud Function

先部署你的Cloud Function,无需配置event_trigger,它将由GIP主动调用:

resource "google_cloudfunctions_function" "before_sign_in_func" {
  name                  = "before-sign-in-handler"
  runtime               = "nodejs20" # 替换为你使用的运行时
  available_memory_mb   = 256
  source_archive_bucket = google_storage_bucket.func_bucket.name # 提前创建存储代码的Bucket
  source_archive_object = google_storage_bucket_object.func_zip.name # 代码压缩包对象
  entry_point           = "beforeSignInHandler" # 你的函数入口名
  project               = "<你的项目ID>"
  region                = "us-central1" # 替换为你的函数部署区域

  # 允许GIP调用该函数,添加IAM权限
  iam_member {
    member  = "serviceAccount:firebase-auth-triggers@system.gserviceaccount.com"
    role    = "roles/cloudfunctions.invoker"
  }
}

步骤2:配置GIP beforeSignIn触发器

使用google_identity_platform_trigger资源关联Cloud Function和beforeSignIn事件:

resource "google_identity_platform_trigger" "before_sign_in" {
  project = "<你的项目ID>"
  name    = "before-sign-in-trigger"

  # 指定触发事件为beforeSignIn
  event_id = "beforeSignIn"

  # 关联你的Cloud Function
  function {
    function_uri = google_cloudfunctions_function.before_sign_in_func.https_trigger_url
  }

  # 可选:添加触发条件,比如仅密码登录触发(对应你之前的password场景)
  condition {
    expression = "event.authMethod == 'password'"
  }
}

关键说明

  • 确保Terraform执行账号拥有firebaseauth.triggers.create和firebaseauth.triggers.update权限
  • Cloud Function必须配置允许GIP的服务账号调用,否则会出现权限错误
  • event_id固定为beforeSignIn,无需额外后缀,触发条件通过condition字段精准控制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 05:05:14