Cloud Storage 觸發條件 (第 1 代)

在 Cloud Run functions 中,Cloud Storage 觸發條件可讓函式因應 Cloud Storage 的變更而呼叫。為函式指定 Cloud Storage 觸發條件時,請選擇事件類型並指定 Cloud Storage bucket。每當指定 bucket 中的物件 (檔案) 有異動時,系統就會呼叫您的函式。

支援的 Cloud Storage 事件類型如下:

事件 事件類型 說明
物件已完成
  • google.storage.object.finalize
建立新物件 (或覆寫現有物件,並建立該物件的新一代) 時,會發生這個事件。
物件已刪除
  • google.storage.object.delete
物件虛刪除時會發生這個事件。詳情請參閱「軟刪除」。
物件已封存
  • google.storage.object.archive
物件的使用中版本變成非現行版本時,會發生這個事件。詳情請參閱「物件版本管理」。
物件中繼資料已更新
  • google.storage.object.metadataUpdate
現有物件的中繼資料有異動時,會發生這個事件。

如要讓函式使用 Cloud Storage 觸發條件,請將函式實作為事件驅動函式

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 觸發條件:

  1. 在「Trigger」(觸發條件) 欄位中,選取「Cloud Storage」
  2. 在「Event type」(事件類型) 欄位中,選取事件類型。
  3. 在「Bucket」欄位中,按一下「Browse」(瀏覽),選取觸發條件要監控的 Cloud Storage bucket。變更這個 bucket 內的物件會觸發函式呼叫。
  4. 選取或取消選取「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 主題。接著,視需要讓多個函式訂閱者處理主題事件,並將事件傳送至多個目的地。例如:

  1. 自行建立 Pub/Sub 主題
  2. 在 Cloud Storage bucket 建立單一通知設定,以便在特定事件 (例如 OBJECT_FINALIZE) 發生時觸發,並將事件傳送至單一 Pub/Sub 主題。
  3. 建立由 Pub/Sub 主題觸發的一或多個函式。

如要進一步瞭解 Cloud Storage 限制,請參閱「配額與限制」。

後續步驟