函数计算提供了常用的公共层,您无需自定义层即可为您的函数配置层功能。本文介绍如何在函数中配置官方公共层。
函数计算支持的官方公共层
下方列举函数计算支持的几类官方公共层。如果您未找到您需要的层,请联系我们为您添加。
下方仅列举部分常用的官方公共层,关于更多函数计算支持的官方公共层及其说明,请参见公共层。
自定义运行时
包括自定义语言的运行时,例如Python 3.10、Node.js 17等。还包括一些自定义语言运行时的依赖库集合,例如,公共层Python310-Package-Collection
包含Python常用的一些依赖库。
公共层名称 | 兼容的运行时 | 说明 | 使用前必读 |
PHP81-Debian10 | Custom.Debian10 | PHP 8.1 Debian10运行时层 | |
PHP80-Debian10 | Custom.Debian10 | PHP 8.0 Debian10运行时层 | |
Nginx | Custom.Debian10 | Nginx Debian10运行时层 | |
Python310 |
| Python 3.10.5运行时层 | |
Python310-Package-Collection |
| Python 3.10运行时的常用依赖库集合 | |
Python39 |
| Python 3.9.13运行时层 | |
Python39-Package-Collection |
| Python 3.9运行时的常用依赖库集合 | |
Python38 |
| Python 3.8.13运行时层 | |
Python38-Package-Collection |
| Python 3.8.13运行时的常用依赖库集合 | |
Python36 | Custom | Python 3.6.15运行时层 | |
Python36-Package-Collection | Custom | Python 3.6.15的常用依赖库集合 | |
Dotnet6 |
| ASP.NET 6.0.5运行时层 | |
PHP72 | Custom | PHP 7.2运行时层 | |
Java8 | Custom.Debian10 | Java 8运行时层 | |
Java11 |
| Java 11运行时层 | |
Java17 |
| Java 17运行时层 | |
Java21 | Custom.Debian10 | Java 21运行时层 | |
Nodejs20 | Custom.Debian10 | Node.js 20运行时层 | |
Nodejs18 | Custom.Debian10 | Node.js 18运行时层 | |
Nodejs17 | Custom | Node.js 17运行时层 | |
Nodejs16 |
| Node.js 16运行时层 | |
Nodejs14 | Custom | Node.js 14运行时层 | |
Nodejs12 | Custom | Node.js 12运行时层 | |
Go1 | Custom.Debian10 | Go 1运行时层 | |
Go118 | Custom | Go 1.x运行时层 |
常用依赖库
公共层名称 | 兼容的运行时 | 说明 | 版本(只展示核心库的版本号) | 使用前必读 |
Python310-OSS2 |
| 阿里云对象存储OSS提供的Python SDK,名称为OSS2 | - | |
Python39-OSS2 |
| 阿里云对象存储OSS提供的Python SDK,名称为OSS2 | - | |
Python310-TensorFlow2x |
| 一款开源机器学习框架(CPU版) | tensorflow==2.15.0.post1 | |
Python3x-PyMongo4x |
| 一款开源的科学计算库 | PyMongo==4.6.1 | |
Python3x-Pandas2x |
| 一个基于NumPy的开源的数据分析和处理工具 |
| |
Python310-PyTorch2x |
| 一款开源机器学习框架(CPU版) |
| |
Python39-Pandas1x |
| 一个基于NumPy的开源的数据分析和处理工具 |
| |
Python39-SciPy1x |
| 一款开源的科学计算库 |
| |
Python36-SciPy1x |
| 一款开源的科学计算库 |
| |
Python39-PyTorch1x |
| 一款开源机器学习框架(CPU版) |
| |
Python36-PyTorch1x |
| 一款开源机器学习框架(CPU版) |
| |
Python3-Flask2x |
| 一个基于Python编写的轻量级的Web框架 | v2.2.2 | |
Nodejs-Puppeteer17x |
| 一个Headless Chrome工具 | puppeteer-v17.1.0 | |
Nodejs-Puppeteer10x |
| 一个Headless Chrome工具 | puppeteer-v10.2.0 | |
Python310-Opencv4x |
| 一个跨平台的计算机视觉库 | v4.7.0.68 | |
SQLite3 |
| 一种轻量型、进程内的关系型数据库 | 3.41.1 | |
FFmpeg6x |
| 一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序 | 6.0 | |
Nodejs-Puppeteer19x | Custom.Debian10 | 一个Headless Chrome 工具 | puppeteer-v19.8.5 | |
Python38-Playwright | Custom.Debian10 | puppeteer-v19.8.5 | 1.31.1 | |
Poppler22x-Pdf2image | Python 3.10 | 一个用来渲染PDF文档的程序库 | 22.12.0 | |
ServerlessDevs |
| 一个开源开放的Serverless开发者平台,致力于为开发者提供强大的工具链体系 | 2.1.14 |
Web框架
公共层名称 | 兼容的运行时 | 版本(只展示核心库的版本号) | 使用前必读 |
Python3-Flask2x |
| flask-2.2.2 |
阿里云SDK
公共层名称 | 兼容的运行时 | 说明 | 使用前必读 |
Python310-Aliyun-SDK |
| 阿里云常用SDK(Python3.10) | |
Aliyun-DataX |
| 阿里云DataWorks数据集成的开源版本 | |
Python39-Aliyun-SDK |
| 阿里云常用SDK(Python3.9) | |
Python36-Aliyun-SDK |
| 阿里云常用SDK(Python3.6) | |
Nodejs-Aliyun-SDK |
| 阿里云常用SDK(Node.js 20/Node.js 18/Node.js 16/Node.js 14) |
通过控制台配置官方公共层
前提条件
操作步骤
登录函数计算控制台,在左侧导航栏,单击函数。
在顶部菜单栏,选择地域,然后在函数页面,单击目标函数。
在函数详情页面,选择配置页签。
选择左侧层页签,单击编辑,在编辑函数层面板选择 ,然后选择官方公共层和层版本,最后单击部署。
一个函数最多支持配置5个层,包括自定义层和官方公共层。
当函数配置多个层时,这些层的内容将被合并至/opt目录,多个层按照层配置的逆序合并。如果多个层中有同名文件,先配置的层会覆盖后配置的层中的同名文件。
通过Serverless Devs配置官方公共层
前提条件
操作步骤
执行以下命令查找指定地域下的自定义层。
s cli fc layer list --official --region cn-hangzhou
执行成功后,返回官方公共层列表,如下所示。从中获取目标层的ARN并记录。
- layerName: Python39-Aliyun-SDK arn: acs:fc:cn-hangzhou:official:layers/Python39-Aliyun-SDK/versions/3 version: 3 acl: 1 description: Python3.9 Aliyun SDK layer. compatibleRuntime: - custom - python3.9 - custom.debian10 - layerName: Python39-Package-Collection arn: acs:fc:cn-hangzhou:official:layers/Python39-Package-Collection/versions/3 version: 3 acl: 1 description: Python3.9 package collection layer. compatibleRuntime: - custom - custom.debian10
示例解析如下:
layerName:层名称。
version:层版本。
arn:层的ARN。
acl:层的权限。取值0代表私有,取值1代表公有。官方公共层默认为公有,自定义层可以设置为私有或者公有。
description:层的描述信息。
compatibleRuntime:兼容的运行时列表。
在目标目录下创建s.yaml文件,填写获取的层的新ARN。
示例如下:
edition: 3.0.0 name: hello-world-app access: "default" vars: # 全局变量 region: "cn-hangzhou" resources: hello_world: component: fc3 # 组件名称 # actions: # 自定义执行逻辑,关于actions 的使用,可以参考:https://docs.serverless-devs.com/serverless-devs/yaml#%E8%A1%8C%E4%B8%BA%E6%8F%8F%E8%BF%B0actions props: region: ${vars.region} # 关于变量的使用方法,可以参考:https://docs.serverless-devs.com/serverless-devs/yaml#%E5%8F%98%E9%87%8F%E8%B5%8B%E5%80%BC functionName: "emoji" description: 'this is a layer demo' runtime: "python3.9" code: ./code handler: index.handler memorySize: 512 timeout: 60 internetAccess: true layers: # 函数绑定层,取值是层的ARN - acs:fc:cn-hangzhou:official:layers/Python39-Aliyun-SDK/versions/3
在目标目录下创建
code
层级,然后在code
下准备函数代码。在目标目录执行以下命令部署函数并为其配置层。
s deploy
更多信息
您还可以通过API或SDK来管理层和配置层,详情请参见CreateFunction - 创建函数和UpdateFunction - 更新函数。
如果您为函数配置层时,遇到报错“xxx is not supported by layer”,请参见FAQ为函数配置层时报错“xxx is not supported by layer”怎么办?。