如何用阿里云函数计算结合API网关构建自己的serverless服务

Posted R的码码屋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用阿里云函数计算结合API网关构建自己的serverless服务相关的知识,希望对你有一定的参考价值。

Serverless是什么?

serverless是一个新的部署概念,并不是字面意义的没有服务器承载计算,而是对于开发者来说,屏蔽服务器相关的细节,只需关注业务逻辑,代码的运行环境,运行硬件地点均由serverless服务提供商进行管理。

组件介绍

API网关

API 网关(API Gateway),提供API托管服务,涵盖API发布、管理、运维、售卖的全生命周期管理。API网关有很多后端可以对接,此处选择了函数计算作为后端。

函数计算

阿里云函数计算(Function Compute)是一个事件驱动的全托管计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码。

技术细节

函数计算对接API网关

对接API网关时,函数计算的主函数需要接受两个参数:

 
   
   
 
  1. Event event: 入参

  2. Context context: 请求上下文

Event是API网关转发到函数计算的请求信息。

 
   
   
 
  1. // Event

  2. {

  3.    "path":"/some/path",

  4.    "httpMethod":"GET",

  5.    "headers":{

  6.    },

  7.    "queryParameters":{

  8.    },

  9.    "pathParameters":{

  10.    },

  11.    "body":"this is body",

  12.    "isBase64Encoded":false

  13. }

Context是函数计算运行时的上下文,可以从中获取一些身份信息,函数信息以及日志实现。

 
   
   
 
  1. // Context

  2. {

  3.    "requestId":"requestId",

  4.    "executionCredentials":{

  5.        "accessKeyId":"akid",

  6.        "accessKeySecret":"aks",

  7.        "securityToken":"st"

  8.    },

  9.    "functionParam":{

  10.        "functionName":"fn",

  11.        "functionHandle":"fh",

  12.        "execTimeLimitInMillis":1000,

  13.        "memoryLimitInMB":1000

  14.    },

  15.    "logger":{

  16.        "info":"info",

  17.        "warning":"warning"

  18.        ...

  19.        etc

  20.    },

  21. }

函数计算可以在Event对象中获取来自前端的信息并进行处理并返回,返回时的对象是Output。

 
   
   
 
  1. // Output

  2. {

  3.    isBase64Encoded:false,

  4.    statusCode:200,

  5.    headers:{

  6.    },

  7.    body:"this is body"

  8. }

函数计算的权限

函数计算的权限来自于函数创建时的配置,当函数需要操作oss时,就需要对该角色赋予oss操作的权限。但是并不需要硬编码到代码中,因为Context对象会将这些权限数据传入到函数中,开发者只需要在代码中直接获取即可。

简单的实例

在小程序中,需要生成小程序码的功能,基于这种serverless架构,开发出了一个简单便捷的可缓存的serverless二维码获取API。 

点击原文可以到github中看示例代码。

总结

在这个小程序中,所有API和获取图片的接口都使用了这一种解决方案,由此大幅度的降低了独立开发带来的压力,也减少了支出成本。

  1. 使用serverless方案后,可以极大的降低开发者的运维压力,只需要专注于开发业务逻辑就可以了。什么八个明星同时出轨的事情,如果扛不住,那就不是我的事情了,阿里云能为我完成这方面的优化了【笑

  2. 使用serverless方案后,请求按需收费,进一步可以降低成本。

  3. 使用API网关后,对于接口的管理变得更加轻松,但是还有一个问题就是函数计算对于测试的支持不是很好,结合API网关之后很容易翻车。

  4. 目前函数计算支持python2、python3、node6、node8、java8、php7进行开发,对于除了Java外的编程语言支持http触发器(不需要API网关直接调用函数)


以上是关于如何用阿里云函数计算结合API网关构建自己的serverless服务的主要内容,如果未能解决你的问题,请参考以下文章

云计算API网关遇上容器服务

如何用好云原生数据湖?

阿里API网关使用总结

如何用阿里云的ECS建造属于你自己的网站详细介绍

浅析阿里云API网关的产品架构和常见应用场景

16年物联网经验告诉您如何用MQTT网关快速接入主流云