{"id":48621159,"url":"https://github.com/zoph-io/aws-internal-static-web-hosting","last_synced_at":"2026-04-09T03:36:23.381Z","repository":{"id":211047706,"uuid":"727810991","full_name":"zoph-io/aws-internal-static-web-hosting","owner":"zoph-io","description":"Host Internal Static Website on AWS","archived":false,"fork":false,"pushed_at":"2023-12-06T07:15:25.000Z","size":226,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2023-12-07T08:07:39.960Z","etag":null,"topics":["aws","hosting","internal","private","static","website"],"latest_commit_sha":null,"homepage":"https://zoph.io","language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zoph-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-12-05T16:12:06.000Z","updated_at":"2023-12-07T07:03:10.000Z","dependencies_parsed_at":"2023-12-06T08:17:36.252Z","dependency_job_id":null,"html_url":"https://github.com/zoph-io/aws-internal-static-web-hosting","commit_stats":null,"previous_names":["zoph-io/aws-internal-static-web-hosting"],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/zoph-io/aws-internal-static-web-hosting","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoph-io%2Faws-internal-static-web-hosting","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoph-io%2Faws-internal-static-web-hosting/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoph-io%2Faws-internal-static-web-hosting/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoph-io%2Faws-internal-static-web-hosting/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zoph-io","download_url":"https://codeload.github.com/zoph-io/aws-internal-static-web-hosting/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoph-io%2Faws-internal-static-web-hosting/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31584809,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"online","status_checked_at":"2026-04-09T02:00:06.848Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","hosting","internal","private","static","website"],"created_at":"2026-04-09T03:36:20.837Z","updated_at":"2026-04-09T03:36:23.376Z","avatar_url":"https://github.com/zoph-io.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🏰 AWS Internal Static Web Hosting\n\n## :brain: Rationale\n\nWhen considering hosting a static website on AWS, the go-to solution often involves combining CloudFront with S3. However, if your project entails stringent privacy requirements and is intended solely for internal users, configuring CloudFront with these constraints can be both complex and challenging.\n\nThis blueprint provides a detailed example of hosting a static website internally on AWS, utilizing an **Internal** Application Load Balancer (ALB), an S3 VPC Endpoint Interface, and a Private S3 Bucket. This setup ensures enhanced privacy and internal access control.\n\nYou are encouraged to tailor this blueprint to fit your specific requirements.\n\nAdditionally, contributions through pull requests for further improvements are always welcome.\n\n## 📋 Requirements\n\n1. Route53 Hosted Domain\n2. ACM Certificate\n3. VPC with Private Subnets\n\n## 📐 Architecture\n\n![Architecture Diagram](assets/architecture.png)\n\n## :keyboard: Usage\n\nFirst, you will need to adapt the parameters in the `Makefile`.\n\nThen, run the following command:\n\n    $ make deploy\n\n## 🖌️ Static Website\n\nYou will have to deploy your static website into the created S3 bucket that is named with your `DomainName` variable. Done ✅.\n\n## ✋ CleanUp\n\n    $ make tear-down\n\n## :man_technologist: Credits\n\n- 🏴‍☠️ AWS Security Boutique: [zoph.io](https://zoph.io?utm_source=aiswh)\n- 💌 [AWS Security Digest Newsletter](https://awssecuritydigest.com?utm_source=aiswh)\n- 🐦 𝕏/Twitter: [zoph](https://twitter.com/zoph)\n\n## 🤔 Inspiration\n\n- [Hosting Internal HTTPS Static Websites with ALB, S3, and PrivateLink](https://aws.amazon.com/blogs/networking-and-content-delivery/hosting-internal-https-static-websites-with-alb-s3-and-privatelink/) from Schuyler Jager\n- [Dealing with missing !Ref in CloudFormation](https://dev.classmethod.jp/articles/transfer-for-sftp-restrict-ip-cloudformation/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzoph-io%2Faws-internal-static-web-hosting","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzoph-io%2Faws-internal-static-web-hosting","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzoph-io%2Faws-internal-static-web-hosting/lists"}