为了账号安全,请及时绑定邮箱和手机立即绑定

7个AWS项目助你在云端持续成长

简介

前不久,我分享了一篇文章,总结了五个适合初学者的AWS实践项目,帮助你开始云之旅。你可以在这里回顾那篇文章:https://medium.com/@ryanralmeida/5-projects-to-get-you-started-in-the-cloud-aws-edition-f01c37321373。从那以后,我在工作中学到了很多新东西。在这次文章里,我将介绍七个更多的项目来帮助你在云领域不断成长。这些项目是基于我工作中常遇到的工具、技术和概念精选的。每个项目都专注于特定类型的服务、技术或资源。我尽量让它们多样化。我希望,通过完成这些项目,你能获得一些关键的实际经验,来支持你在云领域的成长。让我们开始吧!

项目一:开发一个书店应用并了解AWS数据库

概述: 我们从一个项目开始,该项目让你能够立即体验到与最终结果的互动。得益于 AWS 提供的 CloudFormation 模板,通过基础设施即代码(IaC),你可以快速搭建起一个书店演示应用程序。该书店应用程序使用诸如 DynamoDB、ElasticSearch、ElastiCache for Redis 和 Neptune 等多种专用数据库,以满足诸如产品目录、搜索功能、畅销书列表和社交推荐列表等不同需求。总的来说,这个项目不仅有趣,还展示了 AWS 资源在实际应用中的多种用途。

学习成果: 请参阅上面的架构图,该项目中部署了多个AWS资源,让您体验全面的学习过程。首先,使用DynamoDB作为持久的产品目录系统记录,展示了NoSQL数据库设计、可扩展性和高可用性的原则。集成Amazon Elasticsearch增强了搜索功能,让您学会高效地索引和查询数据。使用DynamoDB Streams与AWS Lambda进行异步更新Elasticsearch索引,介绍了事件驱动架构和无服务器计算的思想。使用ElastiCache for Redis管理畅销书列表展示了内存数据存储技术和性能优化。采用Amazon Neptune进行社交推荐,提供了关于图数据库和个性化内容分发的见解。此外,利用API Gateway和Lambda处理各种API调用,突显了RESTful API的设计和无服务器应用的开发。总的来说,这个项目让您掌握了构建稳健、可扩展和高性能的云应用的实际技能。

入门资源

  1. AWS Bookstore 教程页面
  2. AWS GitHub 项目
  3. 我的个人 GitHub 项目

额外小贴士:

  1. 确保在删除项目时成功销毁 CloudFormation Stack!这个项目让我意外地多花了 $22.86(太好了!)因为销毁 CloudFormation Stack 时 Neptune 实例没有成功删除。这发生在仅仅一天后(感谢上帝我没再晚检查)。为了避免这种情况,请确认 CloudFormation Stack 是否成功销毁。如果没有,请手动删除各个实例,尤其是 Neptune。
项目2:制作一个回合制游戏并学习事件驱动体系结构

概述: 在这种架构中,应用程序的流程由各种事件决定,如用户操作、数据状态的变化或传感器输出。这些事件会触发相应的操作、流程或工作流。这个围绕事件驱动架构的入门项目使用Amazon DynamoDB和Amazon SNS帮助你构建一个名为Nim的多玩家回合制游戏。

  • 利用 DynamoDB 作为持久系统来存储游戏状态
  • 使用 AWS Lambda 打包和执行函数代码,无需配置底层资源
  • 使用 API Gateway 和 Lambda 处理各种 HTTP 基础的 API 调用
  • 使用 Amazon SNS 发送短信通知,提醒用户游戏中重要事件
  • 集成 Amazon Cognito 来处理用户注册和登录
  • 使用 Cloud9 作为云集成开发环境来运行和与程序代码互动

学习成果: 本实践项目提供了宝贵的事件驱动架构和无服务器计算的实际操作经验。通过使用DynamoDB作为持久记录,你将学会如何设计和管理可扩展、低延迟的实时应用程序数据库系统。利用AWS Lambda和API Gateway,你将学会如何构建和部署无需管理底层基础设施的无服务器、基于HTTP的API。集成Amazon SNS来实现通知,以增强用户参与度,而Amazon Cognito介绍了强大的用户认证和注册功能。最后,使用Cloud9来实现原生代码,并在AWS内部进行开发和测试,并提供了在基于云的IDE中进行开发和测试的见解。

入门资源:

  1. AWS 回合制游戏教程
  2. 我的 GitHub 项目页面

额外小贴士:

  1. SNS 处于沙盒模式。当你按照教程中的指示操作时,可能会在绑定手机号时卡住,因为 SNS 默认设置为沙盒模式。要解决这个问题,你需要先注册你的手机号。你可以查阅AWS文档 了解更多详情。
  2. 教程中的Lambda Nodejs版本可能已经过时。只需在教程的模块 1 中更新应用程序代码为较新版本的 Nodejs 即可。
项目3:构建QuickSight仪表板并了解BI工具

简介: AWS QuickSight 是一个可扩展的、serverless 的商业智能 (BI) 服务,允许用户从各种数据源创建和分享交互式仪表板和可视化。它还使用户能够在没有广泛的数据科学专业知识的情况下,获得实用的见解。在这个项目中,我们将使用 Amazon QuickSight 分析和可视化航班数据,并利用上述 QuickSight 内置功能来获取数据洞察。特别是,我们将创建以下图表:

  1. 条形图
  2. 地理空间图
  3. 桑基图
  4. 饼图
  5. 一个基于机器学习的预测图

学习目标:通过完成此 AWS QuickSight 项目,您可以在与数据分析相关的几个关键领域获得宝贵的技能,例如数据摄入和处理、数据可视化、钻取分析和数据筛选、仪表板创建和分享。该项目还涵盖 AWS 集成(包括内部来源如 S3、RDS、Athena 等和外部来源如 MySQL、Salesforce 等),以及了解机器学习的实际应用(这是一个越来越受欢迎的话题)。

入门资源:

  1. AWS Skill Builder课程
  2. 我的GitHub仓库

额外的小贴士:

我遵循了 AWS Skill Builder 的一个教程来完成这个项目,这确实需要花钱。为了节省开支,你可以选择他们的 [7 天免费试用],或者选择我下面提供的两个替代项目链接。第一个项目是由 Tech With Lucy 创建的,第二个是来自 AWS QuickSight 社区的教程。下面是我提供的这两个链接:

  1. 跟随Lucy的另一个技术教程
  2. AWS QuickSight社区的另一个教程:启用自助式可视化数据分析,使用AWS Glue Studio和Amazon QuickSight来分析基金表现
第4个项目:创建一个待办事项的网络服务并了解API

概述:API是使不同的软件系统能够互相通信和交换数据或功能的桥梁。在软件开发中,API通过提供预定义的协议和端点来简化集成,让开发人员能够方便地访问认证、数据存储和机器学习等服务,无需了解其内部实现细节。通过这个简单的动手项目,我们可以构建一个基础的API,并将其集成到一个基础的Web应用程序中,从而体验到API的实际好处。

在这个项目中,我们创建了一个通知系统,在这个系统中,用户可以在一个简单的前端网页中输入待办事项消息,选择通知方式(短信或电子邮件),然后点击发送。后端集成了API网关、Lambda和SNS,将消息通过短信发送到你的手机或通过电子邮件发给你。

学习目标:该项目是一个很好的入门,帮助学习、构建和部署简单的API(API网关),并将其与AWS的其他服务(如AWS Lambda和SNS)集成。在这个项目中,API网关充当前端(用户输入)和后端逻辑(如处理逻辑并将其发送至Amazon SNS的Lambda函数)之间的桥梁。该项目还让你了解其他常用的AWS服务的基本知识,例如Lambda和SNS。

入门资源:

我的GitHub仓库

小贴士

如果你想了解更多关于API开发的信息,查看更详细的教程,或创建一个更高级的待办事项应用程序,下面分别提供了这三个资源的链接:

  1. API Gateway 文档页面
  2. AWS Skill Builder API 学习项目
  3. AWS Amplify Todo App 快速入门教程
项目5:打造聊天机器人应用并探索对话式AI

概览:AWS Lex 是一项完全托管服务,用于使用语音和文本构建对话界面,采用与 Amazon Alexa 相同的深度学习技术。它通过提供自然语言理解和自动语音识别 (NLU 和 ASR),简化了聊天机器人和虚拟助手的制作过程。

这个项目让我们能够体会到像 Amazon Lex 这样的工具的强大,通过构建一个简单的食品订餐聊天机器人。这个聊天机器人让你能够订购并自定义一个具有以下特性的汉堡包:

  • 从3个不同品牌的快餐店下单一个汉堡
  • 每家店都有3种独特的配料
  • 点三个不同尺寸的汉堡
  • 再选些小食和饮料
  • 聊天机器人会确保你按规则操作,比如选错了配料会提示错误

学习目标:构建这个聊天机器人使你体验到简单而有效的入门,了解如何设计和构建对话式人工智能(这是当下越来越热门的话题)。Amazon Lex 让你能够轻松地添加能够理解意图、保持上下文并构建对话界面的 AI,而无需担心硬件和基础设施的配置。使用 Lex 可让你获得设计对话式 AI 的实际经验,并理解自然语言处理如何提升用户参与度。

以下是一些入门资源:

  1. Cumulus Cycle 的 YouTube 视频教程
  2. 访问我的 GitHub 项目页面

额外提示:如果你想跟随更有趣且高级的Amazon Lex教程,学习如何构建聊天机器人的教程,你可以按照以下教程构建一个语言翻译应用程序,或者尝试酒店预订场景:

  1. 翻译应用项目一
  2. 翻译应用项目二
  3. 翻译应用项目三
  4. 酒店预订应用项目一
项目6:构建一个容器化应用程序,了解微服务架构

图片来源:https://github.com/dockersamples/example-voting-app

概述:容器化应用程序是将所有必要的组件(如代码、运行时、库和依赖项等)打包成轻量级且便携的容器的软件包。用容器化应用程序构建的微服务是小型的、可独立部署的服务,专注于大型系统中的特定任务。通过在本项目中构建一个基于运行在AWS EC2实例上的多个Docker容器的简单投票应用,我们能够体会到容器化应用程序和微服务架构的实际效用。

学习成果: 这是一个很好的入门项目,让你接触容器、微服务,并运行容器化应用程序。它允许你通过组合Docker容器来构建一个简单的Web应用,而不是构建单体应用。在这个应用中,每个微服务都在自己的容器中运行,使其具备可扩展性、隔离性和易于部署的优点。这种架构很有用,因为它允许开发人员单独构建、测试、部署和扩展各个服务而不影响整个应用。最终,这种架构为创建可扩展、有弹性和高度模块化的云原生应用提供了强大的解决方案。

入门资源:

  1. Mohammed Oghli的教程
  2. Docker Samples原GitHub项目
  3. 我的GitHub上的项目

额外的小贴士:如果你想了解更多关于如何实现微服务的内容,或者你想要着手一个更复杂的项目,我已经把两个相关资源的链接放在下面了:

  1. 在AWS上部署微服务
  2. 卢克·姆维拉的多容器架构AWS项目
第七个项目:开发一个图像处理应用并了解无服务器架构

项目概述:我们的最终项目是构建一个简单的图像处理应用,展示无服务器计算的实用性和便捷性。无服务器计算使开发人员能够在无需管理服务器的情况下构建和运行应用。在这个项目中,我们创建了一个简单的应用,可以自动生成5个不同分辨率的缩略图。

学习目标:这个项目是一个学习使用AWS服务进行无服务器计算的绝佳起点,同时还可以练习常见的AWS集成,例如AWS Lambda和S3,以实现所需的输出。我们探讨了Lambda函数如何根据特定的AWS事件(例如,S3桶中的对象上传)被自动触发,还了解了S3事件通知,这在我的许多工作中也常见,特别是在架构设计中。我们还可以体验到Python在图像处理方面的强大功能,这些能力通过如PIL或Pillow这样的库得以实现,可以将图片调整为不同分辨率。

开始用的资源

  1. Adrian Cantrill的视频教学
  2. Adrian Cantrill的GitHub上的项目
  3. 我自己的GitHub项目

额外的小贴士:如果你想了解更多关于S3事件通知功能或Lambda集成的信息,或者你想要构建稍微复杂一点的项目,我在下面列出了相关链接:

  1. 使用Lambda处理S3事件
  2. 替代的S3事件处理解决方案
结论

我一直发现,动手做的项目和真实的实践经验是在获得实际可用和能在工作中应用的技能方面最有价值的老师。以上的项目帮助我在自己认为较弱的几个领域中巩固了理解。正如这些项目帮助了我一样,我希望以上的项目也能帮助你们在云计算领域内巩固对更多领域的理解。这确实是一个广阔且充满无限可能的领域,绝对值得去探索。祝你顺利!
*[面向对象]:OO

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消