google-cloud-storage - 在没有完全访问权限的情况下更新 Google Storage 对象元数据

标签 google-cloud-storage

当使用具有对存储桶的读/写(但非完全)访问权限的 OAuth2 身份验证 token 时,是否可以更新 Google Storage 中对象的元数据?

我天真的尝试(将 x-goog-copy-source 设置为同一对象的 HTTP PUT,并且 x-goog-metadata-directive: REPLACE) 失败并出现 AccessDenied 错误。 gsutil 似乎也有同样的问题:

$ gsutil config -r -w 
[...]
$ echo hello > foo.txt
$ gsutil -h "x-goog-meta-foo: bar" cp foo.txt gs://nikratio-test/
Copying file://foo.txt [Content-Type=text/plain]...
Uploading   gs://nikratio-test/foo.txt:                          0 B/6 B    
$ gsutil stat gs://nikratio-test/foo.txt
gs://nikratio-test/foo.txt:
    Creation time:      Sun, 09 Nov 2014 22:34:22 GMT
    Content-Language:   en
    Content-Length:     6
    Content-Type:       text/plain
    Metadata:
        foo:         bar
    Hash (crc32c):      NT3Yvg==
    Hash (md5):     sZRqySSS0jR8YjW00mERhA==
    ETag:           CID8ka7K7sECEAE=
    Generation:     1415572462272000
    Metageneration:     1
$ gsutil setmeta -h "x-goog-meta-foo: com" gs://nikratio-test/foo.txt
Setting metadata on gs://nikratio-test/foo.txt...
AccessDeniedException: 403 Forbidden

我认为这是因为 setmeta 操作还允许我更改对象的 ACL。 然而,在我看来,如果我能够删除该对象并使用相同的授权使用不同的元数据重新上传它,那么确实应该有一种方法来更改元数据。

最佳答案

设置元数据适用于 OAuth2。我建议运行此 gsutil 命令并将其生成的协议(protocol)输出与您正在执行的操作进行比较:

gsutil -o GSUtil:prefer_api=xml -d setmeta -h x-goog-meta-data-00:gAJ9cQBYBQAAAGFwcGxlcQFYCAAAAHBvdGF0b2VzcQJzLg gs://your-bucket/your-object

关于google-cloud-storage - 在没有完全访问权限的情况下更新 Google Storage 对象元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24718787/

相关文章:

django - 502错误的网关。 Django 谷歌应用引擎

firebase - 为什么 firestore 在删除所有文档和集合时不删除存储的字节和对象?

firebase - 如何根据用户auth uid授予对Google云存储桶的访问权限

google-cloud-storage - 如何从 dockerfile 访问 Google Cloud Storage

crontab gsutil 命令执行但没有输出

ios - 在带有 Google Cloud Endpoints 客户端的 iOS Swift 项目中使用 Google API 客户端库

python - 使用 Blobstore API 和 Images API 在 GAE 中直接从 GCS 提供图像

php - 如何使用谷歌云存储作为 Laravel 5 文件系统?

javascript - 如何在浏览器中从 Firebase 函数触发 GCS 中图像的下载?

java - fhir.executeBundle 替换资源 id...如何防止这种情况?