本頁面說明如何設定 bucket,將物件變更通知傳送至 Pub/Sub 主題。如要瞭解如何訂閱接收通知的 Pub/Sub 主題,請參閱「選擇訂閱項目類型」。
事前準備
使用這項功能前,請先完成下列操作。
啟用 Pub/Sub API
為要接收通知的專案啟用 Pub/Sub API。
確認您已有 Pub/Sub 主題
如果您尚未建立 Pub/Sub 主題,請先建立要傳送通知的主題。如果您打算使用 Google Cloud CLI 或 Terraform 執行本頁的操作說明,則不需要執行這個步驟。
取得必要角色
視您要設定通知或傳送事件資料而定,IAM 角色需求會有所不同:
如果您使用 Google Cloud CLI 或 Terraform 設定通知,您的身分只需要更新 bucket 中繼資料和查看 Pub/Sub 主題的權限。如要取得所有必要權限,請按照「取得查看 bucket 中繼資料和 Pub/Sub 主題的角色」一節的操作說明操作。
如果 Cloud Storage 服務代理會傳送通知,則必須具備 Pub/Sub 主題的 Pub/Sub 發布者角色 (
roles/pubsub.publisher)。為服務代理設定這個角色後,服務代理就會在背景擔任「worker」,將事件推送至主題。如要授予服務代理必要權限,以便將事件通知推送至主題,請按照「將角色授予專案的服務代理」一節的指示操作。
取得查看 bucket 中繼資料和 Pub/Sub 主題的角色
如要取得設定及查看 bucket Pub/Sub 通知所需的權限,請要求管理員授予您下列角色。這些預先定義的角色具備設定及查看 Pub/Sub 通知所需的權限。
在要設定 Pub/Sub 通知的 bucket 上,具備 Storage 管理員 (
roles/storage.admin) 角色在要接收 Pub/Sub 通知的專案中,具備 Pub/Sub 管理員 (
roles/pubsub.admin) 角色
如要瞭解如何授予 bucket 角色,請參閱「設定及管理 bucket 的 IAM 政策」。如要瞭解如何授予專案角色,以及設定主題和訂閱項目的存取控管機制,請參閱「控管存取權」。
將必要角色授予專案的服務代理
本節說明如何授予服務代理傳送通知所需的權限。
取得服務代理的電子郵件地址,該代理與包含 Cloud Storage bucket 的專案相關聯。服務代理電子郵件地址的格式如下:
service-PROJECT_NUMBER@gs-project-accounts.s3ns-system.iam.gserviceaccount.com將相關 Pub/Sub 主題的 Pub/Sub 發布者 (
roles/pubsub.publisher) 角色授予服務代理。如要瞭解如何授予主題角色,請參閱「控管存取權」。
套用通知設定
請按照下列步驟,在 bucket 中新增通知設定,以便傳送所有支援事件的通知。
控制台
您無法使用Cloud de Confiance 控制台管理 Pub/Sub 通知。請改用 gcloud CLI 或任一可用的用戶端程式庫。
指令列
使用 gcloud storage buckets notifications create 指令:
gcloud storage buckets notifications create gs://BUCKET_NAME --topic=TOPIC_NAME
其中:
BUCKET_NAME是相關 bucket 的名稱。例如:my-bucket。TOPIC_NAME是要傳送通知的 Pub/Sub 主題。如果您指定的主題不存在於專案中,指令會為您建立一個。
如要針對部分事件傳送通知,請加入 --event-types 旗標。
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
C#
詳情請參閱 Cloud Storage C# API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Go
詳情請參閱 Cloud Storage Go API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
詳情請參閱 Cloud Storage Java API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
PHP
詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Terraform
您可以使用 Terraform 資源,將通知設定新增至 bucket。
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。建立含有以下資訊的 JSON 檔案:
{ "topic": "projects/PROJECT_ID/topics/TOPIC_NAME", "payload_format": "JSON_API_V1" }
其中:
PROJECT_ID是與要傳送通知的 Pub/Sub 主題相關聯的專案 ID。例如:my-pet-project。TOPIC_NAME是要傳送通知的 Pub/Sub 主題。例如:my-topic。
如要傳送部分事件的通知,請在 JSON 要求主體中加入
event_types欄位。使用
cURL來透過POST notificationConfigs要求呼叫呼叫 JSON API:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME/notificationConfigs"
其中:
JSON_FILE_NAME是您在步驟 2 建立的檔案路徑。BUCKET_NAME是要產生通知的 bucket 名稱。例如:my-bucket。
XML API
您無法使用 XML API 管理 Pub/Sub 通知。
將通知設定套用至多個專案
bucket 可能與要傳送通知的 Pub/Sub 主題位於不同專案。舉例來說,bucket 可能位於專案 A,而 Pub/Sub 主題位於專案 B。在這種情況下,請確保下列事項:
在專案 B 中,將目標主題的 Pub/Sub 發布者角色 (
roles/pubsub.publisher) 授予專案 A 的 Cloud Storage 服務代理。詳情請參閱「將必要權限授予服務代理」。在專案 A 中建立通知設定時,請提供專案 B 中主題的完整路徑。例如:
projects/PROJECT_B_ID/topics/TOPIC_NAME
取得通知設定
如要取得與 bucket 相關聯的特定通知設定,請完成下列步驟:
控制台
您無法使用Cloud de Confiance 控制台管理 Pub/Sub 通知。請改用 Google Cloud CLI 或其中一個可用的用戶端程式庫。
指令列
使用 gcloud storage buckets notifications describe 指令:
gcloud storage buckets notifications describe projects/_/buckets/BUCKET_NAME/notificationConfigs/NOTIFICATION_ID
其中:
BUCKET_NAME是要擷取通知設定的 bucket 名稱,例如my-bucket。NOTIFICATION_ID是相關設定的 ID 號碼。例如:5。
如果成功,回應會類似以下範例:
etag: '132' id: '132' kind: storage#notification payload_format: JSON_API_V1 selfLink: https://www.s3nsapis.fr/storage/v1/b/my-bucket/notificationConfigs/132 topic: //pubsub.googleapis.com/projects/my-project/topics/my-bucket
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
C#
詳情請參閱 Cloud Storage C# API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Go
詳情請參閱 Cloud Storage Go API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
詳情請參閱 Cloud Storage Java API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
PHP
詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL來透過GET notificationConfigs要求呼叫呼叫 JSON API:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME/notificationConfigs/NOTIFICATION_ID"
其中:
BUCKET_NAME是要擷取通知設定的 bucket 名稱。例如:my-bucket。NOTIFICATION_ID是要擷取的通知設定 ID 號碼。例如:5。
XML API
您無法使用 XML API 管理 Pub/Sub 通知。
列出 bucket 的通知設定
如要列出與特定 bucket 相關聯的所有通知設定,請按照下列步驟操作:
控制台
您無法使用Cloud de Confiance 控制台管理 Pub/Sub 通知。請改用 gcloud CLI 或任一可用的用戶端程式庫。
指令列
使用 gcloud storage buckets notifications list 指令:
gcloud storage buckets notifications list gs://BUCKET_NAME
其中 BUCKET_NAME 是要列出通知設定的 bucket 名稱。例如:my-bucket。
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
C#
詳情請參閱 Cloud Storage C# API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Go
詳情請參閱 Cloud Storage Go API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
詳情請參閱 Cloud Storage Java API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
PHP
詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL來透過GET notificationConfigs要求呼叫呼叫 JSON API:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME/notificationConfigs"
其中
BUCKET_NAME是要列出通知設定的 bucket 名稱。例如:my-bucket。
XML API
您無法使用 XML API 管理 Pub/Sub 通知。
移除通知設定
如要從值區中移除現有的通知設定:
控制台
您無法使用Cloud de Confiance 控制台管理 Pub/Sub 通知。請改用 gcloud CLI 或任一可用的用戶端程式庫。
指令列
使用 gcloud storage buckets notifications delete 指令:
gcloud storage buckets notifications delete projects/_/buckets/BUCKET_NAME/notificationConfigs/NOTIFICATION_ID
其中:
BUCKET_NAME是要刪除通知設定的 bucket 名稱。例如:my-bucket。NOTIFICATION_ID是要刪除的設定 ID 號碼。例如:5。
如果成功,回應會類似以下範例:
Completed 1
傳送後,通知設定觸發的所有通知最多可能需要 30 秒才會停止。
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
C#
詳情請參閱 Cloud Storage C# API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Go
詳情請參閱 Cloud Storage Go API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
詳情請參閱 Cloud Storage Java API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
PHP
詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Terraform
如要移除建立的通知設定,請在包含 Terraform 檔案的資料夾中執行 terraform destroy。
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL來透過DELETE notificationConfigs要求呼叫呼叫 JSON API:curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME/notificationConfigs/NOTIFICATION_ID"
其中:
BUCKET_NAME是要刪除通知設定的 bucket 名稱。例如:my-bucket。NOTIFICATION_ID是要刪除的通知設定 ID 號碼。例如:5。
傳送後,通知設定觸發的所有通知最多可能需要 30 秒才會停止。
XML API
您無法使用 XML API 管理 Pub/Sub 通知。
後續步驟
進一步瞭解 Cloud Storage 的 Pub/Sub 通知。
在 Pub/Sub 中建立訂閱項目,查看 Cloud Storage 傳送的通知。
請參閱 GitHub 上的 Python 範例應用程式,瞭解如何輪詢通知。