gpt4 book ai didi

php - 批量修改谷歌云存储ACL权限

转载 作者:可可西里 更新时间:2023-11-01 01:00:23 26 4
gpt4 key购买 nike

我一直在通过与云存储桶直接关联的 App Engine 使用以下 ACL 属性制作我的文件。

$options = stream_context_create(['gs'=>['acl'=>'private']]);

如果我想从我的 App Engine 脚本编辑和查看文件,这很好。但是,我希望能够从完全不同的 Google App Engine 项目 ID 访问这些文件。甚至计算引擎。

当前 ACL 设置为私有(private),我意识到这可能是不可能的。

在我的包含这些私有(private) ACL 文件的存储桶中,我将存储桶权限设置为我的不同项目 ID 的所有者,它适用于未设置为私有(private)的文件。

我想知道我是否可以批量将存储桶中的所有文件更改为正确的 ACL。我有数百个文件,很难逐一完成。目前,如果我点击一个文件并查看它的权限,那里什么也没有(因此是私有(private)的)。


这是我尝试使用 gsutil

从文件中获取特定 ACL 时得到的结果
$ gsutil acl get gs://bucket/file
AccessDeniedException: Access denied. Please ensure you have OWNER permission on gs://bucket/file

这是我在使用 gsutil ch 命令添加用户组时得到的结果

$ gsutil acl ch -u <project_id>@appspot.gserviceaccount.com:W gs://bucket/file
ERROR 0313 15:29:18.896421 retry_decorator.py] Retrying in 1.00 seconds ...
Traceback (most recent call last):
File "/usr/lib/google-cloud-sdk/platform/gsutil/third_party/retry-decorator/retry_decorator/retry_decorator.py", line 20, in f_retry
return f(*args, **kwargs)
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/commands/acl.py", line 372, in ApplyAclChanges
fields=['acl', 'generation', 'metageneration'])
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/cloud_api_delegator.py", line 199, in GetObjectMetadata
bucket_name, object_name, generation=generation, fields=fields)
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/gcs_json_api.py", line 513, in GetObjectMetadata
generation=generation)
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/gcs_json_api.py", line 1018, in _TranslateExceptionAndRaise
raise translated_exception
AccessDeniedException: AccessDeniedException: 403 Forbidden
ERROR 0313 15:29:19.995003 retry_decorator.py] Retrying in 2.05 seconds ...
Traceback (most recent call last):
File "/usr/lib/google-cloud-sdk/platform/gsutil/third_party/retry-decorator/retry_decorator/retry_decorator.py", line 20, in f_retry
return f(*args, **kwargs)
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/commands/acl.py", line 372, in ApplyAclChanges
fields=['acl', 'generation', 'metageneration'])
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/cloud_api_delegator.py", line 199, in GetObjectMetadata
bucket_name, object_name, generation=generation, fields=fields)
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/gcs_json_api.py", line 513, in GetObjectMetadata
generation=generation)
File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/gcs_json_api.py", line 1018, in _TranslateExceptionAndRaise
raise translated_exception
AccessDeniedException: AccessDeniedException: 403 Forbidden
AccessDeniedException: 403 Forbidden

我假设我可能必须编写一个在我的应用程序引擎中运行的 php 脚本,它遍历每个文件并更改或添加权限?

非常感谢任何帮助,谢谢。

最佳答案

将 ACL 设置为私有(private)后,只有创建该对象的 AppEngine 服务帐户才能修改 ACL。

您可能必须使用 one of the API client libraries 编写程序并在 AppEngine 上执行。

或者,我认为默认的 GCE 服务帐户与 AppEngine 共享,因此如果您创建一个具有 devstorage.full_control 范围的 VM,我认为您应该能够在 VM 中使用 gsutil 修改 ACL。

关于php - 批量修改谷歌云存储ACL权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29024273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com