发布来自 Google 来源的事件

您可以为特定 Eventarc Advanced 总线启用或停用从 Google 来源收集和发布事件的功能。

Google 来源的事件由无中介事件直接触发,例如 Cloud Run 函数的创建或 Dataflow 作业的状态更改。如需了解详情,请参阅 Eventarc 支持的 Google 事件类型

请注意以下几点:

  • 每个 Google Cloud 项目只能有一个 GoogleApiSource 资源,
  • 您只能在与 GoogleApiSource 资源位于同一 Google Cloud 项目中发布来自 Google 来源的事件。
  • 您可以将事件发布到与 GoogleApiSource 资源所在的 Google Cloud 项目不同的 Google Cloud 项目中的总线。您可以使用 gcloud CLI 或向 Eventarc API 发送请求来进行此配置。

启用来自 Google 来源的事件

如需发布来自 Google 来源的事件,您必须创建 GoogleApiSource 资源。此资源表示对特定 Eventarc Advanced 总线在特定 Google Cloud 项目中的 Google API 事件的订阅。

您可以通过以下方式启用从 Google 来源发布事件的功能:

  • 在 Google Cloud Console 中
  • 在终端或 Cloud Shell 中使用 Google Cloud CLI
  • 向 Eventarc API 发送请求

控制台

  1. 在 Google Cloud 控制台中,前往 Eventarc > 总线页面。

    前往总线

  2. 您可以创建总线,或者如果您要更新总线,请点击 修改

  3. 修改总线页面上,如需添加消息来源,请点击 添加来源

    1. 添加消息来源窗格中,对于 Google API 消息提供方,接受默认值 google-api-source 或输入其他消息来源名称。
    2. 点击创建
  4. 点击保存

gcloud

  1. 打开终端。

  2. 您可以使用 gcloud beta eventarc google-api-sources create 命令启用来自 Google 来源的事件:

    gcloud beta eventarc google-api-source create GOOGLE_API_SOURCE_NAME \
        --destination-message-bus=BUS_NAME \
        --destination-message-bus-project=BUS_PROJECT_ID

    替换以下内容:

    • GOOGLE_API_SOURCE_NAMEGoogleApiSource 资源的 ID 或完全限定标识符,表示对特定总线的 Google API 事件的订阅
    • BUS_NAME:您要为其订阅 Google API 事件的总线的 ID 或完全限定标识符
    • BUS_PROJECT_ID:该总线的 Google Cloud 项目 ID

    可选:您还可以使用以下标志:

    • --async - 立即从命令返回,而无需等待正在进行的操作完成。
    • --crypto-key - 指定客户管理的加密密钥的完全限定名称;如果它尚未指定,那么系统将使用 Google-owned and managed keys 。
    • --logging-config - 配置日志记录级别,这必须是以下之一:NONEDEBUGINFONOTICEWARNINGERRORCRITICALALERTEMERGENCY。如需了解详情,请参阅 LogSeverity

REST API

如需启用来自 Google 来源的事件,请使用 projects.locations.googleApiSources.create 方法。

在使用任何请求数据之前,请先进行以下替换:

  • GOOGLE_API_SOURCE_NAMEGoogleApiSource 资源的显示名称,表示对特定总线的 Google API 事件的订阅,例如 my_google_source
  • LABEL_KEYLABEL_VALUE:可选。标签键值对映射,可帮助您整理 Google Cloud 资源。如需了解详情,请参阅什么是标签?
  • ANNOTATION_KEYANNOTATION_VALUE:可选。自由形式文本的注解键值对的映射。您可以使用它们来附加与资源关联的任意信息。如需了解详情,请参阅注解
  • DESTINATION:应以 projects/PROJECT_NAME/locations/LOCATION/messageBuses/BUS_NAME 格式发布 Google 来源事件的 Eventarc Advanced 总线的完全限定标识符。 如需了解详情,请参阅创建用于路由消息的总线
  • ENCRYPT_KEY:可选。GoogleApiSource 资源用于数据加密的 Cloud KMS 密钥,格式为 projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME。 如需了解详情,请参阅使用客户管理的加密密钥
  • PROJECT_ID:要在其中创建 GoogleApiSource 资源的 Google Cloud项目 ID。
  • LOCATION:用于创建 GoogleApiSource 资源的受支持区域,例如 us-central1
  • LOG_SEVERITY:可选。日志条目中所述事件的最低严重性。以下之一:NONEDEBUGINFONOTICEWARNINGERRORCRITICALALERTEMERGENCY。默认值为 NONE。如需了解详情,请参阅 LogSeverity

请求 JSON 正文:

{
  "displayName": "GOOGLE_API_SOURCE_NAME",
  "labels": {"LABEL_KEY":"LABEL_VALUE"},
  "annotations": {"ANNOTATION_KEY":"ANNOTATION_VALUE"},
  "destination": "DESTINATION",
  "cryptoKeyName": "ENCRYPT_KEY",
  "loggingConfig": {"logSeverity":"LOG_SEVERITY"}
}

如需发送您的请求,请展开以下选项之一:

如果成功,响应正文将包含一个新创建的 Operation 实例:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/googleApiSources/GOOGLE_API_SOURCE_NAME",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

现在,系统会收集与 GoogleApiSource 资源位于同一 Google Cloud 项目中的 Google 来源的事件,并将其发布到该总线。

停用来自 Google 来源的事件

如需停用将特定 Google Cloud 项目中 Google 来源的事件发布到 Eventarc Advanced 总线的功能,您必须删除 GoogleApiSource 资源。

您可以通过以下方式停用从 Google 来源发布事件的功能:

  • 在 Google Cloud Console 中
  • 在终端或 Cloud Shell 中使用 gcloud CLI
  • 向 Eventarc API 发送请求

控制台

  1. 在 Google Cloud 控制台中,前往 Eventarc > 总线详情页面。

    前往“总线详情”

  2. 点击 修改

  3. 修改总线页面上,如需删除 Google API 消息提供方,请针对 google-api-source 消息来源(或您为其指定的名称)点击 删除资源

  4. 删除资源提示中,点击确认

  5. 点击保存

gcloud

  1. 打开终端。

  2. 您可以使用 gcloud beta eventarc google-api-sources delete 命令停用来自 Google 来源的事件:

    gcloud beta eventarc google-api-source delete GOOGLE_API_SOURCE_NAME \
        --location=REGION

    替换以下内容:

    • GOOGLE_API_SOURCE_NAMEGoogleApiSource 资源的 ID 或完全限定标识符
    • REGIONGoogleApiSource 资源的位置

REST API

如需停用来自 Google 来源的事件,请使用 projects.locations.googleApiSources.delete 方法。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:创建 GoogleApiSource 资源的 Google Cloud 项目 ID。
  • LOCATION:创建 GoogleApiSource 资源的区域,例如 us-central1
  • GOOGLE_API_SOURCE_NAME:您要删除的 GoogleApiSource 资源的名称。

如需发送您的请求,请展开以下选项之一:

如果成功,响应正文将包含一个新创建的 Operation 实例:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/googleApiSources/GOOGLE_API_SOURCE_NAME",
    "verb": "delete",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

系统将不再收集和发布与已删除的 GoogleApiSource 资源位于同一 Google Cloud 项目中的 Google 来源的事件。

后续步骤