如何用阿里云函数计算结合API网关构建自己的serverless服务
Posted R的码码屋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用阿里云函数计算结合API网关构建自己的serverless服务相关的知识,希望对你有一定的参考价值。
Serverless是什么?
serverless是一个新的部署概念,并不是字面意义的没有服务器承载计算,而是对于开发者来说,屏蔽服务器相关的细节,只需关注业务逻辑,代码的运行环境,运行硬件地点均由serverless服务提供商进行管理。
组件介绍
API网关
API 网关(API Gateway),提供API托管服务,涵盖API发布、管理、运维、售卖的全生命周期管理。API网关有很多后端可以对接,此处选择了函数计算作为后端。
函数计算
阿里云函数计算(Function Compute)是一个事件驱动的全托管计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码。
技术细节
函数计算对接API网关
对接API网关时,函数计算的主函数需要接受两个参数:
Event event: 入参
Context context: 请求上下文
Event是API网关转发到函数计算的请求信息。
// Event
{
"path":"/some/path",
"httpMethod":"GET",
"headers":{
},
"queryParameters":{
},
"pathParameters":{
},
"body":"this is body",
"isBase64Encoded":false
}
Context是函数计算运行时的上下文,可以从中获取一些身份信息,函数信息以及日志实现。
// Context
{
"requestId":"requestId",
"executionCredentials":{
"accessKeyId":"akid",
"accessKeySecret":"aks",
"securityToken":"st"
},
"functionParam":{
"functionName":"fn",
"functionHandle":"fh",
"execTimeLimitInMillis":1000,
"memoryLimitInMB":1000
},
"logger":{
"info":"info",
"warning":"warning"
...
etc
},
}
函数计算可以在Event对象中获取来自前端的信息并进行处理并返回,返回时的对象是Output。
// Output
{
isBase64Encoded:false,
statusCode:200,
headers:{
},
body:"this is body"
}
函数计算的权限
函数计算的权限来自于函数创建时的配置,当函数需要操作oss时,就需要对该角色赋予oss操作的权限。但是并不需要硬编码到代码中,因为Context对象会将这些权限数据传入到函数中,开发者只需要在代码中直接获取即可。
简单的实例
在小程序中,需要生成小程序码的功能,基于这种serverless架构,开发出了一个简单便捷的可缓存的serverless二维码获取API。
点击原文可以到github中看示例代码。
总结
在这个小程序中,所有API和获取图片的接口都使用了这一种解决方案,由此大幅度的降低了独立开发带来的压力,也减少了支出成本。
使用serverless方案后,可以极大的降低开发者的运维压力,只需要专注于开发业务逻辑就可以了。什么八个明星同时出轨的事情,如果扛不住,那就不是我的事情了,阿里云能为我完成这方面的优化了【笑
使用serverless方案后,请求按需收费,进一步可以降低成本。
使用API网关后,对于接口的管理变得更加轻松,但是还有一个问题就是函数计算对于测试的支持不是很好,结合API网关之后很容易翻车。
目前函数计算支持python2、python3、node6、node8、java8、php7进行开发,对于除了Java外的编程语言支持http触发器(不需要API网关直接调用函数)
以上是关于如何用阿里云函数计算结合API网关构建自己的serverless服务的主要内容,如果未能解决你的问题,请参考以下文章