End-to-end implementation of a static website hosted on AWS S3. Includes bucket creation, public access policy setup, static website hosting configuration, and security considerations.
Implemented an end-to-end static website hosting solution using AWS S3, covering bucket provisioning, policy configuration, public content delivery, and website hosting. The project demonstrates practical cloud deployment skills and an understanding of secure access management in AWS.
The goal of this project was to:
- Create an Amazon S3 bucket
- Upload static website files
- Configure bucket permissions
- Enable public access
- Enable Static Website Hosting
- Make the website accessible through a public S3 endpoint
User Browser
|
v
Amazon S3 Bucket
|
v
Static Website Hosting Endpoint
- Log in to the AWS Management Console.
- Navigate to Amazon S3.
- Click Create bucket.
- Enter a globally unique bucket name.
- Select your preferred AWS Region.
- Leave default settings unless customization is required.
- Click Create bucket.
- Open the newly created bucket.
- Click Upload.
- Add website files:
- index.html
- style.css
- script.js
- Complete the upload process.
By default, S3 blocks public access to protect resources.
-
Navigate to:
- Bucket
- Permissions
- Block Public Access
-
Click Edit.
-
Uncheck:
- Block all public access
-
Acknowledge the warning.
-
Save changes.
Attach a bucket policy to allow public read access.
Replace YOUR-BUCKET-NAME with your actual bucket name.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadAccess",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::YOUR-BUCKET-NAME/*"
}
]
}-
Navigate to:
- Bucket
- Properties
-
Scroll to Static website hosting.
-
Click Edit.
-
Enable Static Website Hosting.
-
Specify:
- Index document:
index.html
- Index document:
-
Save changes.
After enabling Static Website Hosting, AWS generates a website endpoint.
Example:
[http://my-static-site.s3-website-us-east-1.amazonaws.com](https://chala-s3-demo-bucket.s3.eu-west-1.amazonaws.com/SBuzz_PowerBi.png)
Open the endpoint in a browser to verify the website is publicly accessible.
This project intentionally enables public access to host a public website.
For production environments:
- Use CloudFront for content delivery.
- Enable HTTPS.
- Restrict unnecessary permissions.
- Implement AWS WAF where appropriate.
- Follow the Principle of Least Privilege.
During this project, I learned:
- How Amazon S3 stores and serves static content.
- How bucket policies control access.
- The relationship between Block Public Access settings and bucket policies.
- How Static Website Hosting works in AWS.
- Security implications of public S3 buckets.
- Integrate Amazon CloudFront
- Configure HTTPS with AWS Certificate Manager
- Register a custom domain using Route 53
- Implement CI/CD deployment pipeline
Elochukwu Princewill
Cloud Computing • Cybersecurity
Feel free to ⭐ star this repository and explore my other AWS hands-on projects as I continue building practical cloud engineering solutions.




