多区域部署到目前为止我们还没有更多讨论代码运行的环境。Lambda 会指定一个区域部署你的代码,但你必须决定你想要在哪个(或哪些)区域运行它。在我初始的版本中,我在美国东1区(又名弗吉尼亚数据中心)创建了初始程序。为了能够在网络中获得更好地体验,我们建立了一个全球性的服务,我们把它扩展到包括 eu-west-1(爱尔兰)和 ap-northeast-1(东京),这样我们的移动应用程序可以从世界各地快速地连接: 一种在两个附加的区域内部署 Lambda 功能的无服务器机制 下面的内容我们已经在博客中提到:在 S3 部署博客中,我展示了如何使用 lambda 函数部署其他存储在亚马逊 S3 的 lambda 函数压缩文件。在 ContainerCon 演示中,我们搭建了小型的平台并打开了 S3 跨区域复制,这样我们就可以以 ZIP 压缩文件的方式上传图片处理服务到爱尔兰数据中心,并自动拷贝到东京数据中心,然后将部署在两个区域的服务关连起来,形成了各自区域的 Lambda 服务。 快来享受无服务器的解决方案吧:) |
搭建无服务器 web 应用,第一部分:API 端点
|
为了完成这个,我们将转向另外的服务器, Amazon API Gateway。这个服务让你能定义一个 API 而不需要任何架构-这个 API 是由 AWS 完全管理的。我们将用这个 API 网关去创建 1 个 URL 给图像处理服务,该服务的众多能力之一就是能给在线的任何用户提供访问。亚马逊 API 网关提供了众多途径来控制 API 的访问:API 调用被 AWS 证书签名来认证,你可以使用 OAuth 标志并且能简单将标志头用于认证,你也可以使用 API 钥匙(不推荐,因为是不安全的),或者让 API 变成公共的,如我们马上在这儿演示的。 另外 API 网关提供了多种多样的访问模型,我们不会全在这次来探索。有些是内建的(比如防 DDOS 保护)和其他的,比如缓存化,可以为某些重复访问的流行的图片减少延时和访问代价。通过在客户端和(微)服务插入一个间接层,透过 API 网关,这些文件也能把通过自身的版本和分阶段特性来独立更新。从现在开始,我们将要聚焦和暴露我们的图像处理服务 API 的基本任务了。 |
OK,让我们来创建我们的 API。在 AWS 控制台上,选择 API 网关然后选择“新API”,为这个 API 提供一个名字和可选的描述。在我的例子中,我取名“ImageAPI”.
下一步,为你的新 API 创建一个资源(我把它叫做"ImageProcessingService"),然后在其中创建1个 POST 方法。选择“Lambda函数”作为集成类型,然后输入使用你的图像处理服务的 Lambda 函数的名字。在“Method Request”配置中,设置认证类型为空类型。(也就是说,这将会是公用的端点)。这就差不多了。
为了测试集成成功与否,点击"Test"按钮:
然后提供一个测试负荷比如{“operation”: “ping”}。你应该得到期待结果“pong” ,提示你已经成功把你的 API 和你的 Lambda 函数连接起来了。 |
旁白:我们会得到更多和(更深层次)的测试,但是我有时觉得有用的事是在我的 API 中添加一个顶级资源的 GET 方法,这会变得简单,像 ping 操作一样,让我很快可以用任何浏览器快速审查,正如预期的那样,我的 API 是链接到我的 Lambda 函数。虽说这不需要演示(或总的来说),但您会发现它有用。 接下来会发生什么(S3静态内容),我们要使 CORS 成为必须。这总的来说是简单的,主要有这么几个步骤。API Gateway 团队会继续让它变得简单,在这里不是重复指令(并有可能让他们很快变得过时),我将会在文档中告诉你。 点击“部署这个 API ”按钮。然后,你的所有设置就用在了你的网站上了。
|
你可以简单地改变这个方法来合并验证,运行各种各样的单元测试,等等。如果你不需要web应用的基础设施,你可以跳过API网关和HTTP调用,并在你的单元测试中直接运行图像处理服务。如果你想要汇总或分析测试输出,你可以简单附加一个Lambda函数作为一个事件处理添加到DynamoDB表中,来保留测试结果。
总结这真是一篇很长的文章,但是它包含着建立一个真实的,可扩展的前(移动端/网页)后端服务的内容,所有这些内容不需要服务器或其他基础设施系统的任何部分:前端,后端,API,部署,或者测试。来吧,无服务! 下一次,只需要有快乐的Lambda (无服务,微服务)编程! -Tim |
本文转自:开源中国社区 [http://www.oschina.net]
本文标题:无服务器的微服务
本文地址:http://www.oschina.net/translate/microservices-without-the-servers
参与翻译:Iam魔方, leoxu, HAILINCAI, 武汉加油, 无若, 木兰宿莽
英文原文:Microservices without the Servers