`
猫耳呀
  • 浏览: 164488 次
社区版块
存档分类
最新评论

10分钟上线 - API网关 + 函数计算实现图片处理服务

API 
阅读更多
摘要: 阿里云函数计算服务(FunctionCompute,FC)是一个事件驱动的全托管计算服务。通过函数计算与云端各个服务的广泛集成,开发者只需要编写函数代码,就能够快速地开发出弹性高可用的后端系统。接下来我们利用 API网关 + FC,来快速实现一个图片转换服务。

点此查看原文:http://click.aliyun.com/m/43686/

阿里云函数计算服务(FunctionCompute,FC)是一个事件驱动的全托管计算服务。通过函数计算与云端各个服务的广泛集成,开发者只需要编写函数代码,就能够快速地开发出弹性高可用的后端系统。接下来我们利用 API网关 + FC,来快速实现一个图片转换服务。

我们先从最简单的 hello word 开始,函数代码如下:

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 字符串返回

结合API 网关,开发者可以方便地将自己的函数以 HTTP 的方式提供给别人使用。关于 API 网关和 FC 的交互协议细节,可参考这篇文章。下图是图片拼接和选择服务的效果和代码示例。当body内容为二进制时,需在函数计算中对body内容进行Base64编码,同时设置isBase64Encoded=true。如果body无需Base64编码,isBase64Encoded可以设置为false。API网关会对isBase64Encoded=true的body内容进行Base64解码后再透出给客户端。

图片描述

import base64
import logging
import random

import oss2
from wand.image import Image

TEMPLATE = open('/code/index.html').read()

def my_handler(event, context):
    logger = logging.getLogger()
    logger.info('event: %s', event)

    creds = context.credentials
    auth = oss2.StsAuth(creds.accessKeyId, creds.accessKeySecret, creds.securityToken)
    bucket = oss2.Bucket(auth, 'oss-cn-shanghai-internal.aliyuncs.com', 'rockuw-sh-2')

    fc_obj = bucket.get_object('fc.png')
    py_obj = bucket.get_object('python.png')

    with Image(file=fc_obj) as fc_img:
        with Image(file=py_obj) as py_img:
            img = Image()
            img.blank(fc_img.width + py_img.width + 20, py_img.height)
            img.composite(image=fc_img, left=0, top=0)
            img.composite(image=py_img, left=fc_img.width+20, top=0)
            img.rotate(random.randint(0, 360))
            img_enc = base64.b64encode(img.make_blob(format='png'))

    resp = {
        'isBase64Encoded': False,
        'statusCode': 200,
        'body': TEMPLATE.replace('{fc-py}', img_enc)
    }

    return resp
识别以下二维码,阅读更多干货
图片描述
分享到:
评论

相关推荐

    flask-zappa:AWS Lambda + API网关上的无服务器Flask

    Flask-Zappa是一个用于Python Flask应用程序的工具,它允许开发者在Amazon Web Services (AWS) 的Lambda函数和API Gateway上部署和管理全功能的Web服务,实现无服务器架构。这种架构模式能够减少基础设施管理的工作...

    藏经阁-搭建基于 Serverless 的在线转换工具.pdf

    - 常见的媒体格式处理,如图片处理、视频转码、文档格式转换等,都可以借助函数计算实现。 - 提供了如Image Resizer这样的应用模板,通过Funcraft和Docker等工具简化部署过程。 6. **转换工具优势** - 函数计算...

    59-数栖·数据服务v2.0.0-用户手册.docx

    - 定义:预先定义好的函数集合,用于封装应用程序的服务能力,并通过API网关对外开放给用户调用。 - 组成:基本信息、前端后端请求路径与参数、请求协议等。 2. **数据源** - 描述:指数据库的连接信息。数据API...

    stores-rest-api:使用Python Flask REST API来访问商品,商店和用户身份验证

    **Flask** 是一个轻量级的Python Web服务器网关接口(WSGI)微框架,它允许开发者用Python代码定义路由和视图函数,以创建动态网页。在这个项目中,Flask提供了基础的Web服务架构。 **Flask-RESTful** 是Flask的一...

    阿里云-公司购买服务.zip

    6. **API网关**:API网关帮助企业快速构建、管理和维护API,实现前后端分离,促进微服务架构的实施,提高系统的集成和扩展性。 7. **消息队列MQ**:阿里云的消息队列服务支持多种协议,如RocketMQ、Kafka等,提供高...

    快钱人民币支付网关开发包

    快钱人民币支付网关开发包是一款专为商家和开发者设计的工具,用于集成快钱支付系统,以便在自己的产品或服务中实现便捷的在线支付功能。这个开发包提供了丰富的接口和文档,帮助开发者快速理解和接入快钱的支付服务...

    s-framework-master

    2. **部署与更新**:通过简单的命令行操作,可以将代码一键部署到阿里云的函数计算(Function Compute)、API网关(API Gateway)等服务上,并实现无缝更新。 3. **服务监控**:集成阿里云的日志服务(Log Service)...

    快钱自动付款网关开发包

    10. **售后服务和技术支持**:快钱通常会提供技术支持和售后服务,解答开发者在集成过程中遇到的问题,确保开发者能够顺利地将快钱支付网关整合到自己的产品中。 通过深入学习和实践快钱自动付款网关开发包,开发者...

    小程序Serverless 云开发.zip

    3. **云开发**:在支付宝小程序的开发过程中,云开发提供了一站式的后端服务,包括数据库、存储、函数计算等,开发者可以通过简单的API调用实现数据的存取和业务逻辑处理。这种方式减少了对传统服务器的依赖,简化了...

    微服务 服务与 无

    在Serverless架构中,API网关还可以触发Serverless函数的执行。 ### 结合示例进行说明 从文件提供的部分内容...

    智能生活网关产品参考应用程序说明1

    3. 调用`IOT_Linkkit_Report`函数:最后,网关向云端报告子设备已上线,表示子设备已准备好接收和发送数据。 批量添加子设备通常用于一次性处理多个设备的场景,简化了逐个添加的繁琐过程。批量添加通常涉及对上述...

    FLASK预测,模型部署和上线

    Flask是一个轻量级的Web服务器网关接口(WSGI)Web应用框架,非常适合快速构建简单的、但功能强大的应用程序或API。 在机器学习项目中,开发出的模型需要经过部署才能在实际环境中应用。Flask因其简洁的结构和易于...

    Serverless在大规模数据处理的实践.pptx

    5. **丰富的事件源**:FaaS与云端服务深度集成,能够从对象存储、表格存储、定时器、CDN、API网关、日志服务等多个事件源触发函数执行,简化了系统架构,降低了编程复杂性。 6. **高可用与安全性**:FaaS架构通常...

    基于云开发的新闻小程序设计与实现.zip

    使用云开发的API网关服务,可以方便地管理和控制接口访问权限,同时提供安全的签名机制防止非法请求。 7. **性能优化** 为了提高小程序的性能,可以对图片进行压缩,利用懒加载策略减少初次加载时间。同时,合理...

    探索Serverless中的前端开发模式.pdf

    各大云服务商如阿里云的函数计算、AWS的Lambda以及Azure Functions提供了丰富的语言支持和触发器选项,如阿里云函数计算支持OSS、API网关等触发器,AWS Lambda支持DynamoDB、SNS等,Azure Functions则支持Event Grid...

    小程序云开发的垃圾分类小程序(可做毕业设计)包含微信、QQ、支付宝、百度小程序四个平台小程序系统源码.zip

    4. API网关:云API网关提供了对外暴露服务的能力,可以将云函数包装成HTTP接口供外部调用。 三、项目结构 根据提供的压缩包文件名称,我们可以推测项目的结构: 1. product.csv:可能包含各种垃圾类型的产品数据,...

    腾讯云推出“小程序·云开发”10亿资源扶持计划.zip

    5. API网关:快速构建API接口,支持多种协议,方便前后端分离开发。 四、小程序·云开发的优势 1. 快速迭代:云开发可以快速响应业务变化,实现快速上线和迭代更新。 2. 安全可靠:腾讯云提供强大的安全防护机制...

    开源项目-solo-io-gloo.zip

    Envoy 是一个强大的、高性能的边缘服务代理,而 Gloo 则将其功能进一步扩展,提供了更高级别的抽象和自动化,使得在云原生环境中管理 API 和函数变得更为简单。 Gloo 作为 API 网关,主要负责以下几方面的功能: 1...

    java毕业设计&课设-分布式互联网商城(视频+源码).doc

    每个服务都独立部署,并通过API网关进行通信,这样不仅可以简化开发和测试工作,还能有效地隔离故障,避免单点失败带来的风险。 #### 2.3 分布式数据库 考虑到大数据量下的高效存储与检索需求,项目中使用了分布式...

    基于 Serverless 与微前端的一体化研发实践.zip

    - **函数即服务(FaaS)**:如AWS的Lambda、阿里云的函数计算等,用于实现Serverless架构。 - **无服务器框架**:如Serverless Framework、OpenFaaS等,帮助开发者更便捷地构建和部署Serverless应用。 - **微前端框架*...

Global site tag (gtag.js) - Google Analytics