Google cloud storage Google云存储中元数据值的长度有限制吗?

Google cloud storage Google云存储中元数据值的长度有限制吗?,google-cloud-storage,Google Cloud Storage,将文件上载到谷歌云存储时,会有一个自定义数据字段元数据 相当短: var metadata = { contentType: 'application/x-font-ttf', metadata: { my: 'custom', properties: 'go here' } }; file.setMetadata(metadata, function(err, apiResponse) {}); GCS允许元数据对象的最大容量是多少?我是希望存储tar和zip文

将文件上载到谷歌云存储时,会有一个自定义数据字段
元数据

相当短:

var metadata = {
  contentType: 'application/x-font-ttf',
  metadata: {
    my: 'custom',
    properties: 'go here'
  }
};

file.setMetadata(metadata, function(err, apiResponse) {});

GCS允许元数据对象的最大容量是多少?我是希望存储tar和zip文件的清单,还是在其中存储几百KB

使用以下命令在GCS中上载集合元数据:

$ echo '{"metadata": {"large": "' > body ; tr -dC '[:print:]' < /dev/urandom | tr -d '\\"' | head -c SIZE_OF_METADATA_IN_BYTES >> body ;  echo '"}}' >> body; curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -X PATCH -H "Content-type: application/json" -d @body -o return_body https://www.googleapis.com/storage/v1/b/manifest-geode-357/o/empty
$echo'{“metadata”:{“large”:“>body;tr-dC'[:print:]”>body;echo'}>>body;curl-H“授权:承载$(gcloud auth print access token)”-X PATCH-H“内容类型:application/json“-d@body-o返回\u bodyhttps://www.googleapis.com/storage/v1/b/manifest-geode-357/o/empty
我发现在2097KB的头上,服务返回“HTTP 413请求太大”,并且没有设置元数据。低于该水平时,将按预期设置。如果我使用更可压缩的输入(例如,
yes
的输出),我可以获得更多数据,但截止值在相同的内容长度值(即压缩后)。由于2097KB==2MiB几乎完全相同,我希望真正的限制是整个HTTP请求必须适合2MiB


然而布兰登的评论是正确的:这不是一个好主意,原因有很多:

  • 这将导致您消耗更多带宽(相关的性能和成本损失)
  • 您不会在存储成本上节省任何资金(因为元数据仍然是收费的)
  • 它依赖于未记录的行为,谷歌可能会在没有任何通知的情况下更改这些行为
  • 与真实对象数据不同,上传时没有可恢复的行为,因此错误对您的影响更大
  • 上载过程中没有校验和来验证完整性
  • 许多客户端库可能将元数据存储在内存中,而不是存储在磁盘上,或者保留多个副本,因此您更可能在应用程序中看到内存压力
  • 只需将清单存储在单独的对象中,即可解决所有这些问题。您可以将清单的位置存储在元数据中,并从这两个选项中获益。

    根据

    这里是每个对象的所有自定义元数据键和8 KiB值的最大组合大小限制


    你可以试试,但是元数据存储是以正常的速度计算和计费的。关键是放一些东西在里面,让我知道我是否想要3Gig的文件…这是没有记录的,只有谁尝试过或者工程师知道。你为什么不试试把3GB放进去呢?我不知道元数据的限制是什么,但我并不建议你放大量的数据进去。自定义元数据经常作为对象列表等操作的一部分返回,如果在其中放入大量数据,则返回的速度可能会慢得多,带宽也会更大。我建议创建一个相关的“summary”对象,并在主对象的自定义元数据中引用该对象的名称。通过gzip输入的1MB“ABC”仅变为1KB。如果数据有点随机,会发生什么?使用
    tr-dC'[:print:'
    来打印随机打印的非字符,而不是“yes”,我发现阈值在。。。。。。。。2097KB,正如预测的那样。这基本上就是2MB。编辑答案以反映这一点。这对我来说已经足够好了。不过,这笔赏金是由其他人提供的。