
我用AWS建造了一个没有服务器的恢复站点. 这里的一切 打破沿途
经过十年的保险业务,我决定通过做"云再生挑战"来使我的支柱成为云工程官员! 我想按照现实世界的最佳做法来建造它,因此除了挑战所提供的步骤外,我还装入了用CloudFront Origin Access Control保证的一桶S3私人水桶,一个专用的最小特权的IAM用户范围只为我的CI/CD管道所需的权限,并用Moto来嘲弄单位测试,因此在测试时没有任何东西触及真正的AWS资源. 网站在德里克杰克森现场,点击 它是通过CloudFront在HTTPS上空服务的一个静态回放,由Lambda动力的访客计数器支撑,完全被编入Terraform,并通过GitHub Actions自动部署. 我是这样建造的,更重要的是,所有的一切...
经过十年的保险业务,我决定通过做"云再生挑战"来使我的支柱成为云工程官员!
我想按照现实世界的最佳做法来建造它,因此除了挑战所提供的步骤外,我还加入了一个用CloudFront Origin Access Control安全的私人S3水桶,一个专用的最小特权的IAM用户范围只为我的CI/CD管线所需的权限,并且用Moto来模拟单位测试,在测试过程中没有任何东西触及真正的AWS资源.
网站在德里克杰克森现场,点击 它是一个通过CloudFront在HTTPS上空服务的静态回放,由Lambda动力的访客计数器支持,完全被编入Terraform,并通过GitHub Actions自动部署.
这就是我如何建造它, 更重要的是,一切 出了问题。
建筑前端:S3存储了静态站点,与Block Public Access完全私有.
CloudFront坐落在S3前,使用Origin Access Control(OAC),因此CloudFront可以读取私家桶.
AWS 证书管理器会签发 HTTPS 证书( 请求在 us- East-1 中, 无论其余的基础设施在哪里部署, 硬 CloudFront 要求) 。 53路主机主机域并持有将它指向CloudFront的别名记录.
后端:DynamomDB有单项,点播台为访客计数.
Lambda (Python) 解剖学上的增量,每一次请求都要考虑,避免同时来客的种族条件.
API Gateway(HTTP API)通过一个公开的端点曝光了Lambda在页面被加载时的前端呼叫.
操作:代码由本地编写,存储并编辑. 2.pyest和moto测试了Lambda的功能,在任何事物触及AWS之前,针对一个被完全嘲笑的DynamotB.
3.
测试成功后,将启动管道的密码输入。
4.
GitHub Actions 部署 S3 的前端修改和后端修改 Lambda 在每次推向. 5 (韩语).
Terraform编纂并进口了所有13个活资源.
小嗝嗝#1:我的域名注册只是.
失败之前,我甚至可以开始工作,我的"路由53"域名注册失败,一个非常无益的错误:"我们不能完成你的域名注册".
原因是我的账户从免费升级到付费计划 引发了AWS一方的欺诈警报 阻碍了注册 我开了一个支助案件,它又被分配两天,没有答复。
而不是无休止地等待, 我报名免费试用 商业支持+ 计划获得更快的反应时间, 并不断构建一切 不依赖于DNS(Terraform,测试,和GitHub) 同时。
一旦支助解决了他们端的欺诈旗子 域通过干净, 我准备好我的下一步!
教训:不要让第三方的依赖性受阻阻止你的进展.
真正的项目往往取决于你无法控制的外部因素.
专注于你能够控制的东西,希望,在你完成的时候,障碍将会得到解决.
Hitchup #2: 我的SSL 证书在我等待期间已死亡 随着我在域名上等待解决,好时光继续卷起,我要求获得ACM证书用于DNS验证.
如你所知,DNS验证需要一个53路主机区,由于域名没有注册,该区尚未存在.
鸡相会取蛋.
到了域名终于通通时,ACM已经放弃了,并将我的原始证书申请标记为FAILED.
当然,直到Terraform试图导入它时我才意识到这一点,AWS彻底拒绝了进口"不存在任何与给定的ID相关的对象".
我直接与AWS CLI()核实了故障,而不是只相信Terraform错误,证实它真的死了,并要求在主机区存在后重新认证.
干净的验证,没有戏剧第二次。
课:总是验证出源错误.
资源也可能在等待别的东西时无声地失效。
每当你准备好拿你的下一个S