函数计算为您提供了多种示例场景的模板代码,您可以在示例代码上进行更改,也可以直接使用模板代码。本文介绍函数模板的使用说明与参数配置。
背景信息
函数计算提供了多种函数模板,您可以在函数计算控制台创建函数页面的使用模板创建页签内,查看模板详细信息。部分模板是需要配置对应触发器后才能使用,例如备份OSS增量数据等。您可以参考以下模板列表,查看相应信息:
- alimebot-nodejs:云小蜜机器人
- image-crawler:图片爬虫
- image-recognition:图像识别
- flask-web:基于Flask工程部署到函数计算
- load-large-code-package:加载大代码包
- aliyun-config-python3:审计规则配置
- api-gateway-nodejs12:API网关返回串大全
- copy-oss-object-python3:备份OSS增量数据
- data-lake-analytics:数据湖实践
- get-object-meta:获取OSS对象属性
- get-oss-md5-python3:获取OSS文件MD5
- logstore-replication:日志备份
- marketplace-weather-demo:使用云市场服务
- oss-download-zip-upload:OSS图片下载压缩
- oss-get-object-info:获取对象信息
- oss-shipper-csv:构建CSV投递OSS
- read-write-tablestore-nodejs12:读写表格存储
- read-write-tablestore-python3:读写表格存储
- return-apigateway-string:API网关返回串
alimebot-nodejs:云小蜜机器人
该模板供Dialog Studio的开发者使用,提供了基本的函数结构,您需要按此结构进行代码开发。
- 输入参数:
- event:由上游节点传入的参数信息。
- context:上下文信息,例如对话。
- 输出参数:result。通过Callback的异步方式读取返回结果。
image-crawler:图片爬虫
该模板可以根据您提供的URL地址,抓取该地址中所有JPG格式的图片文件,并转存到OSS中。
- 开通日志服务SLS和对象存储OSS。
- 在ServiceRole中添加AliyunOSSFullAccess和AliyunLogFullAccess权限。具体操作,请参见授予函数计算访问其他云服务的权限。
- 输入参数:
- URL:任意包含JPG格式图片的URL。
- EndPoint:Bucket的EndPoint。
- BucketName:Bucket名称。
- 输出参数:将URL上所有JPG格式的文件上传到OSS指定的Bucket中。
- ok:转存成功。
- error:转存出错。
image-recognition:图像识别
当您通过OSS上传图片时,您可以触发函数计算服务进行图像识别,并且按照识别的结果进行分类存储分析。
- 开通日志服务SLS和对象存储OSS。
- 在ServiceRole中添加AliyunOSSFullAccess和AliyunLogFullAccess权限。具体操作,请参见授予函数计算访问其他云服务的权限。
- 输入参数:
- EndPoint:Bucket的EndPoint。
- BucketName:Bucket的名称。
- 输出参数:将解析识别的结果,归类存储到OSS不同的Bucket中。
- ok:成功。
- error:出错。
flask-web:基于Flask工程部署到函数计算
根据该模板提供的示例代码,您可以通过URL访问函数,实现Flask Web工程的Serverless。
- 输入参数:通过HTTP触发。
- 输出参数:Web HTML页面。
load-large-code-package:加载大代码包
此模版使用initializer接口解决函数计算上传代码包时的大小受限问题。当您的代码包过大或超过函数计算系统上限时,可以预先将一部分代码包上传到OSS中,并在initializer中加载代码包。函数计算保证在处理函数逻辑执行之前,Initializer函数有且仅成功执行一次,从而可以保证在处理请求到达之前,代码已全部加载完成,并不会对处理函数逻辑的功能和性能产生影响。
- 为Initializer函数加载代码配置以下环境变量:
- Bucket:代码包所在的OSS Bucket。
- CodeObject:代码包Object名称。
- Endpoint:OSS代码包所在地域的Endpoint。
- CodePath:从OSS下载解压后存放的目录。
- 在ServiceRole中添加AliyunOSSReadOnlyAccess权限。具体操作,请参见授予函数计算访问其他云服务的权限。
- 输入参数:自定义。
- initializer:初始化函数。
- handler:处理函数。
- 输出参数:自定义。
aliyun-config-python3:审计规则配置
该模板为配置审计产品的自定义规则模板,方便您快速开发企业定制化的合规规则,实现持续的基础设施的合规监管。
api-gateway-nodejs12:API网关返回串大全
该模板是一个API网关的后端实现,您可以通过该函数获取不同的响应内容,包括HTML页面、JSON和图片。
- 输入参数:
{ "queryParameters": { "response": "html|json|image" } }
- 输出参数:HTML页面、JSON或图片。
html, or json, or image
copy-oss-object-python3:备份OSS增量数据
通过该模板的示例代码,您可以把指定某个Bucket下的文件备份到其他资源。
- 输入参数:通过OSS事件触发。
- 输出参数:异步执行。
data-lake-analytics:数据湖实践
该模板通过函数计算调用Serverless化的Data Lake Analytics,进行OSS数据查询分析并将结果回流到RDS for MySQL。函数计算与Data Lake Analytics的结合,能过够轻松实现云上轻量级的数据调度与处理。更多信息,请参见基于DataLakeAnalytics的数据湖实践。
- 输入参数:自定义。
- 输出参数:自定义。
get-object-meta:获取OSS对象属性
您可以上传一个指定前缀或后缀的Object到Bucket,函数计算通过event参数获取地域、Bucket名称和Object名称,然后把获取到的Object的Meta信息写入一个文件,并将该文件上传到指定的Bucket。
- 设置OSS触发器,触发事件为oss: ObjectCreated: PostObject。更多信息,请参见PostObject。
- 在ServiceRole中添加GetObject、PutObject、AliyunOSSFullAccess和AliyunLogFullAccess权限。具体操作,请参见授予函数计算访问其他云服务的权限。
- 输入参数:通过OSS的PostObject接口上传Object然后触发函数执行,函数可以从传入的event参数中获取您上传Object的地域、Bucket名称和Object名称等信息。
- 输出参数:产生一个文件用于记录被上传Object的Meta信息,并上传该文件到OSS指定的Bucket中。
get-oss-md5-python3:获取OSS文件MD5
通过该模板的示例代码,您可以计算出OSS文件的MD5值。通过流式方式读取文件,能够有效提高计算效率。
- 输入参数:
{ "bucket": "my-bucket", "object": "my-object" }
- 输出参数:指定文件的MD5值。
logstore-replication:日志备份
您可以通过该函数订阅日志服务SLS的实时数据,并复制数据到另一个Logstore。更多信息,请参见aliyun-log-fc-functions。
- 开通日志服务SLS。
- 在ServiceRole中添加AliyunLogFullAccess权限。具体操作,请参见授予函数计算访问其他云服务的权限。
- 由于该函数读取数据并批量写到Logstore,因此建议您为函数设置384 MB以上的内存规格。如果Logstore日志流量较大,建议设置120s以上的超时时间。
- 输入参数:当您增加Logstore的shardcursor等信息后,您可以在function event输入指令,用于指示Function开始、停止读取数据的位置,并为函数自定义逻辑提供额外配置(例如执行数据加工、数据写入哪里等)。当Shard有数据写入时,日志服务SLS会定时触发函数执行。
- 输出参数:执行成功的函数会将源Logstore的数据加工后再写入目标Logstore,并返回一个JSON Object序列化的字符串,包含ingestLines(读取日志行数)、ingestBytes(读取日志字节数)、shipLines(输出日志行数)和shipBytes(输出日志字节数)。
如果执行过程中发生异常,例如读写Logstore失败,会终止函数运行。
marketplace-weather-demo:使用云市场服务
您可以通过函数计算使用云市场服务商提供的服务包装。本模板以使用云市场服务商提供的免费天气预报、空气质量、穿衣指数等信息为例介绍该模板函数的使用。
- 输入参数:输入服务商提供的产品AppCode。
- 输出参数:以JSON格式传输返回整体天气预报、空气质量等数据。
oss-download-zip-upload:OSS图片下载压缩
您可以通过该函数从Bucket中下载图片,将图片打包成ZIP格式,并把打包后的ZIP文件上传到指定的Bucket中。
- 输入参数:
- EndPoint:输入Bucket的EndPoint。
- BucketName:输入Bucket名称。
- 输出参数:
ZipFileSize:打包后的文件大小,单位为字节。
oss-get-object-info:获取对象信息
您可以通过该函数获取OSS指定Bucket中Object的详细信息。
- 输入参数:
- EndPoint:Bucket的EndPoint。
- BucketName:Bucket名称。
- 输出参数:
- last_modified:Object的最后更新时间。
- key:Object的名称。
oss-shipper-csv:构建CSV投递OSS
该函数订阅日志服务SLS的实时数据,对于配置的日志字段,按序取出其值构建出一个CSV日志行,最终由一批数据构成目标CSV文件。该CSV文件可以选择直接存入OSS,或者使用Snappy或GZIP为文件做整体压缩后写入OSS。更多信息,请参见oss-shipper-csv函数说明。
- 构建CSV文件需要在内存中暂存本次函数调用所需处理的全部日志数据,请根据日志量为函数设置足够的内存规格。
- 在ServiceRole中添加AliyunOSSFullAccess和AliyunLogFullAccess权限。具体操作,请参见授予函数计算访问其他云服务的权限。
- 输入参数:当您增加Logstore的shardcursor等信息后,您可以在function event输入指令,用于指示Function开始、停止读取数据的位置,并为函数自定义逻辑提供额外配置(例如执行数据加工、数据写入哪里等)。当Shard有数据写入时,日志服务SLS会定时触发函数执行。
- 函数输出:执行成功的函数会将源Logstore数据处理为CSV后,写到OSS。
read-write-tablestore-nodejs12:读写表格存储
当您通过PutRow在表格存储中写入数据时,您可以通过该函数再将该数据通过GetRow读出来。
- 开通表格存储并且预先创建好实例和数据表。更多信息,请参见表格存储概述。
- 在ServiceRole中添加AliyunLogFullAccess和AliyunOTSFullAccess权限。具体操作,请参见授予函数计算访问其他云服务的权限。
- 输出参数:GetRow的结果。
read-write-tablestore-python3:读写表格存储
当您通过PutRow在表格存储中写入数据时,您可以通过该函数再将该数据通过GetRow读出来。
- 开通表格存储并且预先创建好实例和数据表。更多信息,请参见表格存储概述。
- 在ServiceRole中添加AliyunLogFullAccess和AliyunOTSFullAccess权限。具体操作,请参见授予函数计算访问其他云服务的权限。
- 输入参数:自定义。
- 输出参数:GetRow的结果。
return-apigateway-string:API网关返回串
您可以通过该函数获取从API网关传输过来的参数,包括HTML页面、JSON和图片。
- 输入参数:APIPara,在API网关里配置请求参数。
- 输出参数:api_rep,返回API网关标准响应串。