GCS中事件信息获取方法汇总

作者:MeshCloud脉时云公有云架构师付光

一、背景

获取GCS中对象的事件信息,目前官方文档中给出的方法分别是:

  • 通过Pub/Sub消息队列发送事件信息
  • 通过Cloud Functions获取并处理事件信息
  • 通过审计日志中的数据访问日志(默认关闭)分析GCS中对象的事件信息
  • 通过GCS使用情况日志分析对象的事件信息
  • 通过自定义WebHook接收GCS的事件信息
GCS中事件信息获取方法汇总

二、各类方法的优缺点

  1. 使用Pub/Sub消息队列

保证消息可达,不丢失

对消息有缓存能力,不会对处理程序造成冲击

Pub/Sub按量收费(每月前50G免费)

  1. 使用Cloud Functions

底层使用的是Pub/Sub,优缺点同上

Cloud Functions使用事件触发执行,可以更好、及时的完成消息处理

  1. 使用审计日志

审计日志包含管理员活动审计日志和数据访问审计日志

管理员活动审计日志默认开启,数据访问审计日志默认关闭

管理员活动审计日志包含修改 Cloud 项目、存储桶或对象的配置或元数据的 ADMIN_WRITE 操作

数据访问审计日志包含修改对象或读取 Cloud 项目、存储桶或对象的操作

数据访问审计日志包含ADMIN_READ、DATA_READ、DATA_WRITE三个子类

详细信息请看:
https://cloud.google.com/storage/docs/audit-logging#operations

  1. 通过使用情况日志

使用情况日志每小时创建一次

主要用于记录访问的详细信息,常用于静态网站的访问记录

  1. 使用自定义WebHook

自定义的WebHook无法保证其可靠性、可用性

自定义的WebHook没有额外的费用

三、配置汇总

  1. 使用Pub/Sub消息队列

gsutil notification create -t TOPIC_NAME -f json gs://BUCKET_NAME

参考:
https://cloud.google.com/storage/docs/reporting-changes

  1. 使用Cloud Functions

参考:
https://cloud.google.com/functions/docs/tutorials/storage-1st-gen#functions-prepare-environment-python

参考:
https://cloud.google.com/functions/docs/tutorials/storage

  1. 使用审计日志

参考:
https://cloud.google.com/storage/docs/audit-logging

  1. 通过使用情况日志

gsutil mb gs://example-logs-bucket

gsutil iam ch group:cloud-storage-analytics@google.com:legacyBucketWriter gs://example-logs-bucket

gsutil logging set on -b gs://example-logs-bucket [-o log_object_prefix ] gs://example-bucket

gsutil logging get gs://example-bucket

参考:
https://cloud.google.com/storage/docs/access-logs

  1. 使用自定义WebHook

# 配置语法

gsutil notification watchbucket [-i ChannelId] [-t ClientToken] ApplicationUrl gs://BucketName

# 配置实例

gsutil notification watchbucket -i my-channel-id -t my-client-token https://example.com/notify gs://example-bucket

参考:
https://cloud.google.com/storage/docs/object-change-notification

发表评论

您的电子邮箱地址不会被公开。