Cloud Storage 觸發條件 (第 1 代)
在 Cloud Run functions 中,Cloud Storage 觸發條件可讓函式因應 Cloud Storage 的變更而呼叫。為函式指定 Cloud Storage 觸發條件時,請選擇事件類型並指定 Cloud Storage bucket。每當指定 bucket 中的物件 (檔案) 有異動時,系統就會呼叫您的函式。
支援的 Cloud Storage 事件類型如下:
| 事件 | 事件類型 | 說明 |
|---|---|---|
| 物件已完成 |
|
建立新物件 (或覆寫現有物件,並建立該物件的新一代) 時,會發生這個事件。 |
| 物件已刪除 |
|
物件虛刪除時會發生這個事件。詳情請參閱「軟刪除」。 |
| 物件已封存 |
|
物件的使用中版本變成非現行版本時,會發生這個事件。詳情請參閱「物件版本管理」。 |
| 物件中繼資料已更新 |
|
現有物件的中繼資料有異動時,會發生這個事件。 |
如要讓函式使用 Cloud Storage 觸發條件,請將函式實作為事件驅動函式:
如果您使用 CloudEvent 函式,Cloud Storage 事件資料會以 CloudEvents 格式傳遞至函式,而 CloudEvent 資料酬載的類型為
StorageObjectData。如果您使用背景函式,Cloud Storage 事件資料酬載會以
StorageObjectData格式直接傳遞至函式。
Google Events 存放區包含其他資源,可協助您處理事件資料。
部署
部署函式時,您可以指定 Cloud Storage 觸發條件。如需部署函式的一般操作說明,請參閱「部署 Cloud Run 函式」;如需進一步瞭解如何在部署期間設定 Cloud Storage 觸發條件,請參閱本部分的內容。
gcloud
如果您是使用 gcloud CLI 部署,可以搭配下列旗標使用 Cloud Storage「物件已完成」事件類型:
gcloud functions deploy YOUR_FUNCTION_NAME \ --no-gen2 \ --trigger-bucket=YOUR_STORAGE_BUCKET \ [--retry] \ ...
--trigger-bucket旗標會指定觸發條件監控的 Cloud Storage bucket。這個 bucket 內的「物件已完成」事件會觸發函式呼叫。--retry旗標會控管系統是否要自動重試失敗的函式呼叫。詳情請參閱「重試事件驅動函式」。
如要使用「物件已完成」以外的事件類型,請使用下列旗標:
gcloud functions deploy YOUR_FUNCTION_NAME
--no-gen2
--trigger-event=EVENT_TYPE
--trigger-resource=YOUR_STORAGE_BUCKET
...
舊版 Cloud Storage 事件
Cloud Run functions (第 1 代) 中的舊版函式會使用舊版物件變更通知,做為 Cloud Storage 觸發條件:
gcloud functions deploy YOUR_FUNCTION_NAME \ --no-gen2 \ --trigger-event=providers/cloud.storage/eventTypes/object.change \ --trigger-resource=YOUR_STORAGE_BUCKET \ ...
如果舊版函式已使用這些事件,則支援這類事件。不過,我們不建議使用這種事件類型,因為這類事件日後可能會移除。
控制台
如果您是使用 Google Cloud 控制台部署,可以在「Trigger」(觸發條件) 部分設定 Cloud Storage 觸發條件:
- 在「Trigger」(觸發條件) 欄位中,選取「Cloud Storage」。
- 在「Event type」(事件類型) 欄位中,選取事件類型。
- 在「Bucket」欄位中,按一下「Browse」(瀏覽),選取觸發條件要監控的 Cloud Storage bucket。變更這個 bucket 內的物件會觸發函式呼叫。
- 選取或取消選取「Retry on failure」(失敗時重試) 核取方塊,即可控制系統是否要自動重試失敗的函式呼叫。詳情請參閱「重試事件驅動函式」。
活動傳送
Cloud Storage 觸發條件是透過 Cloud Storage 的 Pub/Sub 通知實作。事件須遵守 Pub/Sub 通知傳送保證。
Cloud Storage bucket 最多可設定 10 項通知,在特定事件發生時觸發通知。超出 bucket 的通知限制,會導致後續函式部署作業失敗,並顯示類似下列的錯誤:
Cloud Storage bucket ...: Pub/Sub notification limit reached
如要解決這項限制,可以自行管理 Pub/Sub 主題,並註冊該主題以接收 Cloud Storage 通知,讓函式對您想要的通知類型做出回應。舉例來說,您可以為所選事件 (例如物件建立) 設定單一通知,並傳送至 Pub/Sub 主題。接著,視需要讓多個函式訂閱者處理主題事件,並將事件傳送至多個目的地。例如:
- 自行建立 Pub/Sub 主題。
- 在 Cloud Storage bucket 建立單一通知設定,以便在特定事件 (例如
OBJECT_FINALIZE) 發生時觸發,並將事件傳送至單一 Pub/Sub 主題。 - 建立由 Pub/Sub 主題觸發的一或多個函式。
如要進一步瞭解 Cloud Storage 限制,請參閱「配額與限制」。
後續步驟
- 瞭解如何編寫事件導向函式。
- 瞭解如何部署 Cloud Run 函式。
- 如需編寫、部署及使用 Cloud Storage 觸發條件呼叫函式的範例,請參閱 Cloud Storage 函式教學課程。