【GCP】CloudStorageにファイルが入ったらPub/Subに通知をする設定の仕方

わたしへ
どうせまた公式ドキュメントの場所から忘れるんでしょう
わたしより

とにかくここを読め。

Pub/Sub Notifications for Cloud Storage の使用法  |  Google Cloud

準備

・Pub/Subにトピック立てる権限とメッセージパブリッシュする権限を貰っておく
・監視するバケットに対するstorage.buckets.update 権限を貰っておく

設定する

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

TOPIC-NAMEは既存のものでも新規でもOK。新規トピック名を指定すると自動的にトピックが作成される。

設定されたか確認する

gsutil notification list gs://[BUCKET_NAME]

その他細かいことは公式ドキュメントを読む。

メッセージはこんな感じで届く

属性キー:

bucketId(バケット名が入ってくる)
eventTime
eventType
notificationConfig
objectGeneration
objectId(ファイル名が入ってくる)
payloadFormat

本文:

{
 "kind": "storage#object",
 "id": "[BUCKET-NAME]/test.txt/[GENERATION(16桁の数字)]",
 "selfLink": "https://www.googleapis.com/storage/v1/b/[BUCKET-NAME]/o/test.txt",
 "name": "test.txt",
 "bucket": "[BUCKET-NAME]",
 "generation": "[GENERATION(16桁の数字)]",
 "metageneration": "1",
 "contentType": "text/plain",
 "timeCreated": "2020-08-25T02:59:35.884Z",
 "updated": "2020-08-25T02:59:35.884Z",
 "storageClass": "STANDARD",
 "timeStorageClassUpdated": "2020-08-25T02:59:35.884Z",
 "size": "5",
 "md5Hash": "[MD5-HASH]",
 "mediaLink": "https://www.googleapis.com/download/storage/v1/b/[BUCKET-NAME]/o/test.txt?generation=[GENERATION(16桁の数字)]&alt=media",
 "crc32c": "[CRC32C]",
 "etag": "[ETAG]"
}

とりあえずこれでバケット名とblobの名前取れるので、後はfunction側でstorageにアクセスしにいけばOK。

この記事が気に入ったらサポートをしてみませんか?