S3 buckets are by default private to avoid accidental exposure of private data to the public. To allow public access to objects or files in your S3 buckets, you can either configure public access on the individual objects, or to configure public access to the entire bucket.

To create an S3 bucket that is publicly accessible such as to host website assets, you'll need to create an S3 bucket just like a normal private bucket, and then to enable appropriate public access settings for the bucket along with the corresponding Bucket policy.

Steps to create public AWS S3 bucket:

  1. Create a private S3 bucket if you don't already have one.

  2. Go to S3 section in your AWS Console.

  3. Click on the private S3 bucket that you want to make public.
  4. Click on the Permissions tab of your S3 bucket.

  5. Go to Block public access section and click on Edit.
  6. Click to uncheck the Block all public access checkbox.
  7. Click on the Save changes button.
  8. Type confirm in the textbox to confirm your action.
  9. Click on the Confirm button.

  10. Scroll down to the Bucket policy section.
  11. Click on the Edit button.
  12. Enter the policy to make your S3 bucket public or use the Policy generator.

    {   "Version":"2012-10-17",   "Statement":[     {       "Sid":"AddPerm",       "Effect":"Allow",       "Principal": "*",       "Action":["s3:GetObject"],       "Resource":["arn:aws:s3:::simplified-guide/*"]     }   ] }

    Replace simplified-guide with your own bucket name.

  13. Click on the Save changes button.
  14. Go to the Objects tab.

  15. Click on an object.
  16. Click on the link on the Object URL section.
  17. View the object using the publicly accessible URL.