KATUBLO
技術のメモ
Google Cloud StorageのObjectアップロード時にPub/Sub通知をするメモ
2021-01-23

はじめに

実装でGCSにObjectをアップロードしたことをPub/Subに通知するという箇所があり、そもそも何も前提知識がなかったので公式ドキュメントを読んで、理解した内容をアウトプットしていこうと思います。

Pub/Sub通知とGoogle Cloud Storage

Pub/Sub通知はGCSのObjectの変更に関する情報をPub/Subに対して送信することができます。この情報はPub/SubのTopicに追加されます。Topicはpublishersによって送信される名前付きのリソースのことです。GCSのObjectを削除したり追加したりしたときに、そのイベント情報とオブジェクトの変更に関する情報がPub/Subに通知されます。

Notification configuration

Notification configurationというルールがありBucketに対して、通知を受け取るPub/SubのTopic、送信される通知をトリガーするイベント、通知に含まれる情報の3つを指定することができます。開発者は複数のNotification configurationを設定することができます。

各notification configurationはinterger(整数値)によって識別されます。たぶんこんな感じで。

projects/_/buckets/.../notificationConfigs/2

このintergerはnotification configurationが作成された時、notification configurationがbucketに設定された時、 notificationConfig内でnotification configurationによって通知属性がトリガーされたときに返されます。

iam権限周りの詳しい部分は全て無視してできる前提でnotification configurationをGCSに適応するには次のgsutilコマンドを叩きます。

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

プロジェクトにTOPIC_NAMEがない場合、このコマンドで新しくTopicを作ることができます。既存に適応されているnotification configurationを確認する場合は次のgsutilコマンドを叩きます。

$ gsutil notification list gs://BUCKET_NAME

4つのEvent Type

公式ドキュメントには4つのEvent Typeが記載されていました。それぞれを公式ドキュメントを読みながらまとめてみます。

OBJECT_FINALIZE

GCSに新しいObjectをアップロードが成功した時に送信されるイベントです。既存のObjectを更新した場合でも送信されます。

OBJECTMETADATAUPDATE

GCSに存在するObjectのメタデータが更新されたときに送信されるイベントです。

OBJECT_DELETE

GCSのObjectが完全に削除されたときに送信されるイベントです。object versioningを適応している場合はObjectを削除した場合でもこのイベントは通知されません。

OBJECT_ARCHIVE

object versioningを適応している場合に、既存のGCSのObjectのversionが切り替わったタイミングで通知されるイベントです。

おわりに

GCSにアップロードされたときにPub/Subに対して通知をする方法とその概要が少しわかって良かったです。

参考文献:

広告:

別の記事で開発の生産性やQOL(Quality of Life)を向上させる上で買って良かったものを紹介しているので良かったらみてください。