访问 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