使用 AWS 和 Git 构建静态网站实战指南
项目介绍
本项目提供了一个基于 AWS CloudFormation 的 YAML 模板,能够自动化部署一个由 Git 存储库支持的静态网站。该模板配置了 AWS CodeCommit 作为默认的源代码管理平台,并自动将仓库中的任何更新部署到 HTTPS 静态网站上。此外,它灵活地支持通过静态站点生成器(如 Hugo)来处理内容,从而允许更复杂的站点结构和动态生成的页面。项目无需持续维护基础设施,并在轻量级流量下几乎不产生成本。
项目快速启动
准备工作
确保您拥有有效的 AWS 账户并安装了 AWS CLI。
步骤一:配置环境变量
设置您的域名和电子邮件地址,这两个参数是创建堆栈所必需的:
export domain=example.com
export email=you@example.com
步骤二:部署 CloudFormation 堆栈
使用以下命令创建 CloudFormation 堆栈,这里我们采用默认的身份转换插件,但也可以选择其他插件如 Hugo:
export template=aws-git-backed-static-website-cloudformation.yml
export stackname=${domain//-}/$(date +%Y%m%d-%H%M%S)
export region=us-east-1
aws cloudformation create-stack \
--region "$region" \
--stack-name "$stackname" \
--capabilities CAPABILITY_IAM \
--template-body "file://$template" \
--tags "Key=Name,Value=$stackname" \
--parameters "ParameterKey=DomainName,ParameterValue=$domain" \
"ParameterKey=NotificationEmail,ParameterValue=$email"
echo "Region: $region StackName: $stackname"
步骤三:验证和后续操作
- 批准 SNS 订阅:检查用于通知的邮件,批准订阅。
- 证书验证:如果选择了邮箱验证,确认域名所有权;如果是DNS验证,在ACM中手动处理。
- 获取名称服务器和Git仓库URL,以便指向您的注册商和开始添加网站内容。
应用案例和最佳实践
这个架构特别适合于个人博客、小型企业网站或者任何需要频繁更新内容且希望利用Git版本控制的静态网页。最佳实践中,应定期备份S3桶中的网站数据,使用CI/CD流程自动化内容更新,并考虑数据加密以增强安全性。
典型生态项目
此项目不仅限于 AWS CodeCommit,还通过社区的努力扩展到了支持GitHub作为源码存储库的选项。这意味着您可以利用GitHub的全部功能,包括Pull Requests、Issue跟踪等,同时保持网站部署的自动化。要使用GitHub,需先在GitHub上创建个人访问令牌,并将其保存在AWS Systems Manager (SSM) Parameter Store中。然后在创建CloudFormation堆栈时指定相关参数,实现从GitHub仓库的直接集成。
这个项目展示了如何结合现代云服务和版本控制系统,轻松构建和管理静态网站,同时也体现了云原生技术栈的强大灵活性和便利性。