6
votes

I made a publicly listable bucket on google cloud storage. I can see all the keys if I try to list the bucket objects in the browser. I was trying to use the create_anonymous_client() function so that I can list the bucket keys in the python script. It is giving me an exception. I looked up everywhere and still can't find the proper way to use the function.

from google.cloud import storage

client = storage.Client.create_anonymous_client()
a = client.lookup_bucket('publically_listable_bucket')
a.list_blobs()

Exception I am getting:

ValueError: Anonymous credentials cannot be refreshed.

Additional Query: Can I list and download contents of public google cloud storage buckets using boto3, If yes, how to do it anonymously?

2
As the docs state: "Boto is the Amazon Web Services (AWS) SDK for Python" As such it isn't designed to be used for Google related services, you'd be better off using a library expressly designed for them. Source: boto3.readthedocs.io/en/latest/index.htmlgjtempleton

2 Answers

2
votes

I was also struggling with thing and couldn't find an answer anywhere online. Turns out you can access the bucket with just the bucket() method.

I'm not sure why, but this method can take several seconds sometimes.

client = storage.Client.create_anonymous_client()

bucket = client.bucket('publically_listable_bucket')

blobs = list(bucket.list_blobs())
1
votes

This error means the bucket you are attempting to list does not grant the right permission. You must Give "Storage Object Viewer" or "Storage Legacy Bucket Reader" role to "allUsers".