成都网站建设哪家技术好,最实用的仓库管理系统,网站开发公司怎么找客户,网站设计名称阿里云函数计算服务(FunctionCompute#xff0c;FC)是一个事件驱动的全托管计算服务。通过函数计算与云端各个服务的广泛集成#xff0c;开发者只需要编写函数代码#xff0c;就能够快速地开发出弹性高可用的后端系统。接下来我们使用FC#xff0c;来快速实现一个图片转换服…阿里云函数计算服务(FunctionComputeFC)是一个事件驱动的全托管计算服务。通过函数计算与云端各个服务的广泛集成开发者只需要编写函数代码就能够快速地开发出弹性高可用的后端系统。接下来我们使用FC来快速实现一个图片转换服务, 并把这个图片转换服务作为支付宝小程序的后端。
支付宝小程序demo前端效果图 资源下载及准备工作
示例代码附件 【必须】
支付宝小程序开发工具下载 【非必须】
函数计算FC 快捷入口对象存储OSS 快捷入口日志服务Log Service 快捷入口
简明架构图 函数入口
普通函数入口
def my_handler(event, context):return hello world
函数名
my_handler需要与创建函数时的Handler字段相对应例如创建函数时指定的 Handler 为main.my_handler那么函数计算会去加载main.py中定义的my_handler函数
event 参数
event 参数是用户调用函数时传入的数据其类型是str
context 参数
context 参数中包含一些函数的运行时信息(例如 request id/临时 AK 等。其类型是FCContext具体结构和使用在下面的使用 context介绍
返回值
函数的返回值会作为调用函数的结果返回给用户它可以是任意类型对于简单类型会函数计算会把它转换成 str 返回对于复杂类型会把它转换成 JSON 字符串返回
HTTP 触发器的函数入口
HELLO_WORLD bHello world!\n
def handler(environ, start_response):context environ[fc.context]status 200 OKresponse_headers [(Content-type, text/plain)]start_response(status, response_headers)return [HELLO_WORLD] environ : environ 参数是一个 python 字典里面存放了所有和客户端相关的信息具体详情参考 environ 参数函数计算增加了两个自定义的 key分别是 fc.context 和 fc.request_uri fc.context : 和普通函数入口的 context 意义一样fc.request_uri : string 类型request 的 url
需要注意的点environ 中的 HTTP_Variables 里面包含 request 中 header, 比如某个请求的 header 的为 x-Custom-key:value , 在 environ 中会表现为environ[HTTP_X_CUSTOM_KEY]value, 可以理解为对于 request header 中的 keyWSGI 做如下处理key HTTP_ k.upper().replace(-,_)
start_response : start_response 参数是一个可调用者callable, 具体参考 the-start-response-callable , 这个是 FC runtime 提供的它接受两个必要的位置参数和一个可选参数。
更多详细介绍请参考函数入口和python runtime
具体操作步骤
假定这次实验所有操作在华东2 上海region 完成所有实验相关的资源请从附件中下载
这里介绍两种部署函数的方法
利用fun 工具进行自动化部署利用控制台进行可视化部署
准备工作
准备存储图片的 oss bucket 比如在华东2创建了一个名叫xcx-demo的bucket利用fun工具进行自动部署
Fun 是用于在阿里云上定义 serverless 应用的模型。 Serverless 应用是由事件触发功能组成的应用。一个典型的 serverless 应用由一个或多个由诸如向 阿里云 OSS 上传对象在 阿里云 OTS 上执行数据操作以及 API 操作等事件触发的阿里云函数计算组成。这些函数可以独立使用。也可以利用其它资源例如阿里云 OTS 的表和 OSS 的 buckets。最基本的 serverless 应用可以只有一个函数。
比如对于这个案例定义的yaml文件如下
ROSTemplateFormatVersion: 2015-09-01
Transform: Aliyun::Serverless-2018-04-03
Resources:sh-pro:Type: Aliyun::Serverless::LogProperties:Description: image process log profc-log:Type: Aliyun::Serverless::Log::LogstoreProperties:TTL: 362ShardCount: 1 pydemo:Type: Aliyun::Serverless::ServiceProperties:Description: fc xiaochengxu demoPolicies:- AliyunOSSFullAccessLogConfig:Project: sh-proLogstore: fc-logupload:Type: Aliyun::Serverless::FunctionProperties:Handler: upload.handlerCodeUri: ./Description: http function for upload imageRuntime: python2.7Timeout: 60MemorySize: 256Events:http-trigger:Type: HTTPProperties:AuthType: ANONYMOUSMethods: [POST]proc:Type: Aliyun::Serverless::FunctionProperties:Handler: proc.handlerCodeUri: ./Description: http function for process imageRuntime: python2.7Timeout: 60MemorySize: 256Events:http-trigger:Type: HTTPProperties:AuthType: ANONYMOUSMethods: [GET]上面的定义的yaml文件要做以下几件事情
创建日志资源logproject: sh-pro, logstore: fc-log创建service:xcxdemo 以及function: upload 和 proc, 函数添加了一个类型为HTTP名叫http-trigger的trigger配置service role以及logconfig 其中role的权限为AliyunOSSFullAccess和函数执行日志写到fc-log的权限
具体操作
安装nodejs安装funnpm install alicloud/fun -g
修改template.yml中的logproject的名字和.env中的相关配置执行命令fun deploy
执行成功后应该可以看到如下资源被创建, 截图 控制台setup
创建函数并且配置http trigger
在 上海 region 先创建好日志资源用于函数计算的日志收集新建service配置service一个具有访问oss权限的role 点击授权
点击确定
创建一个函数并设置Http trigger, 使用的代码包为附件中 server 目录下的 code.zip测试函数
curl https://1186202104331798.cn-shanghai.fc.aliyuncs.com/2016-08-15/proxy/pydemo/upload/ -F lena.png/Users/songluo/work/shworkshop/wp/lena.png -vcurl https://1186202104331798.cn-shanghai.fc.aliyuncs.com/2016-08-15/proxy/pydemo/proc/rotate/10/lena.png 1.png将函数作为支付宝小程序的后端
下载安装支付宝小程序 IDE打开代码包中的client, 将代码中的 url 替换成自己函数的 url然后打开 调试器 和 模拟器 总结
函数计算有如下优势
无需采购和管理服务器等基础设施专注业务逻辑的开发提供日志查询、性能监控、报警等功能快速排查故障以事件驱动的方式触发应用响应用户请求毫秒级别弹性伸缩快速实现底层扩容以应对峰值压力按需付费。只需为实际使用的计算资源付费适合有明显波峰波谷的用户访问场景
原文链接 本文为云栖社区原创内容未经允许不得转载。