🦄 利用现代技术对狂野骑行进行现代化改造

发布日期:2026-05-29 10:01:01   浏览量 :2
发布日期:2026-05-29 10:01:01  
2

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

技术栈示意图

Wild Rydes 是亚马逊云科技(AWS)动手实验室使用的一个旧项目,用于展示如何利用其服务部署无服务器应用程序。它包含一个类似优步(Uber)的应用程序,用户可以通过该应用呼叫独角兽(🦄)作为交通工具。在下面的文章中,我将指导你了解我如何使用 Terraform、GitHub Actions 和开放身份连接(OpenID Connect)等现代技术来实现这个项目。

原始技术栈包括:使用 Cognito 添加身份验证层,使用 Amplify 部署应用程序,使用 Lambda 和 DynamoDB 处理应用程序的业务逻辑,使用 CodeCommit 作为代码仓库,以及使用 IAM 为服务间交互添加角色和权限。你需要手动配置所有这些服务,并且在最后可能需要删除它们以避免产生费用。核心项目的前端使用的是纯 HTML/CSS 和 jQuery。

新技术栈概览

原始技术栈依赖 Amplify 进行部署,并使用 CodeCommit 作为代码仓库。我希望对基础设施拥有更多的控制权,并获得更好的持续集成/持续部署(CI/CD)体验,因此我用 S3 + CloudFront 取代了 Amplify 来分发应用程序,迁移到 GitHub 以利用其 Actions 功能,并添加 Terraform 来管理所有资源。Cognito、API 网关、Lambda 和 DynamoDB 则保留不变。

更新前端

该项目原本使用 HTML/CSS 和 jQuery。我希望使用现代技术来交付前端,因此选择了 Vite 进行打包。它允许我使用多个命令来管理应用程序,例如使用 vite build 生成包含优化资源的打包文件。我发现需要修改多条 CSS 语句,并且应用程序中用于选择乘车地点的地图库已过时,因此我迁移到了一个更现代的库。经过几个小时的故障排除后,前端准备就绪。

Vite 还允许我使用环境文件(.env)来存储凭证,如 Cognito 的密钥和 API 网关的端点,这解决了原始项目中硬编码凭证的问题。这为项目提供了更好的安全性,也便于我实现多环境部署。

使用 Terraform 创建基础设施

原始实验指南会引导你使用 AWS 控制台来创建资源。相反,我希望使用 Terraform 来创建这些资源,以便追踪每一次变更,确保操作可重复,并且易于销毁。我对项目做了一点改动——不再使用 Amplify,而是使用 S3 + CloudFront 来分发应用程序。我做出这个决定是因为我想尝试另一种构建无服务器应用程序的方法。当然,你也可以继续使用 Amplify。

使用 S3 作为 Terraform 的后端

Terraform 的最佳实践之一是创建后端来存储 Terraform 状态文件。状态文件存储由 Terraform 创建的属性和资源,使其能够了解基础设施中现存的内容以及在更新期间需要进行的变更。将其远程存储意味着状态文件是安全的、可共享的,并且不会仅存于我的本地机器上。

这是一个敏感问题,因此必须采取预防措施。Terraform 最近的更新引入了使用 S3 存储桶来保护 Terraform 状态文件的选项。对于 S3 存储桶而言,最佳实践是启用版本控制以跟踪对象内容的变更,并启用服务器端加密以提供

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部