访问 Google Cloud Storage 触发事件“Pub/Sub”?
Posted
技术标签:
【中文标题】访问 Google Cloud Storage 触发事件“Pub/Sub”?【英文标题】:Access to the Google Cloud Storage Trigger Events "Pub/Sub"? 【发布时间】:2021-08-22 03:34:28 【问题描述】:我在最大实例数为 5 的云函数上设置了 Google 云存储触发器,以触发云存储桶的 google.storage.object.finalize
事件。 The docs state that these events are "based on" the Cloud Pub/Sub.
有谁知道:
有什么方法可以在控制台或通过 CLI 查看主题或订阅的配置? 有什么方法可以获取队列深度(或等价物?) 有什么方法可以清除事件吗?【问题讨论】:
【参考方案1】:不,不,不。当您将 Cloud Functions 插入 Cloud Storage 事件时,所有东西都由 Google 在幕后处理,您什么也看不到,也无法与任何东西交互。
但是,您可以更改通知机制。而不是直接在 Cloud Storage Event 上插入您的 Cloud Functions,plug a PubSub on your Cloud Storage event。
从那里,您可以访问您的 pubsub。监控队列,清除它,创建你想要的订阅,...
【讨论】:
【参考方案2】:使用存储通知的推荐方法是使用 Pubsub。
旧版存储通知仍然有效,但使用 pubsub,您可以“窥视”pubsub 消息队列并在需要时清除它。
此外,您可以使用云运行处理 pubsub 事件 - 这更容易开发和测试(只是 Web 服务)、更容易部署(只是一个容器)并且它可以并行处理多个请求而无需支付更多费用(很棒当你有很多请求时)。
pubsub 存储通知在哪里?
您可以使用 gsutil 命令查看 gcloud 通知的去向:
% gsutil notification list gs://__bucket_name__
projects/_/buckets/__bucket_name__/notificationConfigs/1
Cloud Pub/Sub topic: projects/__project_name__/topics/__topic_name__
Filters:
Event Types: OBJECT_FINALIZE
有什么方法可以获取队列深度(或等价物?)
在 pubsub 中,您可以订阅多个主题。 如果没有订阅,消息就会丢失。
要将数据发送到云功能或云运行,您需要设置推送订阅。 根据我的经验,您将无法看到发生了什么,因为您可以更快地点击:您会在 99.9999% 的时间里找到这个空白。
您可以在控制台中检查“队列”深度(发布订阅 -> 选择主题 -> 选择订阅)。
如果您需要对此进行故障排除,请设置第二个订阅,并设置足够低的生存时间以不占用大量空间(您需要为此付费)。
有什么办法可以清除事件吗?
您可以清空来自 pubsub 订阅的消息,但是... ...如果您对云功能使用推送通知,它会比您“点击”快得多。
如果您需要,它在 Web 控制台上(打开 pubsub 订阅并单击右上角的垂直“...”)。
【讨论】:
以上是关于访问 Google Cloud Storage 触发事件“Pub/Sub”?的主要内容,如果未能解决你的问题,请参考以下文章
访问 Google Cloud Storage 触发事件“Pub/Sub”?
AccessDeniedException: 403 没有 storage.buckets.get 访问 Google Cloud Storage 存储桶的权限
Google App Engine 应用无法访问 Google Cloud Storage 存储分区
错误:匿名调用者没有 storage.objects.get 访问 Google Cloud Storage 对象的权限
如何使用 Google Speech API 访问 Google Cloud Storage 中的文件?
Google App Engine 上的 Production App 突然无法访问 Google Cloud Storage