s3www
s3www copied to clipboard
Serve static files from any S3 compatible object storage services (Let's Encrypt ready)
Serve static files from any S3 compatible object storage endpoints.
Simplifies and secure AWS S3 Static Website Hosting by keeping your bucket private, secure, run-anywhere you like and with Automatic TLS based on Let's Encrypt.
Features
- Automatic credentials rotation when deployed on AWS EC2, ECS or EKS services for your AWS S3 buckets - yay! 🔒😍
- Automatic certs renewal for your DOMAIN along with OCSP stapling, full suite of ACME features, HTTP->HTTPS redirection (all thanks to certmagic).
Install
Released binaries are available here, or you can compile yourself from source.
NOTE: minimum Go version needed is v1.18
go install github.com/harshavardhana/s3www@latest
Binary
Make sure you have index.html
under mysite
s3www -endpoint "https://s3.amazonaws.com" -accessKey "accessKey" \
-secretKey "secretKey" -bucket "mysite"
s3www: Started listening on http://127.0.0.1:8080
Point your web browser to http://127.0.0.1:8080 ensure your s3www
is serving your index.html
successfully.
Container
Make sure you have index.html
under mysite
podman run --rm -p 8080:8080 y4m4/s3www:latest \
-endpoint "https://s3.amazonaws.com" \
-accessKey "accessKey" \
-secretKey "secretKey" \
-bucket "mysite" \
-address "0.0.0.0:8080"
s3www: Started listening on http://0.0.0.0:8080
Point your web browser to http://127.0.0.1:8080 ensure your s3www
is serving your index.html
successfully.
Auto TLS
Make sure you have index.html
under mysite
s3www -endpoint "https://s3.amazonaws.com" -accessKey "accessKey" \
-secretKey "secretKey" -bucket "mysite" \
-lets-encrypt -address "example.com"
s3www: Started listening on https://example.com
Point your web browser to https://example.com ensure your s3www
is serving your index.html
successfully.
Permissions
AWS IAM Policy
s3www requires access to view and list all files in the bucket.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<Bucket Name>/*"
},
{
"Sid": "",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::<Bucket Name>"
}
]
}
License
This project is distributed under the Apache License, Version 2.0, see LICENSE for more information.