【问题标题】:Google Cloud Storage Java API - Deleting a fileGoogle Cloud Storage Java API - 删除文件
【发布时间】:2023-07-26 20:17:01
【问题描述】:

如何在 GCS 存储桶上设置“WRITER”权限?

我正在尝试使用以下方法删除云存储上的文件:

cloudstorage.objects().delete(bucket, object).execute();

并得到以下错误:

{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "Forbidden",
    "reason" : "forbidden"
  } ],
  "message" : "Forbidden"
}

【问题讨论】:

    标签: java google-cloud-storage


    【解决方案1】:

    使用 gsutil,如下所示:

    gsutil acl ch -u email@address.com:W gs://bucket-name 
    

    或者,您可以转到Developer's Console,前往存储 > 云存储 > 存储浏览器,单击“...”,然后单击“编辑存储桶权限”,然后单击“+ 添加项目”,选择“用户”、电子邮件地址和 Writer,然后单击“保存”。

    或者,您可以使用 JSON API 以编程方式执行此操作,使用 storage.bucketAccessControls.insert 方法。

    【讨论】:

    • 您能否指导我如何通过 Java API 以编程方式执行此操作?您提供的链接有 python 选项,但没有 java 选项。
    • 我能问一下你想做什么吗?如果您正在运行的应用程序有权更改存储桶的权限,它也有权删除该存储桶中的任何对象。
    • 我通过将存储桶的权限更改为所有用户(通过管理控制台)来使其工作。有没有办法让 java 应用程序以与我相同的用户身份运行(当我使用我的凭据通过浏览器登录时?)目前该应用程序正在以不同的用户身份运行。我在云控制台中使用我的凭据创建了存储桶。所以 java 应用程序无权更改任何内容。它只有读取权限。
    • 这是一个应用引擎应用程序吗?在那种情况下,没有。 App 引擎应用作为与您的项目关联的服务帐户运行。不过,您可以授予该服务帐户权限。