指定要与Google Cloud Storage通知一起发布的元数据

时间:2018-12-13 06:57:39

标签: google-cloud-platform google-cloud-storage google-cloud-pubsub gsutil

我在this thread的帮助下开始工作,给了我一个gsutil命令:

gsutil notification create \
-t bucketcfpubsub -f json \
-e OBJECT_FINALIZE gs://bucketcfpubsub

此消息的发布者:

b'{\n "kind": "storage#object",\n "id": "bucketcfpubsub/test.txt/1544681756538155",\n "selfLink": "https://www.googleapis.com/storage/v1/b/bucketcfpubsub/o/test.txt",\n "name": "test.txt",\n "bucket": "bucketcfpubsub",\n "generation": "1544681756538155",\n "metageneration": "1",\n "contentType": "text/plain",\n "timeCreated": "2018-12-13T06:15:56.537Z",\n "updated": "2018-12-13T06:15:56.537Z",\n "storageClass": "STANDARD",\n "timeStorageClassUpdated": "2018-12-13T06:15:56.537Z",\n "size": "1938",\n "md5Hash": "sDSXIvkR/PBg4mHyIUIvww==",\n "mediaLink": "https://www.googleapis.com/download/storage/v1/b/bucketcfpubsub/o/test.txt?generation=1544681756538155&alt=media",\n "crc32c": "UDhyzw==",\n "etag": "CKvqjvuTnN8CEAE="\n}\n'

您可以更“可读地”看到它here

但是,this documentation guide暗示我们可以将其缩减为我们感兴趣的特定元数据。例如,文件名带有“ objectId”。但这并没有确切说明如何通过gsutil来实现。在上方的文字墙上,还有“ timeCreated”和“ size”。

我想设置一个通知,该通知以MESSAGE输出上传的文件的名称,并以timeCreated和size作为属性。

任何人都可以解释一下如何操纵输入代码来实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

无法将有效负载更改为仅包含字段的子集。如果您为JSON_API_V1指定payloadFormat,则通知有效负载将始终包含完整的对象元数据。

唯一的选择是将payloadFormat设置为NONE。这根本不会发送任何有效负载,但是您仍然可以从通知的attributes中获得一些额外信息。对于您的用例,属性包含objectId,但不包含sizetimeCreated。对于这些其他字段,您需要读取完整的有效负载。

要使用gsutil不指定有效负载,请使用-f none选项。查看详情: https://cloud.google.com/storage/docs/gsutil/commands/notification#options