Google 存储 Python ACL 更新不工作

Google Storage Python ACL Update not Working

我已将一张图像文件上传到我的 google 存储桶。

  #Block 1
  #Storing the local file inside the bucket
  blob_response = bucket.blob(cloud_path) 
  blob_response.upload_from_filename(local_path, content_type='image/png')  

文件上传正常。我验证存储桶中的文件。 上传文件后,以相同的方法,我尝试将文件的 acl 更新为 publicly accessible as:

  #Block 2
  blob_file = storage.Blob(bucket=bucket20, name=path_in_bucket)
  acl = blob_file.acl
  acl.all().grant_read()
  acl.save()

这不会生成文件 public。

奇怪的是,在我运行上面的上传方法之后,如果我只是调用#Block 2代码。分别在 jupyter notebook 中;它工作正常,文件变得 public 可用。

我试过:

感谢任何帮助。

如果您要将上传的文件从 upload_from_filename() 更改为 public,您可以重新使用上传的 blob。此外,在更改权限之前添加 acl 的重新加载。这一切都是使用 GCP AI 平台在 Jupyter Notebook 中的 1 个块中完成的。

# Block 1
bucket_name = "your-bucket"
destination_blob_name = "test.txt"
source_file_name = "/home/jupyter/test.txt"

storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(destination_blob_name)
blob.upload_from_filename(source_file_name)

print(blob) #prints the bucket, file uploded
blob.acl.reload() # reload the ACL of the blob
acl = blob.acl
acl.all().grant_read()
acl.save()

for entry in acl:
        print("{}: {}".format(entry["role"], entry["entity"]))

输出: