How do you make many files public in Google Cloud Storage?
Solution 1:
Run gsutil -m acl set -R -a public-read gs://bucket
- The
-m
issues multiple requests at the same time. - The
-R
issues requests for every object in your bucket. - The
-a
issues requests for every version of every object.
See gsutil help acl
for more info.
At the API layer gsutil issues the following HTTP request:
PUT /bucket/obj?acl HTTP/1.1
Host: storage.googleapis.com
x-goog-acl: public-read
You can see this by using the -D
flag with gsutil
:
gsutil -D setacl public-read gs://bucket/obj
Solution 2:
You can make all objects in a bucket public. Here's the link.
- Open the Cloud Storage browser in the Google Cloud Platform Console.
- In the list of buckets, click on the name of the bucket that you want to make public.
- Select the Permissions tab near the top of the page.
- Click the Add members button.
The Add members dialog box appears.- In the Members field, enter allUsers.
- In the Roles drop down, select the Storage sub-menu, and click the Storage Object Viewer option.
- Click Add.
Once shared publicly, a link icon appears for each object in the public access >column. You can click on this icon to get the URL for the object.
Solution 3:
When you run: gsutil -m acl set -R -a public-read gs://bucket
you define public read for all the objects currently in your bucket, but when you upload new files they wont be public by default.
What I found is that is worth to define a bucket default acl as public-read gsutil defacl set public-read gs://bucket
Solution 4:
The easiest way to accomplish this would be by using a console.
Click on "Edit bucket permissions"
Enter allUsers
in Add Members.
Then Select Role
> Storage
> Storage Object Viewer
Attention! This will give read permission to all the people on the internet to all the objects in that selected bucket.