入门 Faas,Eoapi+Amazon Lambda

Serverless
Hero
Amazon Lambda
0
0
{"value":"这是一个超详细的入门实例,跟着做完你会:\n- 光速入门 Vercel、Amazon Lambda Functions(Serverless) \n- 得到一个和图片一模一样的专属的 API 工具,可以在线测试 API\n\n![image.png](https://dev-media.amazoncloud.cn/5e1ce22ebf014892b3a02500bcb74106_image.png)\n\n\n##### **一、概念解析**\n###### **1. Serverless 是什么?**\nServerless 架构即“无服务器”架构,它是一种全新的架构方式,是云计算时代一种革命性的架构模式。\n\nServerless 的核心思想是让**作为计算资源的服务器不再需要被使用者关注**。\n\n![image.png](https://dev-media.amazoncloud.cn/6a4fe9a331e544aa9508d025adcbf8eb_image.png)\n\nFaaS(Functions as a Service)函数即服务,FaaS 是 Serverless 计算的一种形式。\n\n因为跨域问题,所以测试工具无法纯客户端实现,需要借助测试服务转发 API 请求,而测试通过事件触发且不涉及到状态变更,非常适合使用 Serverless 技术快速部署服务以及减少不必要的计算资源。\n\n所以我们在 Eoapi 使用了 FaaS Serverless 转发测试 API 的请求。\n\n###### **2. Eoapi 是什么?**\n\n[https://www.eoapi.io](https://www.eoapi.io)\n\n一个可拓展的开源 API 工具,可以用它快速调试 API。下图是最终的部署效果。\n\n![image.png](https://dev-media.amazoncloud.cn/e0e6d32973544cacb746c48f1ac99ac0_image.png)\n\n###### **3. Vercel 是什么?**\n[https://vercel.com](https://vercel.com)\n\nVercel 是一个站点托管平台, 类似于 `Github Pages`,你丢上去网页的构建后的代码,还你一个 Web 服务链接,同时支持持续集成, 可以关联 Push、PR,提交代码后自动部署 。\n\n![image.png](https://dev-media.amazoncloud.cn/b915cf30f2df43af84be1aa6e81cece4_image.png)\n\n\n###### **4. 什么是 Amazon Lambda?**\n[https://aws.amazon.com](https://aws.amazon.com)\n\nLambda 是一项计算服务,可使您无需预置或管理服务器即可运行代码。\nLambda 在可用性高的计算基础设施上运行您的代码,执行计算资源的所有管理工作,其中包括服务器和操作系统维护、容量调配和弹性伸缩和记录。借助 Lambda,您可以为几乎任何类型的应用程序或后端服务运行代码。\n##### **二、快速开始!**\n###### **1. Fork Eoapi 仓库**\n访问:[https://github.com/eolinker/eoapi](https://github.com/eolinker/eoapi)\n\n![image.png](https://dev-media.amazoncloud.cn/4351eb6639be4cf1979c7e38a31f3737_image.png)\n\nFork 成功后可以在自己的 Repositories 看到 eoapi。\n###### **2. 配置 Vercel**\n访问:[https://vercel.com/](https://vercel.com/)\n\n注册成功后点击新建项目\n\n![image.png](https://dev-media.amazoncloud.cn/76d52e5eae154eb4a1c6d98a6ac14942_image.png)\n\n配置 Vercel 访问 Github 项目的权限,选中 Eoapi\n\n![image.png](https://dev-media.amazoncloud.cn/ee4a4395b50c42bd9bee71d11c229d67_image.png)\n\n配置安装、构建命令以及构建后文件夹,配置好之后点击构建按钮。\n- BUILD COMMAND:`cd src/workbench/browser&&yarn build:web`\n- OUTPUT DIRECTORY:`src/workbench/browser/dist`\n- INSTALL :`yarn`\n\n![image.png](https://dev-media.amazoncloud.cn/55e930c1590a4f9995f7f8a4ba3bd10f_image.png)\n\n通过这个链接就可以访问你的专属 API 工具啦!\n\n![image.png](https://dev-media.amazoncloud.cn/7438fe11346d480a8dedb5a5fe1b9e63_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/42264849feb34e0eb23eaa254e8abb34_image.png)\n\n三、Lambda Function Serverless API\n因为部署服务的 Serverless 源码较为复杂,为了方便理解,这里使用最简单的示例为大家演示如何部署一个 Lambda Function 服务。\n实现 Function 可从各种亚马逊云科技框架、开源框架以及第三方 Web 框架中进行选择。支持的框架如下:\n- [Amazon Serverless Application Model (Amazon SAM)](https://aws.amazon.com/cn/serverless/sam/) 是一种用于构建无服务器应用程序的开源框架。它提供了表示函数、API、数据库和事件源映射的简写语法。\n- [Amazon Cloud Development Kit (Amazon CDK)](https://aws.amazon.com/cn/cdk/) 是一种开源软件开发框架,可让您使用熟悉的编程语言来定义云应用程序资源。\n- [无服务器框架](https://www.serverless.com/framework/docs/providers/aws/guide/intro/) - 无服务器框架由一个开源 CLI 和一个托管控制面板组成。它们一起为您提供了完整的无服务器应用程序生命周期管理。\n- [Chalice](https://github.com/aws/chalice) 是在 Python 中编写无服务器应用程序的一种框架。通过它,您可以快速创建和部署使用 Amazon Lambda 的应用程序。\n- [Arc.codes](https://arc.codes/reference/arc/aws) 提供了构建大规模可扩展无服务器应用所需的一切,具有低代码、清晰简洁的配置和零仪式。\n- [Claudia.js](https://claudiajs.com/claudia.html) 可用于轻松将 Node.js 项目部署到 Amazon Lambda 和 API Gateway。\n- \n因为我们的测试服务使用 Node.js 实现的,所以我们选择了 Claudia.js 框架。\n\n###### **4.1 部署步骤**\n```\nnpm install claudia -g\n```\n\n本地调试/发布需要配置亚马逊云科技鉴权\n\n![image.png](https://dev-media.amazoncloud.cn/9f4f00ae3382490fab84efe27c24b83d_image.png)\n\n从配置台获取相应的 access key 配置\n\n![image.png](https://dev-media.amazoncloud.cn/20a7e4f8057a472b9e32d6fc654f46a5_image.png)\n\n###### **4.2 源码解析**\n官方提供了很多例子:\n[https://github.com/claudiajs/example-projects/tree/master/hello-world](https://github.com/claudiajs/example-projects/tree/master/hello-world)\n\n```\n/*global exports, console*/\nexports.handler = function (event, context) {\n 'use strict';\n console.log(event);\n context.succeed('hello world');\n};\n```\n\npackage.json\n通过 `npm start` 运行,`npm test` 调试,`npm deploy` 发布到 Lambda。\n\n```\n{\n \"scripts\": {\n \"start\": \"claudia create --name hello-world --region us-east-1 --handler main.handler --profile claudia\",\n \"test\": \"claudia test-lambda --profile claudia\",\n \"deploy\": \"claudia update --profile claudia\"\n }\n }\n```\n\n###### **4.3 Amazon Lambda 设置**\n发布服务后,我们希望通过 HTTP 协议能访问到这个 Function,需要配置 Funtion URL\n\n![image.png](https://dev-media.amazoncloud.cn/889a5a1fd9c54bc581a03500a44cf973_image.png)\n\n为了调试方便,我们不需要鉴权,所以选择 `None`,同时不限制请求的域名开启跨域。\n\n![image.png](https://dev-media.amazoncloud.cn/838c8a13c1364da281260735da09d730_image.png)\n\n此刻服务还不能直接访问,除了 Function 的身份验证,我们还需要配置资源的权限。\n\n![image.png](https://dev-media.amazoncloud.cn/09a305d7832546f7ae12a4fb781a5642_image.png)\n\n点击 `Add Permission`,获取权限。\n\n![image.png](https://dev-media.amazoncloud.cn/7e9d97e0d569466a8af044e0c5c9e200_image.png)\n\n保存后,打开 Function URL 即可访问到这个 API 服务~\n\n![image.png](https://dev-media.amazoncloud.cn/d727ec769a6444a28692a2a7a02e3016_image.png)\n\n##### **四、作者心得**\n我是 Eoapi 的一名开发者,[https://eoapi.io](https://eoapi.io) 就是使用上面的步骤配置出来的,如果大家对项目感兴趣,欢迎大家持续关注我们项目:[https://github.com/eolinker/eoapi](https://github.com/eolinker/eoapi)。\n\n**作者介绍:**\n\n![图片1.png](https://dev-media.amazoncloud.cn/5914a7d277b345d6a94a2198e077d893_%E5%9B%BE%E7%89%871.png)\n\nKeith Yan(丘秉宜)中国首位亚马逊云科技 Community Hero。","render":"<p>这是一个超详细的入门实例,跟着做完你会:</p>\n<ul>\n<li>光速入门 Vercel、Amazon Lambda Functions(Serverless)</li>\n<li>得到一个和图片一模一样的专属的 API 工具,可以在线测试 API</li>\n</ul>\n<p><img src=\"https://dev-media.amazoncloud.cn/5e1ce22ebf014892b3a02500bcb74106_image.png\" alt=\"image.png\" /></p>\n<h5><a id=\"_7\"></a><strong>一、概念解析</strong></h5>\n<h6><a id=\"1_Serverless__8\"></a><strong>1. Serverless 是什么?</strong></h6>\n<p>Serverless 架构即“无服务器”架构,它是一种全新的架构方式,是云计算时代一种革命性的架构模式。</p>\n<p>Serverless 的核心思想是让<strong>作为计算资源的服务器不再需要被使用者关注</strong>。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/6a4fe9a331e544aa9508d025adcbf8eb_image.png\" alt=\"image.png\" /></p>\n<p>FaaS(Functions as a Service)函数即服务,FaaS 是 Serverless 计算的一种形式。</p>\n<p>因为跨域问题,所以测试工具无法纯客户端实现,需要借助测试服务转发 API 请求,而测试通过事件触发且不涉及到状态变更,非常适合使用 Serverless 技术快速部署服务以及减少不必要的计算资源。</p>\n<p>所以我们在 Eoapi 使用了 FaaS Serverless 转发测试 API 的请求。</p>\n<h6><a id=\"2_Eoapi__21\"></a><strong>2. Eoapi 是什么?</strong></h6>\n<p><a href=\"https://www.eoapi.io\" target=\"_blank\">https://www.eoapi.io</a></p>\n<p>一个可拓展的开源 API 工具,可以用它快速调试 API。下图是最终的部署效果。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/e0e6d32973544cacb746c48f1ac99ac0_image.png\" alt=\"image.png\" /></p>\n<h6><a id=\"3_Vercel__29\"></a><strong>3. Vercel 是什么?</strong></h6>\n<p><a href=\"https://vercel.com\" target=\"_blank\">https://vercel.com</a></p>\n<p>Vercel 是一个站点托管平台, 类似于 <code>Github Pages</code>,你丢上去网页的构建后的代码,还你一个 Web 服务链接,同时支持持续集成, 可以关联 Push、PR,提交代码后自动部署 。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/b915cf30f2df43af84be1aa6e81cece4_image.png\" alt=\"image.png\" /></p>\n<h6><a id=\"4__Amazon_Lambda_37\"></a><strong>4. 什么是 Amazon Lambda?</strong></h6>\n<p><a href=\"https://aws.amazon.com\" target=\"_blank\">https://aws.amazon.com</a></p>\n<p>Lambda 是一项计算服务,可使您无需预置或管理服务器即可运行代码。<br />\nLambda 在可用性高的计算基础设施上运行您的代码,执行计算资源的所有管理工作,其中包括服务器和操作系统维护、容量调配和弹性伸缩和记录。借助 Lambda,您可以为几乎任何类型的应用程序或后端服务运行代码。</p>\n<h5><a id=\"_42\"></a><strong>二、快速开始!</strong></h5>\n<h6><a id=\"1_Fork_Eoapi__43\"></a><strong>1. Fork Eoapi 仓库</strong></h6>\n<p>访问:<a href=\"https://github.com/eolinker/eoapi\" target=\"_blank\">https://github.com/eolinker/eoapi</a></p>\n<p><img src=\"https://dev-media.amazoncloud.cn/4351eb6639be4cf1979c7e38a31f3737_image.png\" alt=\"image.png\" /></p>\n<p>Fork 成功后可以在自己的 Repositories 看到 eoapi。</p>\n<h6><a id=\"2__Vercel_49\"></a><strong>2. 配置 Vercel</strong></h6>\n<p>访问:<a href=\"https://vercel.com/\" target=\"_blank\">https://vercel.com/</a></p>\n<p>注册成功后点击新建项目</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/76d52e5eae154eb4a1c6d98a6ac14942_image.png\" alt=\"image.png\" /></p>\n<p>配置 Vercel 访问 Github 项目的权限,选中 Eoapi</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/ee4a4395b50c42bd9bee71d11c229d67_image.png\" alt=\"image.png\" /></p>\n<p>配置安装、构建命令以及构建后文件夹,配置好之后点击构建按钮。</p>\n<ul>\n<li>BUILD COMMAND:<code>cd src/workbench/browser&amp;&amp;yarn build:web</code></li>\n<li>OUTPUT DIRECTORY:<code>src/workbench/browser/dist</code></li>\n<li>INSTALL :<code>yarn</code></li>\n</ul>\n<p><img src=\"https://dev-media.amazoncloud.cn/55e930c1590a4f9995f7f8a4ba3bd10f_image.png\" alt=\"image.png\" /></p>\n<p>通过这个链接就可以访问你的专属 API 工具啦!</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/7438fe11346d480a8dedb5a5fe1b9e63_image.png\" alt=\"image.png\" /></p>\n<p><img src=\"https://dev-media.amazoncloud.cn/42264849feb34e0eb23eaa254e8abb34_image.png\" alt=\"image.png\" /></p>\n<p>三、Lambda Function Serverless API<br />\n因为部署服务的 Serverless 源码较为复杂,为了方便理解,这里使用最简单的示例为大家演示如何部署一个 Lambda Function 服务。<br />\n实现 Function 可从各种亚马逊云科技框架、开源框架以及第三方 Web 框架中进行选择。支持的框架如下:</p>\n<ul>\n<li><a href=\"https://aws.amazon.com/cn/serverless/sam/\" target=\"_blank\">Amazon Serverless Application Model (Amazon SAM)</a> 是一种用于构建无服务器应用程序的开源框架。它提供了表示函数、API、数据库和事件源映射的简写语法。</li>\n<li><a href=\"https://aws.amazon.com/cn/cdk/\" target=\"_blank\">Amazon Cloud Development Kit (Amazon CDK)</a> 是一种开源软件开发框架,可让您使用熟悉的编程语言来定义云应用程序资源。</li>\n<li><a href=\"https://www.serverless.com/framework/docs/providers/aws/guide/intro/\" target=\"_blank\">无服务器框架</a> - 无服务器框架由一个开源 CLI 和一个托管控制面板组成。它们一起为您提供了完整的无服务器应用程序生命周期管理。</li>\n<li><a href=\"https://github.com/aws/chalice\" target=\"_blank\">Chalice</a> 是在 Python 中编写无服务器应用程序的一种框架。通过它,您可以快速创建和部署使用 Amazon Lambda 的应用程序。</li>\n<li><a href=\"https://arc.codes/reference/arc/aws\" target=\"_blank\">Arc.codes</a> 提供了构建大规模可扩展无服务器应用所需的一切,具有低代码、清晰简洁的配置和零仪式。</li>\n<li><a href=\"https://claudiajs.com/claudia.html\" target=\"_blank\">Claudia.js</a> 可用于轻松将 Node.js 项目部署到 Amazon Lambda 和 API Gateway。</li>\n<li></li>\n</ul>\n<p>因为我们的测试服务使用 Node.js 实现的,所以我们选择了 Claudia.js 框架。</p>\n<h6><a id=\"41__85\"></a><strong>4.1 部署步骤</strong></h6>\n<pre><code class=\"lang-\">npm install claudia -g\n</code></pre>\n<p>本地调试/发布需要配置亚马逊云科技鉴权</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/9f4f00ae3382490fab84efe27c24b83d_image.png\" alt=\"image.png\" /></p>\n<p>从配置台获取相应的 access key 配置</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/20a7e4f8057a472b9e32d6fc654f46a5_image.png\" alt=\"image.png\" /></p>\n<h6><a id=\"42__98\"></a><strong>4.2 源码解析</strong></h6>\n<p>官方提供了很多例子:<br />\n<a href=\"https://github.com/claudiajs/example-projects/tree/master/hello-world\" target=\"_blank\">https://github.com/claudiajs/example-projects/tree/master/hello-world</a></p>\n<pre><code class=\"lang-\">/*global exports, console*/\nexports.handler = function (event, context) {\n 'use strict';\n console.log(event);\n context.succeed('hello world');\n};\n</code></pre>\n<p>package.json<br />\n通过 <code>npm start</code> 运行,<code>npm test</code> 调试,<code>npm deploy</code> 发布到 Lambda。</p>\n<pre><code class=\"lang-\">{\n &quot;scripts&quot;: {\n &quot;start&quot;: &quot;claudia create --name hello-world --region us-east-1 --handler main.handler --profile claudia&quot;,\n &quot;test&quot;: &quot;claudia test-lambda --profile claudia&quot;,\n &quot;deploy&quot;: &quot;claudia update --profile claudia&quot;\n }\n }\n</code></pre>\n<h6><a id=\"43_Amazon_Lambda__124\"></a><strong>4.3 Amazon Lambda 设置</strong></h6>\n<p>发布服务后,我们希望通过 HTTP 协议能访问到这个 Function,需要配置 Funtion URL</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/889a5a1fd9c54bc581a03500a44cf973_image.png\" alt=\"image.png\" /></p>\n<p>为了调试方便,我们不需要鉴权,所以选择 <code>None</code>,同时不限制请求的域名开启跨域。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/838c8a13c1364da281260735da09d730_image.png\" alt=\"image.png\" /></p>\n<p>此刻服务还不能直接访问,除了 Function 的身份验证,我们还需要配置资源的权限。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/09a305d7832546f7ae12a4fb781a5642_image.png\" alt=\"image.png\" /></p>\n<p>点击 <code>Add Permission</code>,获取权限。</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/7e9d97e0d569466a8af044e0c5c9e200_image.png\" alt=\"image.png\" /></p>\n<p>保存后,打开 Function URL 即可访问到这个 API 服务~</p>\n<p><img src=\"https://dev-media.amazoncloud.cn/d727ec769a6444a28692a2a7a02e3016_image.png\" alt=\"image.png\" /></p>\n<h5><a id=\"_145\"></a><strong>四、作者心得</strong></h5>\n<p>我是 Eoapi 的一名开发者,<a href=\"https://eoapi.io\" target=\"_blank\">https://eoapi.io</a> 就是使用上面的步骤配置出来的,如果大家对项目感兴趣,欢迎大家持续关注我们项目:<a href=\"https://github.com/eolinker/eoapi\" target=\"_blank\">https://github.com/eolinker/eoapi</a>。</p>\n<p><strong>作者介绍:</strong></p>\n<p><img src=\"https://dev-media.amazoncloud.cn/5914a7d277b345d6a94a2198e077d893_%E5%9B%BE%E7%89%871.png\" alt=\"图片1.png\" /></p>\n<p>Keith Yan(丘秉宜)中国首位亚马逊云科技 Community Hero。</p>\n"}
0
目录
关闭
contact-us