函数计算入口参数event详解

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 函数计算入口参数event是一个可以根据具体需求高度自由化定制的参数,真的可以为所欲为

官方文档中对event的解释如下:

event是用户调用函数时传入的数据,它可以是一个简单的string,也可以是一个JSON string,还可以是一个图片(二进制数据)。函数中的event参数是个字节流,在Python2.7中是str类型,在Python3中是bytes类型。

用户在函数中可以根据实际情况对event进行转换:

  • 输入数据是一个JSON string的话,用户可以把它转换成一个dict:
# -*- coding: utf-8 -*-
import json
def my_handler(event, context):
    evt = json.loads(event)
    return evt['key']
  • 输入数据是一个文件的bytes, 比如图片的文件作为event参数传入
# -*- coding: utf-8 -*-
from wand.image import Image
def resize(event, context):
    with Image(blob=event) as img:
        with img.clone() as i:
            i.resize(128, 128)
            return i.make_blob()

丰富event参数功能

上面列出的event参数功能都是针对具体的string或者文件bytes的情况,假设用户想在event中同时传送文本字符串和图片、音频、视频等其他文件资源,这个是可行吗?答案是肯定的。
在本教程中,我们以python3 runtime为例,将一张图片作为json的某个filed值传入函数的event参数,先在控制台上创建一个函数如下:

# -*- coding: utf-8 -*- 
import json
from wand.image import Image
import base64

def handler(event, context):
    evt = json.loads(event)
    img_str = evt.get('image_str', "")
    print("handler log:", evt.get('name'))
    image_data = base64.b64decode(img_str)
    if not image_data:
        return
    with Image(blob=image_data) as img:
        with img.clone() as i:
            i.resize(128, 128)
            return i.make_blob()

假设这个函数所在的service名为demo, 函数名字是multimedia, 本地代码:

# coding=utf-8
import fc2
import base64
import json

def get_multimedia_json(img_file):
    json_data = None
    with open(img_file, 'rb') as jpg_file:
        byte_content = jpg_file.read()
        base64_bytes = base64.b64encode(byte_content)
        base64_str = base64_bytes.decode('utf-8')
        raw_data = {
            'name': "multimedia",
            'image_str': base64_str,
        }
        json_data = json.dumps(raw_data)
    return json_data

json_data = get_multimedia_json("test.jpg")

client = fc2.Client(
    endpoint='<your account id>.cn-hangzhou.fc.aliyuncs.com',
    accessKeyID='<your ak id>',
    accessKeySecret='<your ak secret>',
    )

# Invoke function synchronously.
resp = client.invoke_function('demo', 'multimedia', payload=json_data)

with open('output.jpg', 'wb') as jpg_file:
    jpg_file.write(resp.data)

这里假设函数的当前目录有test.jpg图片,执行函数之后,在本地会生成一张test.jpg缩放成128*128大小的图像output.jpg

event是一个可以根据具体需求高度自由化定制的参数,真的可以为所欲为:
image

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
7月前
|
JSON Serverless API
Serverless 应用引擎常见问题之query参数无法取到上一步传输过来的jjson参数如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
200 3
|
7月前
|
缓存 Serverless 开发者
serverless devs部署问题之push image失败如何解决
Serverless部署是指将应用程序部署到无服务器架构中,该架构允许开发者专注于代码而无需关心底层服务器的运行和维护;针对Serverless部署过程中可能遇到的挑战,本合集提供全面的指南和最佳实践,帮助开发者顺利实现应用的无服务器化部署。
126 1
|
4月前
|
消息中间件 网络协议 JavaScript
函数计算产品使用问题之删除应用重建后,如何快速生成之前的模型和参数
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
4月前
|
存储 计算机视觉
OpenCV 中 CV_8UC1,CV_32FC3,CV_32S等参数的含义
OpenCV 中 CV_8UC1,CV_32FC3,CV_32S等参数的含义
344 3
|
4月前
|
运维 Serverless API
函数计算产品使用问题之如何通过API传递ControlNet参数
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
5月前
|
机器学习/深度学习 缓存 运维
函数计算产品使用问题之如何解决SD中安装了ebsynth_utility插件但在webui中没有入口的问题
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
136 4
|
5月前
|
Serverless API 网络安全
函数计算操作报错合集之如何解决在cfg_scale参数传入4.5等浮点数时遇到报错
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
7月前
|
运维 Serverless API
Serverless 应用引擎产品使用之在阿里函数计算中,“允许函数默认网卡访问公网” 参数配置如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
7月前
|
运维 Serverless 开发工具
Serverless 应用引擎产品使用之阿里云函数计算中在哪里可以找到函数入口设置的类如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
7月前
|
人工智能 运维 Java
Serverless 应用引擎产品使用之在阿里云函数计算中设置JVM参数如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。

热门文章

最新文章

相关产品

  • 函数计算