There are a couple of steps that need to take to make any S3 bucket publicly readable, first uncheck the rules that block the bucket from being publicly accessible and then apply an appropriate S3 bucket policy that grants required access to the required audience.

1. Click on the bucket that you want to make public and then select the Permissions tab and then select Block public access on the right hand side you will see an Edit button.

edit Block all public access s3 setting

2. Click on the Edit button and then you will get the option to uncheck the rules / settings that prevent S3 bucket from being public.
Make sure that Block all public access is unchecked and then save it.

Edit Bucket Public Access

Following popup box will appear type confirm and then click on Confirm.

Confirm Public Bucket

3. Now it is time to apply an appropriate S3 Bucket Policy which tells what all actions can be performed on this bucket and by whom. The policy is written in simple JSON. There are multiple actions and users can be defined in the policy but the following example allows read access to all the users who have a valid S3 object URL.

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"PublicRead",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::cloudgeeksquad.com/*"]
    }
  ]
}

In above policy in the Resource section you need to replace cloudgeeksquad.com with your S3 bucket name.

4. Now Let’s apply this policy to the S3 Bucket. Click on the Bucket Policy tile under the Permission tab. Paste the policy in Bucket Policy Editor and click on Save.

Apply Bucket Policy
Public Bucket

Just like that you have the public bucket now anyone who has a valid URL to objects stored in S3 can access the files.

Public S3 Access

Access Denied while making S3 Bucket Public

If you are getting Access Denied error while applying the S3 Bucket Policy that means you have not disabled the Block all public access setting mentioned in step 1. Disable those settings and you are good to go.

Now the bucket is public if you ever have to make it private again just remove Bucket Policy and enable the Block all public access setting.