使用Serverless Framework部署Cloud Function遇Cloud Storage触发器错误
Cloud Storage触发Cloud Function部署失败问题解决
问题描述
通过Serverless Framework部署Cloud Function,期望Cloud Storage存储桶中有文件创建时触发该函数,但部署失败,错误提示事件类型无法识别。
原serverless.yml配置
read-file: handler: ReadFile events: - event: eventType: providers/cloud.storage/eventTypes/google.storage.object.archive resource: "projects/${self:provider.project}/buckets/${env:BUCKET_NAME_GS}" memorySize: 128 environment: AUDIENCE_AUTH0: ${env:AUDIENCE_AUTH0} DOMAIN_AUTH0: ${env:DOMAIN_AUTH0}
部署错误信息
{"code":400,"message":"The request has errors","status":"INVALID_ARGUMENT","details":[{"@type":"type.googleapis.com/google.rpc.BadRequest","fieldViolations":[{"field":"event_trigger","description":"Unknown event_type providers/cloud.storage/eventTypes/google.storage.object.archive"}]}]}
解决方案
1. 修正事件类型
错误核心是事件类型格式错误+事件类型不符合需求:
- 你需要的是文件创建触发,对应Cloud Storage的
object.finalize事件(文件上传完成时触发) - 事件类型正确格式应为
providers/cloud.storage/eventTypes/object.finalize,原配置中冗余的google.前缀导致GCP无法识别该事件类型。
2. 修正后的配置
read-file: handler: ReadFile events: - event: eventType: providers/cloud.storage/eventTypes/object.finalize resource: "projects/${self:provider.project}/buckets/${env:BUCKET_NAME_GS}" memorySize: 128 environment: AUDIENCE_AUTH0: ${env:AUDIENCE_AUTH0} DOMAIN_AUTH0: ${env:DOMAIN_AUTH0}
补充说明
Cloud Storage常见事件类型(正确格式):
- 文件创建完成:
providers/cloud.storage/eventTypes/object.finalize - 文件删除:
providers/cloud.storage/eventTypes/object.delete - 文件归档:
providers/cloud.storage/eventTypes/object.archive(若确实需要归档触发,仅需移除原配置中的google.前缀即可)
内容的提问来源于stack exchange,提问作者Franavi
相关产品推荐
相关产品推荐

