【问题标题】:How to send custom data with Cloud Pub/Sub when GCS object is uploaded via a Signed URL通过签名 URL 上传 GCS 对象时如何使用 Cloud Pub/Sub 发送自定义数据
【发布时间】:2017-09-07 16:52:21
【问题描述】:

我能够使用以下方法设置 Google Cloud Storage Cloud Pub/Sub 通知:

gsutil notification create -t [TOPIC_NAME] -m my-key:my-value -f json gs://[BUCKET_NAME]

每次将对象上传到 GCS 时,我的 App Engine servlet 都会正确获取一条消息。我使用签名 URL 将我的对象上传到 GCS。

但是,在上传带有签名 URL 的对象时,我不确定如何从客户端设置自定义键值对。上面的gsutil 命令允许您设置一个键:值对,但它对其进行了硬编码,因此没有用处。在我的客户端中,我想设置一些键:值对,例如 user : some-user,然后在我的 servlet 中我可以做一些额外的 App Engine 工作,例如写入数据库。

我尝试在 metadata 标记中上传一些标头,如 here 所示,但从 servlet 中的 HttpServletRequest 获取这些标头似乎不起作用。

另外,我将如何发送subscriptionUniqueToken,因为没有说明如何发送。

注意:使用Java

【问题讨论】:

    标签: google-app-engine google-cloud-storage google-cloud-pubsub


    【解决方案1】:

    在大多数情况下,不再需要唯一令牌的概念。提供对象更改通知是因为它们通过向可配置端点发送未经身份验证的 HTTPS 调用来工作。如果发现该端点,恶意用户也可以发送此类调用。但是,Cloud Pub/Sub 通知将消息作为已知服务帐户发布到主题,只要没有恶意第三方也被授予该主题的发布权限,它们就无法干预。如果需要,您可以包含一个唯一令牌作为第二个保护机制,但通常没有必要。

    “客户端令牌”是对象更改通知特有的功能。 Cloud Pub/Sub 集成的等价物是“custom_attributes”,通知配置的用户指定属性,作为额外属性附加到每个通知。如果您愿意,您可以添加一个“unique_token”属性并附加一个值。

    使用签名 URL 时,使用以 x-goog-meta- 开头的 HTTP 标头设置自定义元数据。例如,x-goog-meta-stuff: Foo 将创建一个自定义属性对“stuff: Foo”。

    【讨论】:

    • @BlueBoy 在传递自定义数据时创建签名网址时是否需要做任何特别的事情?
    • @brandon-yarbrough 对以上内容有何想法?
    • @raunak 是的,当使用自定义元数据签署请求时,您需要在签名中包含标头并让客户端提交它们。见cloud.google.com/storage/docs/access-control/…
    猜你喜欢
    • 2018-06-05
    • 2020-02-26
    • 2022-01-01
    • 2020-06-14
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 2020-01-17
    相关资源
    最近更新 更多