快速入门:使用 Cloud Audit Logs 接收事件(gcloud 命令行工具)

本快速入门介绍如何使用 Eventarc 在未经身份验证的 Cloud Run 服务中接收来自 Cloud Storage 的事件。

您可以使用 gcloud 命令行工具完成此快速入门。如需查看使用控制台的说明,请参阅使用Cloud Audit Logs 接收事件(控制台)

在本快速入门中,您将执行以下操作:

  1. 创建 Cloud Storage 存储分区作为事件来源。

  2. 将事件接收器服务部署到 Cloud Run。

  3. 创建事件触发器。

  4. 通过将文件上传到 Cloud Storage 存储分区来创建事件,并在 Cloud Run 日志中查看该事件。

准备工作

  1. 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

  3. 确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

  4. 启用 Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc API。

    启用 API

  5. 更新 gcloud 组件:
    gcloud components update
  6. 使用您的帐号登录:

    gcloud auth login
    

  7. 设置本快速入门中使用的配置变量:

    gcloud config set project PROJECT_ID
    gcloud config set run/region us-central1
    gcloud config set run/platform managed
    gcloud config set eventarc/location us-central1
    

  8. 在 Cloud Storage 中启用 Cloud Audit Logs 管理员读取数据读取数据写入日志类型:
    1. 读取您项目的 IAM 政策,并将其存储在一个文件中:
       gcloud projects get-iam-policy PROJECT_ID > /tmp/policy.yaml
      
    2. /tmp/policy.yaml 中修改政策,仅添加或更改数据访问审核日志配置。

      auditConfigs:
      - auditLogConfigs:
        - logType: ADMIN_READ
        - logType: DATA_WRITE
        - logType: DATA_READ
        service: storage.googleapis.com
      bindings:
      - members:
        - user:EMAIL_ADDRESS
        role: roles/owner
      etag: BwW_bHKTV5U=
      version: 1
      
      • EMAIL_ADDRESS 替换为您的电子邮件地址。
    3. 写入新的 IAM 政策:
      gcloud projects set-iam-policy PROJECT_ID /tmp/policy.yaml
      
      如果上述命令报告与其他更改发生冲突,请重复以上步骤(从读取项目的 IAM 政策开始)。
  9. eventarc.eventReceiver 角色授予 Compute Engine 服务帐号:
    export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')"
    
    gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
        --member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \
        --role='roles/eventarc.eventReceiver'
    

  10. 如果您在 2021 年 4 月 8 日或之前启用了 Pub/Sub 服务帐号,请将 iam.serviceAccountTokenCreator 角色授予 Pub/Sub 服务帐号:

    gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
        --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com"\
        --role='roles/iam.serviceAccountTokenCreator'
    

  11. 下载并安装 Git 源代码管理工具。

创建 Cloud Storage 存储分区

本快速入门使用 Cloud Storage 作为事件来源。要创建存储分区,请运行以下命令:

gsutil mb -l us-central1 gs://events-quickstart-$(gcloud config get-value project)/

创建事件来源后,您可以在 Cloud Run 上部署事件接收器服务。

将事件接收器服务部署到 Cloud Run

部署接收和记录事件的 Cloud Run 服务。 要部署示例事件接收器服务,请执行以下操作:

  1. 克隆代码库:

    Go

    git clone https://github.com/GoogleCloudPlatform/golang-samples.git
    cd golang-samples/eventarc/audit_storage
    

    Java

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    cd java-docs-samples/eventarc/audit-storage
    

    .NET

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    cd dotnet-docs-samples/eventarc/audit-storage
    

    Node.js

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    cd nodejs-docs-samples/eventarc/audit-storage
    

    Python

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    cd python-docs-samples/eventarc/audit-storage
    
  2. 构建容器并将其上传到 Cloud Build:

     gcloud builds submit --tag gcr.io/$(gcloud config get-value project)/helloworld-events
    
  3. 将容器映像部署到 Cloud Run:

     gcloud run deploy helloworld-events \
         --image gcr.io/$(gcloud config get-value project)/helloworld-events \
         --allow-unauthenticated
    

    部署成功后,命令行会显示服务网址。

    现在,您已将名为 helloworld-events 的事件接收器服务部署到 Cloud Run,接下来便可以设置触发器了。

创建 Eventarc 触发器

Eventarc 触发器会将 Cloud Storage 存储分区中的事件发送到 helloworld-events Cloud Run 服务。

  1. 创建一个用于过滤 Cloud Storage 事件并且使用 Google Cloud 项目的 Compute Engine 默认服务帐号的触发器:

     gcloud eventarc triggers create events-quickstart-trigger \
         --destination-run-service=helloworld-events \
         --destination-run-region=us-central1 \
         --event-filters="type=google.cloud.audit.log.v1.written" \
         --event-filters="serviceName=storage.googleapis.com" \
         --event-filters="methodName=storage.objects.create" \
         --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com
    

    这将创建一个名为 events-quickstart-trigger 的触发器。

  2. 要确认 events-quickstart-trigger 已成功创建,请运行以下命令:

     gcloud eventarc triggers list --location=us-central1
    

    显示 events-quickstart-trigger 时的目标为 helloworld-events

生成和查看事件

  1. 要生成事件,请执行以下操作:

    将文本文件上传到 Cloud Storage:

     echo "Hello World" > random.txt
     gsutil cp random.txt gs://events-quickstart-$(gcloud config get-value project)/random.txt
    

    上传操作会生成事件,而 Cloud Run 服务会记录事件的消息。

  2. 如需查看日志条目,请执行以下操作:

    1. gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=helloworld-events"
      
    2. 查找类似如下的日志条目:

      Detected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
      

      其中,BUCKET_NAME 是 Cloud Storage 存储分区的名称。

恭喜!您已成功将事件接收器服务部署到 Cloud Run,创建 Eventarc 触发器,在 Cloud Storage 中生成事件并在 Cloud Run 日志中查看该事件。

清除数据

虽然当服务未在使用时 Cloud Run 不会产生费用,但您可能仍然需要为在 Container Registry 中存储容器映像Eventarc 资源以及在 Cloud Storage 存储分区中存储文件付费。

您可以删除映像以及删除存储分区。要删除 Eventarc 触发器,请运行以下命令:

gcloud eventarc triggers delete events-quickstart-trigger

或者,您也可以删除 Google Cloud 项目,以避免产生费用。删除 Cloud 项目后,系统即会停止对该项目中使用的所有资源计费。

gcloud projects delete PROJECT_ID_OR_NUMBER
  • PROJECT_ID_OR_NUMBER 替换为项目 ID 或编号。

后续步骤