Google app engine 通过签名URL上载GCS对象时,如何使用云发布/订阅发送自定义数据

Google app engine 通过签名URL上载GCS对象时,如何使用云发布/订阅发送自定义数据,google-app-engine,google-cloud-storage,google-cloud-pubsub,Google App Engine,Google Cloud Storage,Google Cloud Pubsub,我能够通过以下方式设置Google云存储云发布/订阅通知: gsutil通知create-t[TOPIC\u NAME]-m my key:my value-f json gs://[BUCKET\u NAME] 每次将对象上载到GCS时,我的应用程序引擎servlet都会正确地获取一条消息。我用签名的URL将我的对象上传到GCS 但是,我不确定在上载带有签名URL的对象时如何从客户端设置自定义键值对。上面的gsutil命令允许您设置一个key:value对,但它会对其进行硬编码,因此没有用处。

我能够通过以下方式设置Google云存储云发布/订阅通知:

gsutil通知create-t[TOPIC\u NAME]-m my key:my value-f json gs://[BUCKET\u NAME]

每次将对象上载到GCS时,我的应用程序引擎servlet都会正确地获取一条消息。我用签名的URL将我的对象上传到GCS

但是,我不确定在上载带有签名URL的对象时如何从客户端设置自定义键值对。上面的
gsutil
命令允许您设置一个key:value对,但它会对其进行硬编码,因此没有用处。在我的客户机中,我想设置一些键:值对,比如
user:some user
,这样在我的servlet中,我就可以做一些额外的应用程序引擎工作,比如写入数据库

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

另外,我如何发送
subscriptionUniqueToken
,因为没有关于如何发送的解释


注意:在大多数情况下,使用
Java

不再需要唯一令牌的概念。对象更改通知提供给它们,因为它们通过向可配置端点发送未经验证的HTTPS调用来工作。如果发现该端点,恶意用户也可以发送此类调用。但是,云发布/订阅通知将消息作为已知服务帐户发布到某个主题,只要没有恶意第三方也被授予该主题的发布权限,它们就不能进行干预。如果您愿意,您可以包含一个唯一的令牌作为第二个保护机制,但通常不需要

“客户端令牌”是特定于对象更改通知的功能。云发布/订阅集成的等价物是“自定义_属性”,即用户指定的通知配置属性,作为附加属性附加到每个通知。如果愿意,您可以添加一个“unique_token”属性并附加一个值


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

@BlueBoy在传递自定义数据时创建签名url时,您需要做什么特别的事情吗?@brandon yarbrough有什么想法吗?@raunak有,在使用自定义元数据签署请求时,您需要在签名中包含标题,并让客户端提交它们。看见