通过 AWS Lambda 使用您的第一个微服务
本指南适用于哪些人?
当我们谈论学习 AWS 时,我们经常谈论如何使用它来开启系统管理或运营方面的新职业。当然,该平台不仅仅用于“后端”或“系统”工作。像 AWS Lambda 这样的服务需要集成到前端,而且由于 AWS 的使用非常广泛,因此 Web 开发人员熟悉其工作原理非常重要。本指南适用于想要了解更多有关微服务架构但尚未准备好从头开始学习整个 AWS 平台的 Web 开发人员。先决条件
微服务这个词听起来很复杂,但您无需成为专家即可开始使用它们。不过,您需要做一些事情才能开始使用:- AWS 账户- 您可以在此处免费创建一个。
- 使用的微服务- 我们之前发布了有关使用 AWS Lambda 创建无服务器联系表单的指南。这就是我们将集成到我们的页面中的内容(我们建议您在阅读本指南之前先阅读该指南),但我们讨论的原则和概念也将适用于基于 AWS Lambda 和 API Gateway 的其他微服务。
- 一些 JavaScript 知识 - 我们将使用 JavaScript 从浏览器与我们的微服务进行交互,因此您应该熟悉 DOM 交互和 AJAX 请求等中级概念,以便充分利用本指南。
我们会做什么?
在本指南中,我们将把现有的联系表单微服务集成到网页中。在开始之前,请务必遵循我们的无服务器联系表单创建指南。该指南处理 AWS 上的“后端”设置,本指南将解释如何将其集成到现有站点中。完成后,您将拥有一个联系表单,该表单调用 AWS Lambda 函数,允许您的用户通过您网站上的表单向您发送电子邮件。什么是微服务?
这个问题可能需要一个指南来回答,但在开始之前,了解这一点很重要。微服务架构意味着您的基础架构(托管应用程序的服务器)由小型、大多独立的部分组成,每个部分负责特定的任务。编写应用程序时,您使用函数来执行某些任务并在代码库中分离职责。打个粗略的比方,微服务之于基础架构,就像函数之于您的代码一样。假设您的应用程序崩溃了。如果您的代码库足够大,则可能需要大量工作来隔离和修复问题 - 并且您可能无法让您的应用程序重新上线,直到您完成。使用微服务架构 - 使用单独的基础架构来处理不同的任务 - 您通常可以在修复一个特定问题时让应用程序的其余部分保持运行。问题被隔离,对其余代码几乎没有影响。您可能听说过无服务器或函数即服务之类的术语。Lambda 是亚马逊对这些概念的实现,微服务架构是它可以用来改进您的网站或应用程序的一种方式。集成您的第一个微服务
如果您尚未在 AWS 中创建基础设施,请务必先创建。您可以在此处找到有关设置无服务器联系表单的指南。如果您正在创建第一个 AWS 帐户(或使用过去 12 个月内创建的帐户),我们使用的所有服务都将包含在免费套餐中,因此您无需支付任何费用即可继续试用。AWS 基础设施充当您的“后端”,但您还需要一个表单来允许用户输入信息。这是一个简单的网页,我们将用它来说明如何使其工作:如果您想继续操作,请将上面的代码粘贴到文本编辑器中并在浏览器中打开它。您将看到类似以下内容:


部署到生产环境
如果您只想查看工作原理,此设置非常适合测试。但是,如果您准备在自己的网站上开始使用无服务器联系表单,则需要执行更多步骤。首先,从 Request 对象中删除 模式:“no-cors” 。通常,您无法从本地计算机发出跨源请求,因为其源设置为“null”。将此选项添加到请求中允许我们在本地进行测试,但无需从您自己的网站进行调用。事实上,将其留在生产环境中可能会阻止您准确处理 Fetch 响应中的错误 - 这会导致您获得不透明(空)响应,并且您将无法访问 HTTP 状态代码或错误消息等内容。最后,将 API Gateway 中的“Access-Control-Allow-Origin”标头更改为您的域名。要找到此设置,请 在 API 网关控制台中 打开“/ContactFormLambda”资源,单击页面顶部的 “操作”菜单,然后选择“启用 CORS”。 此页面上的最后一个字段将允许您将此标头设置为您将使用联系表单的站点的域名:
那么这为什么重要?
我们之前谈到了微服务架构的好处 - 它将你的服务分开,这样如果一个服务失败,你的整个应用程序就不会崩溃。例如,除了你的联系表单之外,你还可以创建另一个从数据库读取的微服务。如果其中一个服务崩溃,另一个可以继续运行,而无需你登录服务器并重新启动应用程序。另一个好处是开发速度。“正常”架构需要更多测试,以确保新代码不会干扰现有应用程序。例如,使用微服务,联系人电子邮件和数据库读取是完全独立的。你可以对一项服务进行更改,测试该服务并立即部署它。可以在任何时候添加新服务,而不必担心它们是否会导致重大更改。微服务(例如我们创建的联系表单)也很容易集成到AWS 静态网站中。在过去的几年里,静态网站生成器变得非常流行,原因很充分 - 它们速度快、易于维护,并且相对容易创建一个外观漂亮的网站,而无需太多代码。微服务允许您运行后端,而无需进行所有维护,这可能会让人们对非托管主机望而却步。它们还在创建网站时提供了一个很好的折中方案 - 也许您不需要完整的 PHP 或 Rails 应用程序,但静态网站还不够。使用 AWS Lambda 的微服务允许您通过创建类似上述脚本并将其嵌入到静态页面中来处理传统的“服务器端”操作。下一步是什么?
Web 开发和 AWS 等复杂平台之间的联系并不总是一目了然。AWS 通常被认为是一种面向管理员的服务,但只要具备一点知识,在自己的项目中开始使用它并不难。我想澄清一点——我们在这里创建的并不是一个完整的微服务架构。这只是一个示例,说明如何构建一个 微服务架构,并且只显示了一个组件。但使用 AWS Lambda,创建更多服务(如我们的联系表单提交)比以往任何时候都更容易。由于 Lambda 以服务的形式提供函数,因此您可以将更多精力放在代码上,而不是运行它的基础设施上。您可以按照我们的指南创建无服务器联系表单并对其进行修改以执行其他任务——使用 AWS 简单通知服务 (SNS) 发送短信可能是下一步的好选择。AWS 提供数十种服务,因此如果您环顾四周,您一定会找到一些有趣的东西来玩。最好的学习方法是边做边学。您可以阅读世界上所有的文档,但除非您亲自动手,否则很难真正发展您的技能。如果本指南让您对 AWS 的强大功能感到兴奋,那么您可以免费或几乎不花钱地尝试很多项目。我们在此处创建的微服务包含在 AWS 免费套餐中 - 该套餐适用于新 AWS 账户,有效期为自创建之日起 12 个月。AWS 还发布了一个静态网络托管指南 ,涵盖每月 0.50 美元(是的,就是 几美分)的设置费用。重要的是进入那里并使用这些服务 - 知识和技能将随着经验而来。当然,如果您想要更正式的培训计划,这就是我们在这里的目的。我们的使命是帮助各种技能水平的人通过真实场景和实践培训学习云计算。如果您有任何问题,请在评论中告诉我们,或者更好的是,注册一个免费的社区帐户,了解您的云学习之旅将带您去哪里。进一步阅读
虽然本指南的范围仅限于微服务实现,但我们使用了一些可能需要额外研究的 Web 技术和概念。以下是一些比我们在此处提供的更深入的了解链接:That's So Fetch (感谢 Jake Archibald)了解 CORS AWS Lambda Deep Dive免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~