Cloud Storage 觸發條件 (第 1 代)
在 Cloud Run 函式中,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 Object finalized 事件類型:
gcloud functions deploy YOUR_FUNCTION_NAME \ --no-gen2 \ --trigger-bucket=YOUR_STORAGE_BUCKET \ [--retry] \ ...
--trigger-bucket
旗標會指定觸發程序監控的 Cloud Storage 值區。這個 bucket 內的「物件最終化」事件會觸發函式呼叫。--retry
旗標可控制系統是否自動重試失敗的函式呼叫。詳情請參閱「重試事件驅動函式」。
如要使用「Object finalized」以外的事件類型,請使用下列旗標:
gcloud functions deploy YOUR_FUNCTION_NAME
--no-gen2
--trigger-event=EVENT_TYPE
--trigger-resource=YOUR_STORAGE_BUCKET
...
舊版 Cloud Storage 事件
Cloud Run 函式 (第 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 控制台部署,可以在「觸發條件」部分設定 Cloud Storage 觸發條件:
- 在「觸發條件類型」欄位中,選取「Cloud Storage」。
- 在「活動類型」欄位中,選取活動類型。
- 在「Bucket」(值區) 欄位中,按一下「Browse」(瀏覽),選取要讓觸發條件監控的 Cloud Storage 值區。變更這個 bucket 內的物件會觸發函式呼叫。
- 選取或取消選取「Retry on failure」(失敗時重試) 核取方塊,即可控制系統是否要自動重試失敗的函式呼叫。詳情請參閱「重試事件驅動函式」。
活動傳送
Cloud Storage 觸發條件是透過 Cloud Storage 的 Pub/Sub 通知實作。事件須遵守 Pub/Sub 通知傳送保證。
Cloud Storage 值區最多可設定 10 項通知,在特定事件發生時觸發通知。超出 bucket 的通知限制,會導致後續函式部署作業失敗,並顯示類似下列的錯誤:
Cloud Storage bucket ...: Pub/Sub notification limit reached
如要解決這項限制,可以自行管理 Pub/Sub 主題,並註冊該主題以接收 Cloud Storage 通知,讓函式對您想要的通知類型做出回應。舉例來說,您可以為所選事件 (例如物件建立) 設定單一通知,並傳送至 Pub/Sub 主題。接著,視需要讓多個函式訂閱者處理主題事件,並將事件傳送至多個目的地。例如:
- 建立自己的 Pub/Sub 主題。
- 在 Cloud Storage 值區中建立單一通知設定,在特定事件 (例如物件建立
OBJECT_FINALIZE
) 發生時觸發,並將事件傳送至單一 Pub/Sub 主題。 - 建立由 Pub/Sub 主題觸發的函式。
如要進一步瞭解 Cloud Storage 限制,請參閱「配額與限制」。
後續步驟
- 瞭解如何編寫事件導向函式。
- 瞭解如何部署 Cloud Run 函式。
- 如需編寫、部署及呼叫函式的範例,請參閱 Cloud Storage 函式教學課程。