There are several ways to make objects in an S3 bucket public. The first is to use the following bucket policy:
{
"Version": "2012-10-17",
"Statement": {
"Action": "s3:GetObject",
"Effect": "Allow",
"Resource": "arn:aws:s3:::my-bucket/*",
"Principal": "*"
}
}

This (& other) policies can be generated using AWS’s official policy generator at awspolicygen.s3.amazonaws.com/policygen.html:

You can also use the (legacy) Access Control Lists to allow public read:

If you’re using the S3 CLI to synchronize local directories with an S3 bucket & want all such files to be public, do this:
aws s3 sync ./local-directory s3://my-bucket --acl=public-read
Also see: