【问题标题】:Google Cloud Storage permission error while setting file visibility during upload上传期间设置文件可见性时出现 Google Cloud Storage 权限错误
【发布时间】:2017-11-30 11:35:16
【问题描述】:

我正在尝试使用Laravel GCS wrapper 将图像上传到 GCS。我希望上传的每张图片都对任何人可见。我已将存储桶权限设置为任何人都可以读取和写入。

如果我这样做,它可以完美运行,但图像不公开:

Storage::disk('gcs')->put($location, $image);

但是,如果这样做,应该上传图像并将其公开,它会抛出错误

403 权限不足

Storage::disk('gcs')->setVisibility($filename, 'public')->put($location, $image);

所以->setVisibility() 给了我错误。

谁能解释我为什么?是代码问题还是存储桶权限?

【问题讨论】:

    标签: php laravel google-cloud-platform google-cloud-storage lumen


    【解决方案1】:

    当您说“我已将存储桶权限设置为对任何人都具有读写权限”时。我怀疑您的意思是您已在旧存储桶 ACL 上授予 allUsers:WRITER/allUsers:READER。

    旧版 ACL API 不支持在存储桶级别授予对象级别权限。因此存储桶上的 allUsers:READER 只授予对象列表权限,不授予对象获取权限。相反,您需要更改 default_object_acl 以向存储桶中创建的新对象授予权限。

    但是,您可能更愿意使用 IAM 来授予您想要的权限,而不是使用旧版 ACL API,因为这些权限将由存储桶中的所有对象继承,而不是在创建时设置在单个对象上。

    gsutil iam ch allUsers:objectViewer gs://ex-bucket

    【讨论】:

    • 您是否删除了“setVisibility”调用?不再需要。你应该只需要调用'Storage::disk('gcs')->put($location, $image);'并且该文件应该是公开可读的。
    • 哦,我的错。所以基本上所有上传的图片现在都对任何人都有读取权限?
    猜你喜欢
    • 2016-12-01
    • 2017-12-14
    • 2014-02-28
    • 2013-06-16
    • 2015-09-17
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多