【发布时间】:2015-05-15 11:10:00
【问题描述】:
我一直在通过与云存储桶直接关联的 App Engine 使用以下 ACL 属性制作文件。
$options = stream_context_create(['gs'=>['acl'=>'private']]);
如果我想从我的 App Engine 脚本编辑和查看文件,这很好。但是,我希望能够从完全不同的 Google App Engine 项目 ID 访问这些文件。甚至是计算引擎。
当前 ACL 设置为 private,我意识到这可能是不可能的。
在具有这些私有 ACL 文件的存储桶中,我将存储桶权限设置为我的不同项目 ID 的所有者,并且它适用于未设置为私有的文件。
我想知道是否可以批量将存储桶中的所有文件更改为正确的 ACL。我有数百个文件,很难一一进行。目前,如果我点击一个文件并查看它的权限,那里什么都没有(因此是私有的)。
这是我尝试使用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 脚本,该脚本会遍历每个文件并更改或添加权限?
任何帮助将不胜感激,谢谢。
【问题讨论】:
标签: php google-app-engine google-cloud-storage