joshuamichaelhall/federal-cloud-resume
GitHub: joshuamichaelhall/federal-cloud-resume
基于 AWS Serverless 架构的个人简历网站模板,集成访问计数功能并遵循联邦安全合规标准。
Stars: 1 | Forks: 0
# 联邦云简历
**在线网站:** https://joshuahall.tech
生产级 Serverless 云简历,展示了 AWS 架构基础知识和安全最佳实践。由一名拥有 3 年以上 MSP 安全经验的 CMMC 注册从业者(已通过 CCP 考试)构建。
## 架构概述
本项目使用 AWS 托管服务实现了一个 Serverless Web 应用程序:
```
User Browser
↓ HTTPS
CloudFront (CDN + SSL)
↓
S3 (Static Website Hosting)
↓ JavaScript fetch()
API Gateway (REST API)
↓
Lambda (Python 3.12)
↓
DynamoDB (Visitor Counter)
```
## 技术栈
**前端:**
- HTML5/CSS3 - 响应式设计,采用适合联邦风格的样式
- JavaScript - 用于访问计数器的 API 集成
**后端:**
- Python 3.12 - Lambda 函数运行时
- Boto3 - 用于 DynamoDB 操作的 AWS SDK
**基础设施:**
- **S3** - 静态网站托管
- **CloudFront** - 具有边缘缓存的全球 CDN
- **ACM** - SSL/TLS 证书管理
- **API Gateway** - RESTful API 端点
- **Lambda** - 用于访问计数器的 Serverless 计算
- **DynamoDB** - 具有原子计数器的 NoSQL 数据库
- **IAM** - 最小权限访问策略
## 安全实现
- **HTTPS 强制执行** - 通过 CloudFront 使用 ACM 证书
- **IAM 最小权限** - Lambda 执行角色仅限于 DynamoDB UpdateItem
- **CORS 配置** - 正确的跨源资源共享
- **原子操作** - DynamoDB 条件更新防止竞态条件
- **加密** - 数据静态加密和传输中加密 (HTTPS)
## 架构决策
**为什么选择 Serverless?**
- 零服务器管理开销
- 按使用量付费的定价模式
- 针对流量高峰自动扩容
- 内置高可用性
**为什么选择 DynamoDB 而不是 RDS?**
- Serverless 计费模式(按请求付费)
- 个位数毫秒级延迟
- 原子计数器操作
- 无需管理连接池
**为什么选择 CloudFront?**
- 全球边缘缓存降低延迟
- SSL/TLS 终止
- 通过 AWS Shield Standard 提供 DDoS 保护
- 静态内容交付具有成本效益
## 项目结构
```
.
├── index.html # Main resume page
├── styles.css # Professional styling
├── lambda/
│ └── visitor-counter.py # Lambda function for DynamoDB updates
└── README.md # This file
```
## 本地开发
要在本地使用此项目:
```
# 克隆 repository
git clone https://github.com/joshuamichaelhall/federal-cloud-resume.git
cd federal-cloud-resume
# 在 browser 中打开
open index.html
# 注意:Visitor counter 需要 AWS infrastructure
```
## 部署
本项目使用 AWS 控制台通过以下手动步骤进行部署:
1. 为静态网站托管配置 S3 存储桶
2. 具有自定义域名的 CloudFront 分配
3. 用于 HTTPS 的 ACM 证书
4. 具有按需计费的 DynamoDB 表
5. 具有 Python 3.12 运行时的 Lambda 函数
6. 具有 Lambda 代理集成的 API Gateway REST API
7. 用于最小权限访问的 IAM 角色和策略
**未来增强:** 使用 Terraform 或 CloudFormation 转换为基础设施即代码。
## 成本分析
低流量简历网站的每月预估成本:
- **S3:** ~$0.50 (1GB 存储,极少的请求)
- **CloudFront:** ~$1.00 (前 1TB 免费额度)
- **Lambda:** 免费额度 (100 万请求/月)
- **API Gateway:** ~$0.50 (100 万请求免费额度)
- **DynamoDB:** 免费额度 (25GB, 25 WCU/RCU)
- **Route 53:** $0.50/月 (托管区域)
**总计:** ~$2.50/月(第一年完全在 AWS 免费额度内)
## 性能指标
- **CloudFront 缓存命中率:** 静态资源 >95%
- **API Gateway 延迟:** <50ms (us-east-1)
- **Lambda 冷启动:** ~200ms
- **Lambda 热执行:** ~10ms
- **DynamoDB 读/写:** <10ms
## 安全控制对标
本项目展示了与联邦框架一致的安全控制:
- **NIST 800-53 SC-8** - 传输保密性 (HTTPS/TLS)
- **NIST 800-53 AC-6** - 最小权限 (IAM 策略)
- **NIST 800-53 SC-28** - 静态信息保护 (DynamoDB 加密)
- **NIST 800-53 AU-2** - 可审计事件 (CloudWatch 日志记录)
与保护云端托管资产的 CMMC Level 2 控制相关。
## 经验教训
**技术方面:**
- Lambda 代理集成需要特定的 API Gateway 响应格式
- CORS 配置必须在 API Gateway 和 Lambda 上一致
- DynamoDB 原子计数器无需锁即可防止竞态条件
- 立即更新内容需要 CloudFront 失效
**架构方面:**
- Serverless 显著降低了运维复杂性
- 边缘缓存极大地改善了全球用户体验
- IAM 最小权限可防止权限升级风险
- 监控和日志记录应从第 1 天开始实施
## 未来增强
本项目的潜在改进:
- [ ] CloudFormation 或 Terraform IaC 模板
- [ ] 使用 GitHub Actions 的 CI/CD pipeline
- [ ] 用于监控的 CloudWatch 仪表盘
- [ ] 用于增强安全性的 WAF 规则
- [ ] Lambda 函数单元测试
- [ ] 用于 API 调用的 CloudTrail 日志记录
- [ ] 使用 Lambda 预置并发进行成本优化
## 联系方式
**Joshua Michael Hall**
- 网站: https://www.joshuamichaelhall.com
- LinkedIn: https://www.linkedin.com/in/joshuamichaelhall/
- GitHub: https://github.com/joshuamichaelhall
## 致谢
本项目是在 Anthropic 的 Claude AI 助手协助下开发的,它提供了以下帮助:
- 代码模板
- 文档编写和组织
- 故障排除和调试协助
- 研究和想法生成
Claude 被用作开发辅助工具,所有最终的编辑和实现均由 Joshua Michael Hall 完成。
**项目状态:** ✅ 生产就绪且已上线
**完成日期:** 2025年11月21日
**在线网址:** https://joshuahall.tech
**作者:** CMMC 注册从业者 | AWS Solutions Architect Associate | Security+
标签:ACM证书, API Gateway, AWS, CISA项目, CloudFront, CMMC, DPI, DynamoDB, HTTPS, IAM最小权限, Lambda, NoSQL数据库, Python, S3静态网站, Serverless, 云简历, 后端开发, 基础架构即代码, 数据可视化, 无后门, 网站访问计数器, 联邦合规, 解决方案工程