本文介绍Python事件请求处理程序的结构特点和示例。
Event Handler签名
一个简单的Event Handler签名定义如下。
def handler(event, context):
return 'hello world'
Event Handler的示例解析如下:
handler
:方法名称。与函数计算控制台配置的请求处理程序(函数入口)相对应。例如,为FC函数配置的handler为main.handler
,那么函数计算会去加载main.py
中定义的handler
函数,并从handler
函数开始执行。event
:您调用函数时传入的参数。在Python 2.7运行环境中,类型为String。在Python 3运行环境中,类型为Bytes。context
:为您的FC函数调用提供在调用时的运行上下文信息。
示例一:解析JSON格式参数
代码示例
当你传入JSON格式参数时,函数计算会透传参数内容,需要您在代码中自行解析。下面是解析JSON格式事件的代码示例。
# -*- coding: utf-8 -*-
import json
def handler(event, context):
evt = json.loads(event)
return evt['key']
前提条件
操作步骤
示例二:通过临时密钥安全读写OSS的资源
示例代码
您可以使用函数计算为您提供的临时密钥访问对象存储OSS,代码示例如下所示。
import json
import oss2
def handler(event, context):
evt = json.loads(event)
creds = context.credentials
# do not forget security_token
auth = oss2.StsAuth(creds.access_key_id, creds.access_key_secret, creds.security_token)
bucket = oss2.Bucket(auth, evt['endpoint'], evt['bucket'])
bucket.put_object(evt['objectName'], evt['message'])
return 'success'
上述代码示例中的creds = context.credentials
表示从context
参数中获取临时密钥,避免在代码中硬编码密码等敏感信息。
注意 请确保当前所在的服务配置的角色具有访问对象存储OSS的权限。您可以登录RAM控制台,为该角色添加访问对象存储OSS的权限。
前提条件
操作步骤
示例三:调用外部命令
您的Python程序也可以创建fork
进程,调用外部命令。例如,您可以使用subprocess
模块调用Linux的ls -l
命令,输出当前目录下的文件列表。代码示例如下:
import os
import subprocess
def handler(event, context):
ret = subprocess.check_output(['ls', "-l"])
return ret