如何从 Google Pub/Sub 获取 objectId、bucketId 等
Posted
技术标签:
【中文标题】如何从 Google Pub/Sub 获取 objectId、bucketId 等【英文标题】:How to get objectId, bucketId, etc from Google Pub/Sub 【发布时间】:2021-07-14 00:45:18 【问题描述】:我正在使用在 GCS 存储桶中创建对象时触发的 Pub/Sub 主题。这是我目前得到的代码:
@app.route('/', methods=["POST"])
def index():
envelope = request.get_json()
myfunc(envelope)
return "", 204
def myfunc(envelope):
event_type = envelope.get("eventType")
bucket_id = envelope.get("bucketId")
object_id = envelope.get("objectId")
print(event_type)
print(bucket_id)
print(object_id)
目前这只是为每次打印打印出'None'
。我希望它打印与objectId
、bucketId
、etc keys
关联的值,以便能够获取出现在 GCS 存储桶中的文件的文件名。
感谢您的帮助!
【问题讨论】:
envelope
应该是消息吗?如果是这样,这个 github 示例应该可以帮助您正确解析消息。 github.com/GoogleCloudPlatform/python-docs-samples/blob/master/…
上面的例子显示了每当在连接到发布/订阅主题的存储桶上创建对象时的事件类型、存储桶 ID、对象 ID 和生成。
【参考方案1】:
我不确定....但我猜您的函数签名不正确...
Google Cloud Storage Triggers - object finalize example
【讨论】:
是的,在某些方面肯定是错误的。但是该链接用于对象完成时的触发器,而不是 pubsub 触发器。我需要后者,因为我需要能够 nack/ack 消息。 如果您有“推送”pubsub 订阅(云功能由消息触发),据我所知,您将无法从代码内部确认消息。 ..【参考方案2】:当您使用推送订阅时,您会收到 JSON 格式的 POST 正文中的 PubSub 消息。消息的架构符合API spec documentation
【讨论】:
以上是关于如何从 Google Pub/Sub 获取 objectId、bucketId 等的主要内容,如果未能解决你的问题,请参考以下文章
Google Cloud 上使用 Pub/Sub 的主/从模式
无法按日期从 Google Cloud Pub/Sub 功能中的 Firebase 获取文档
从 Google Cloud Pub/Sub 而不是 base64 获取未编码的数据
如何在 Google Cloud Function 上的 Spring Cloud 函数中获取 Pub/Sub 事件的元数据