Cloud Storage 触发器(第 1 代)
在 Cloud Functions 中,Cloud Storage 触发器能够调用函数来响应 Cloud Storage 中发生的更改。为函数指定 Cloud Storage 触发器时,您需要选择事件类型并指定 Cloud Storage 存储桶。每当指定存储桶中的对象(文件)发生更改时,系统都会调用您的函数。
以下 Cloud Storage 事件类型受支持:
事件 | 事件类型 | 说明 |
---|---|---|
对象已完成创建 |
|
当创建了新对象,或者现有对象被覆盖并创建了该对象的新一代实例时,会发生此事件。 |
删除了对象 |
|
当对象被永久删除时会发生此事件。 |
对象已归档 |
|
当对象的有效版本变为非当前版本时发生。 如需了解详情,请参阅对象版本控制。 |
更新了对象元数据 |
|
当现有对象的元数据更改时会发生此事件。 |
若要使函数使用 Cloud Storage 触发器,必须将其作为事件驱动型函数实现:
如果您使用 CloudEvent 函数,则 Cloud Storage 事件数据会以 CloudEvents 格式传递给您的函数,并且 CloudEvent 数据载荷的类型为
StorageObjectData
。如果您使用后台函数,则 Cloud Storage 事件数据载荷会以
StorageObjectData
格式直接传递给您的函数。
Google 事件代码库包含用于处理事件数据的其他资源。
部署
您可以在部署函数时指定 Cloud Storage 触发器。如需查看如何部署函数的一般说明,请参阅部署 Cloud Functions 函数;如需了解有关在部署期间配置 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 存储桶。此存储桶中的“对象已完成创建”事件会触发对函数的调用。--retry
标志用于控制是否自动重试失败的函数调用。如需了解详情,请参阅重试事件驱动型函数。
如需使用除“对象已完成创建”以外的事件类型,请使用以下标志:
gcloud functions deploy YOUR_FUNCTION_NAME
--no-gen2
--trigger-event=EVENT_TYPE
--trigger-resource=YOUR_STORAGE_BUCKET
...
旧版 Cloud Storage 事件
Cloud 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 控制台进行部署,则可以在触发器部分中配置 Cloud Storage 触发器。
- 在触发器类型字段中,选择 Cloud Storage。
- 在事件类型字段中,选择一种事件类型。
- 在存储桶字段中,点击浏览,以选择触发器要监控的 Cloud Storage 存储桶。更改此存储桶中的对象会触发对函数的调用。
- 选中或取消选中失败时重试复选框,以控制是否自动重试失败的函数调用。如需了解详情,请参阅重试事件驱动的函数。
事件交付
Cloud Storage 触发器是通过适用于 Cloud Storage 的 Pub/Sub 通知实现的。事件受 Pub/Sub 通知传送保证的约束。
存储桶最多可将 10 个通知配置设定为针对特定事件触发。超出存储桶的通知限制会导致更多函数部署失败,并显示如下错误:
Cloud Storage bucket ...: Pub/Sub notification limit reached
如需了解详情,请参阅 Cloud Storage 配额和限制。
后续步骤
- 了解如何编写事件驱动型函数。
- 了解如何部署 Cloud Functions 函数。
- 如需查看如何使用 Cloud Storage 触发器编写、部署和调用函数的示例,请参阅 Cloud Storage 函数教程。