函数计算为您提供了多种示例场景的模板代码,您可以在示例代码上进行更改,也可以直接使用模板代码。本文介绍函数模板的使用说明与参数配置。

背景信息

函数计算提供了多种函数模板,您可以在函数计算控制台创建函数页面的使用模板创建页签内,查看模板详细信息。部分模板是需要配置对应触发器后才能使用,例如备份OSS增量数据等。您可以参考以下模板列表,查看相应信息:

alimebot-nodejs:云小蜜机器人

该模板供Dialog Studio的开发者使用,提供了基本的函数结构,您需要按此结构进行代码开发。

  • 输入参数:
    • event:由上游节点传入的参数信息。
    • context:上下文信息,例如对话。
  • 输出参数:result。通过Callback的异步方式读取返回结果。

image-crawler:图片爬虫

该模板可以根据您提供的URL地址,抓取该地址中所有JPG格式的图片文件,并转存到OSS中。

说明 使用该函数前,您需要完成以下操作:
  • 输入参数:
    • URL:任意包含JPG格式图片的URL。
    • EndPoint:Bucket的EndPoint。
    • BucketName:Bucket名称。
  • 输出参数:将URL上所有JPG格式的文件上传到OSS指定的Bucket中。
    • ok:转存成功。
    • error:转存出错。

image-recognition:图像识别

当您通过OSS上传图片时,您可以触发函数计算服务进行图像识别,并且按照识别的结果进行分类存储分析。

说明 使用该函数前,您需要完成以下操作:
  • 输入参数:
    • 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下的文件备份到其他资源。

说明 在ServiceRole中添加AliyunOSSReadOnlyAccess权限。具体操作,请参见授予函数计算访问其他云服务的权限
  • 输入参数:通过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的PostObject接口上传Object然后触发函数执行,函数可以从传入的event参数中获取您上传Object的地域、Bucket名称和Object名称等信息。
  • 输出参数:产生一个文件用于记录被上传Object的Meta信息,并上传该文件到OSS指定的Bucket中。

get-oss-md5-python3:获取OSS文件MD5

通过该模板的示例代码,您可以计算出OSS文件的MD5值。通过流式方式读取文件,能够有效提高计算效率。

说明 在ServiceRole中添加AliyunOSSReadOnlyAccess权限。具体操作,请参见授予函数计算访问其他云服务的权限
  • 输入参数:
    {
      "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。
  • 输入参数:输入服务商提供的产品AppCode。
  • 输出参数:以JSON格式传输返回整体天气预报、空气质量等数据。

oss-download-zip-upload:OSS图片下载压缩

您可以通过该函数从Bucket中下载图片,将图片打包成ZIP格式,并把打包后的ZIP文件上传到指定的Bucket中。

说明 在ServiceRole中添加AliyunOSSFullAccess和AliyunLogFullAccess权限。具体操作,请参见授予函数计算访问其他云服务的权限
  • 输入参数:
    • EndPoint:输入Bucket的EndPoint。
    • BucketName:输入Bucket名称。
  • 输出参数:

    ZipFileSize:打包后的文件大小,单位为字节。

oss-get-object-info:获取对象信息

您可以通过该函数获取OSS指定Bucket中Object的详细信息。

说明 在ServiceRole中添加AliyunOSSReadOnlyAccess和AliyunLogFullAccess权限。具体操作,请参见授予函数计算访问其他云服务的权限
  • 输入参数:
    • 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读出来。

说明 使用该函数前,您需要完成以下操作:
  • 输入参数:自定义。
  • 输出参数:GetRow的结果。

read-write-tablestore-python3:读写表格存储

当您通过PutRow在表格存储中写入数据时,您可以通过该函数再将该数据通过GetRow读出来。

说明 使用该函数前,您需要完成以下操作:
  • 输入参数:自定义。
  • 输出参数:GetRow的结果。

return-apigateway-string:API网关返回串

您可以通过该函数获取从API网关传输过来的参数,包括HTML页面、JSON和图片。

  • 输入参数:APIPara,在API网关里配置请求参数。
  • 输出参数:api_rep,返回API网关标准响应串。