【问题标题】:Unable to share File Object publicly even though ACL is set即使设置了 ACL,也无法公开共享文件对象
【发布时间】:2018-12-05 12:54:53
【问题描述】:

我们正在使用 @google-cloud/storage @2.3.1 并希望公开上传的文件。

我们按照这个例子使用createWriteStream 方法创建我们的文件对象:

gcFile.createWriteStream({
  predefinedAcl: 'publicRead',
});

但是,该文件仍然在 Public access 列中显示 Not public

我们决定在根据API reference(实际上是上面的别名)创建流时尝试使用public 布尔值 - 文件无法公开访问:

gcFile.createWriteStream({
  public: true,
});

接下来,我们尝试使用File 对象上的makePublic 方法公开文件:

const file = gcs.bucket('our_bucket_name').file('file_path_here');
await file.makePublic();
const acl = await file.acl.get();
console.log(acl);

这会记录对象的以下 ACL:

[
  [
    { 
      entity: 'owner@our-project-name.iam.gserviceaccount.com',
      role: 'OWNER'
    },
    { 
      entity: 'allUsers', 
      role: 'READER' 
    }
  ],
  { 
    kind: 'storage#objectAccessControls',
    items: 
      [ 
        [Object], 
        [Object] 
      ] 
  }
]

所以看起来我们满足了以下条件documented here

The Access Control List (ACL) for the object includes an entry for 
allUsers or allAuthenticatedUsers.

If these conditions are met, the public access column for the object 
reads Public.`

但是,该列仍显示为Not public

虽然权限看起来正确,但我们还通过关注 the steps described here 在 Cloud Console 中检查了权限。

在编辑权限时,它清楚地表明该对象是可公开访问的,但它没有在概述中显示公共链接?

我们可以通过在 Bucket 级别设置公共访问来公开文件,但我们真的很喜欢它在每个对象级别。我们怎样才能让它发挥作用?

【问题讨论】:

  • 感谢发帖...同样的事情发生在这里。
  • this page 描述了如何使用以下 url 格式访问公共共享对象(检查 API 链接部分):http://storage.googleapis.com/[BUCKET_NAME]/[OBJECT_NAME]。有趣的是:这确实有效,尽管 Cloud Storage 浏览器仍在 Public access 列中显示 Not public

标签: node.js google-cloud-storage


【解决方案1】:

这是昨天解决的错误。感谢您提出问题!

干杯!

【讨论】:

  • 现在可以正常通过了 - 感谢更新!
【解决方案2】:

对我有用的是将 allUsers 添加到存储桶的以下权限:Storage Object Viewer、Storage Legacy Object Reader。

它们不允许公众列出存储桶,而是读取存储桶内部的对象。

Permissions on console

【讨论】:

  • 嗨 Kago,感谢您的参与 - 这确实有效,您所描述的称为 使对象组公开可读 described here。在同一页面上,有一个指南可以根据每个对象执行此操作(使单个对象公开可读)。在我们看来,它也应该可以在不更改存储桶级别的权限的情况下实现。
猜你喜欢
  • 1970-01-01
  • 2020-05-05
  • 2011-12-23
  • 1970-01-01
  • 2013-04-21
  • 2013-05-05
  • 2017-05-21
  • 2012-05-24
  • 2014-02-10
相关资源
最近更新 更多