®
世界顶尖人才,点播 ®

Toptal, LLC版权所有

\n \n\n \n \n\n \n \n\n
\n {image_urls中image_url的% %}\n
\n \n
\n {% endfor %}\n
\n \n\n\n\n

Once again, 我们可以修改前面的Makefile并使用create命令来部署lambda函数.

\n\n

API Gateway

\n\n

ImageList Lambda函数是完整的,但是它不能提供给任何用户. 这是因为Lambda函数只能在响应来自另一个服务的事件时调用, 或通过编程的方式. 这就是Amazon AWS API Gateway服务发挥作用的地方. API网关可以在“应用程序服务”子部分下找到.

\n\n

API Gateway是一种将端点建模为一组资源和方法的方法, 本质上是一个REST接口. 除了提供验证和转换请求的工具之外, API网关执行其他功能,如提供节流/速率限制请求.

\n\n

从API Gateway指示板中,创建一个新的API,用于服务ListImage函数. 名称和描述可以设置为您的偏好. 创建后,单击新API的名称以访问API的详细信息. 为根URL " / "创建一个新资源. 这个URL将用于提供HTML页面.

\n\n

在查看根资源页面的详细信息时,添加一个GET方法. 将“积分类型”设置为“Lambda函数”, 将“Lambda区域”设置为“us-west-1”或您选择的区域, 并键入ListImage Lambda函数的名称.

\n\n

在开始将响应映射到HTML输出之前, 除了将响应映射到内容类型之外,我们还需要定义一个“模型”,该模型将为来自服务器的响应定义一个模式. 选择API的“Models”部分,并单击“Create”来创建一个新模型. 给模型命名为“HTML”,内容类型为“text/ HTML”,并定义模式如下:

\n\n
{\n  \"$schema\": \"http://json-schema.org/draft-04/schema#\",\n  \"title\" : \"HTML\",\n  \"type\" : \"object\"\n}\n
\n\n

回到API仪表板, 选择我们创建的资源并导航到“Integration Response”部分. 本节定义在接收到Lambda函数的响应之后要处理的任何转换,然后再将响应输送到最后一步.

\n\n

打开“映射模板”部分,添加新的“内容类型”为“text/html”. 同时删除旧的“内容类型”. 在右侧,将下拉菜单从“Output Passthrough”改为“Mapping template”。. 这将允许我们修改API网关接受的原始JSON, 并使用返回数据的" htmlContent "属性中的HTML内容. 对于映射模板,指定“$input”.htmlContent”作为模板.\nFinally, 修改“Method Response”部分,从“Response Models for 200”中删除“application/json”,添加“text/html”.

\n\n

\"\"

\n\n

返回到API的指示板, 在页面的左上角有一个标有“部署API”的按钮。. 单击此按钮以使用指定资源更新或创建API, methods, models, and mappings. 一旦完成, 将显示所选部署阶段的URL(默认为部署阶段).\n最后,示例完成了! 您可以上传一些文件来测试和查看调整后的图像.

\n\n

\"\"

\n\n

Wrapping Up

\n\n

AWS是一项大型服务,短期内不会消失. 尽管供应商锁定总是需要小心的, AWS Lambda提供了一个相对精简的服务,并提供了一组丰富的辅助配置选项. 利用AWS提供的服务来实现易于扩展和维护的应用程序将提供使用AWS平台的最大好处. AWS Lambda提供了一个优雅的, 可伸缩且经济高效的解决方案,由大量消费者使用的企业级平台支持. 我相信“无服务器”应用程序是未来的发展方向. 请在下面的评论中告诉我们你的想法.

\n","as":"div","isContentFit":true,"sharingWidget":{"url":"http://nmp.hidekoquanyin.net/aws/service-oriented-architecture-aws-lambda","title":"AWS Lambda for Ultimate Service Oriented Architecture","text":null,"providers":["linkedin","twitter","facebook"],"gaCategory":null,"domain":{"name":"developers","title":"Engineering","vertical":{"name":"developers","title":"Developers","publicUrl":"http://nmp.hidekoquanyin.net/developers"},"publicUrl":"http://nmp.hidekoquanyin.net/developers/blog"},"hashtags":"Python,AWS,SOA,AWSLambda,AmazonS3"}}