首页 > 编程语言 >创建阿里云函数计算中的层(python运行时)

创建阿里云函数计算中的层(python运行时)

时间:2024-10-16 12:21:30浏览次数:5  
标签:依赖 函数 ZIP python 层中 阿里 目录

来源:使用层功能管理依赖减少代码包体积并实现代码复用_函数计算(FC)-阿里云帮助中心 (aliyun.com)

层可以为您提供公共依赖库、运行时环境及函数扩展等发布与部署能力。您可以将函数依赖的公共库提炼到层或者使用函数计算官方公共层,以减少部署或更新函数时的代码包体积。

功能原理

  • 构建层时,需要将所有内容打包到ZIP文件中。函数计算运行时会将层的内容解压并部署在/opt目录下。

  • 当函数配置多个层时,这些层的内容将被合并至/opt目录,多个层按照层配置的逆序合并。如果某一文件与其他层中的文件同名,则先配置层中的该文件会覆盖后配置层中的该同名文件。

    例如,为某函数配置了第1层和第2层,函数实例启动时,会先加载第2层,后加载第1层,并将其解压至/opt目录。在/opt目录中,第1层的内容在前,第2层的内容在后,如果第1层和第2层中存在同名文件,那么第1层中的该文件会覆盖第2层中的该文件内容。

  • 如果层中的代码依赖二进制的库或可执行文件,则需要使用Linux系统编译构建层,推荐使用Debian 9。

  • 函数计算运行时基于x86_64架构,如果层中的依赖库对指令集有依赖,则需要使用x86_64架构的机器,或者通过交叉编译的方式确保依赖库与函数计算运行时兼容。

各运行时使用层说明

如果运行时支持层功能,函数计算会将特定的目录添加到运行时语言的依赖包搜索路径中,如下表所示。建议您在层ZIP包中定义与下方列举的特定目录相同的文件夹结构,使得函数代码无需指定路径即可访问层。具体构建层的ZIP包的方法,请参见构建层的ZIP包。如您想自定义层的目录结构,需要在代码中显式添加依赖库搜索地址。具体操作,请参见如何在Custom Runtime中引用层中的依赖

各运行时支持添加的特定目录

运行时 特定目录

python   /opt/python

其它运行时请点击文章顶部的来源查看原文

Python运行时的层ZIP包文件结构

使用requests依赖打包后的文件结构
my-layer-code.zip
└── python
    └── requests

ZIP包解压部署后的路径
/
└── opt
    └── python
        └── requests
 

构建层的ZIP包

创建层时,需要将所有内容打包到ZIP文件中。函数计算运行时会将层的内容解压并部署在/opt目录下。

构建层的ZIP包的方式和构建代码包的方式类似,为使函数在运行时能正确加载使用层发布的库,库的代码目录结构需遵从各个语言标准的目录规范,具体信息,请参见各运行时使用层说明。对于部署于层的函数依赖库,如果按照规范的方式打包,函数计算运行时会为您自动添加各语言的依赖库搜索路径,您无需指定全路径。如您想自定义层的目录结构,需要在代码中显式添加依赖库搜索地址。具体操作,请参见如何在Custom Runtime中引用层中的依赖

各运行时构建层ZIP包的操作步骤如下所示:

说明

 

在本地构建层时,使用的编程语言版本需要和在函数计算选择的运行时的编程语言版本保持一致。

下面创建的工作目录my-layer-code仅为示例,您在实际操作过程中可以按需替换目录名称。

1、执行以下命令创建工作目录。

mkdir my-layer-code

2、进入已创建的工作目录。 

cd my-layer-code

3、执行以下命令安装依赖库到my-layer-code/python。 

pip install --target ./python ${PackageName}
${PackageName}是您要安装的依赖包的名称,pip install命令的详细使用方法,请参见pip install

代码示例如下: 

pip install --target ./python numpy

 

安装完成后,目录结构如下: 

my-layer-code
└── python
    ├── bin
    ├── numpy
    ├── numpy-1.22.4.dist-info
    └── numpy.libs

4、在my-layer-code目录,执行以下命令打包依赖。

zip -r my-layer-code.zip python

在函数计算添加层

  1. 登录函数计算控制台,在左侧导航栏,选择高级功能 > 层管理。

  2. 在顶部菜单栏,选择地域,然后在层管理页面,单击创建层。

  3. 在创建层页面,设置相关参数,然后单击创建。

  4. 上传刚刚创建的zip文件并选择版本

标签:依赖,函数,ZIP,python,层中,阿里,目录
From: https://www.cnblogs.com/ubirdy/p/18469632

相关文章

  • (开题)flask框架汽车维修服务系统(程序+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着汽车保有量的持续增长,汽车维修服务行业迎来了前所未有的发展机遇。然而,传统的汽车维修服务模式存在管理效率低下、信息不透明、配件采......
  • (开题)flask框架人文学子考研交流平台(程序+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于人文学子考研交流平台的研究,现有研究主要以考研整体情况或特定学科考研情况为主,专门针对人文学子这一特定群体的考研交流平台的研......
  • 【计算机毕业设计选题推荐】 基于Python的人事管理系统的设计与实现 【附源码+数据库+
    ✍✍计算机毕设编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、小程序、大数据实战项目集⚡⚡文末获取......
  • 【计算机毕设选题推荐】基于Python的考研学习系统的设计与实现 【附源码+部署+讲解】
    ✍✍计算机毕设编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、小程序、大数据实战项目集⚡⚡文末获取......
  • 【25届计算机毕设选题推荐】 基于Python的热门微博数据可视化分析的设计与实现 【附源
    ✍✍计算机毕设编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、小程序、大数据实战项目集⚡⚡文末获取......
  • 区分:派生类指定基类构造函数、继承构造、委托构造
    普通的和委托的区别是:同一个类,多个类之间【派生类-基类】普通的和继承构造的区别:是否要手动指明//1.派生类显示调用基类构造函数初始化classA{public:A(intx,inty){std::cout<<"A(x,y)called"<<std::endl;}};classB:publicA{publ......
  • python+eel+ws实现消息推送
    ws服务器是单独的,专门用来推送消息。js用来连接ws,发消息。eel程序用户处理消息ws服务器importwebsocketsimportasyncio#存储所有WebSocket连接的集合connected_clients=set()asyncdefwebsocket_handler(websocket,path):#将新的连接添加到集合中connec......
  • 已实现,python解密QRC歌词,加密歌词,解密
    一、LRC歌词格式LRC格式是一种常见的歌词文件格式,通常用于音乐播放器同步显示歌曲的歌词。LRC文件与音频文件配合使用,能够根据时间戳实时显示歌词,给用户带来更好的听歌体验。LRC格式的特点:时间戳:LRC歌词的核心是每行歌词前面的时间戳。时间戳的格式通常为#说明[mm:ss......
  • [Python手撕]二叉搜索树中的众数
    给你一个含重复值的二叉搜索树(BST)的根节点root,找出并返回BST中的所有众数(即,出现频率最高的元素)。如果树中有不止一个众数,可以按任意顺序返回。假定BST满足如下定义:结点左子树中所含节点的值小于等于当前节点的值结点右子树中所含节点的值大于等于当前节点的值左......
  • python+eel入门示例
    安装eelpipinstalleelpyimporteelimportrandom#笑话列表jokes=["为什么电脑经常生病?因为窗户(Windows)总是开着!","为什么数学书看起来总是很悲伤?因为它里面有太多的问题(problems)","为什么海洋里没有电脑?因为它们总是遇到短路(seals)","为什么冰......