tencent cloud

云函数

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
相关概念
工作原理
产品优势
应用场景
相关产品
购买指南
计费概述
计费方式
计费项与计费方式
函数算力支持
免费额度
产品定价
计费示例
欠费与停服说明
快速入门
使用控制台创建一个事件函数
操作指南
配额管理
函数管理
Web 函数管理
日志管理
并发管理
触发器管理
函数 URL
自定义域名
版本管理
别名管理
权限管理
运行实例管理
插件管理
监控与告警管理
网络配置
层管理
执行配置
扩展存储管理
DNS 缓存配置
资源托管模式管理
近离线资源托管模式
工作流
触发器
触发器概述
触发器事件消息结构汇总
API 网关触发器
COS 触发器
CLS 触发器
定时触发器
CKafka 触发器
Apache Kafka 触发器
MQTT 触发器
触发器配置描述
MPS 触发器
CLB 触发器说明
云 API 触发器
开发指南
基本概念
测试云函数
环境变量
依赖安装
使用容器镜像
使用 Docker 安装依赖
错误类型与重试策略
死信队列
云函数接入数据库
自动化部署
云函数状态码
常见错误码解决方法
开发者工具
Serverless Web IDE
函数间调用 SDK
第三方工具
代码开发
Python
Node.js
Golang
PHP
Java
Custom Runtime
使用镜像部署函数
Web 框架部署
通过命令行完成框架部署
快速部署 Egg 框架
快速部署 Express 框架
快速部署 Flask 框架
快速部署 Koa 框架
快速部署 Laravel 框架
快速部署 Nestjs 框架
快速部署 Nextjs 框架
快速部署 Nuxtjs 框架
快速部署 Django 框架
实践教程
最佳实践概述
云产品联合解决方案
业务开发相关实践
实时音视频 TRTC
对象存储 COS
消息队列 CKafka
日志服务CLS
负载均衡 CLB
视频处理 MPS
内容分发网络 CDN
云数据仓库 PostgreSQL
云点播 VOD
短信 SMS
Elasticsearch Service
定时任务
视频处理
客户案例
腾讯在线教育
在线教育行业案例
游戏聊天系统
腾讯互娱国际(IEGG)
API 文档
History
Introduction
API Category
Making API Requests
Other APIs
Namespace APIs
Layer Management APIs
Async Event Management APIs
Trigger APIs
Function APIs
函数和层的状态说明
Data Types
Error Codes
SDK文档
常见问题
通用问题
Web 函数相关问题
计费相关问题
网络相关问题
日志相关问题
SCF 工具相关问题
事件处理相关问题
API 网关触发器相关问题
相关协议
Service Level Agreement
联系我们
词汇表

部署方法

PDF
聚焦模式
字号
最后更新时间: 2024-04-22 18:03:28

部署方法

腾讯云云函数提供以下几种方式部署函数,您可以按需选择使用。创建、更新函数操作详情可参见 创建及更新函数
通过 zip 打包上传部署,详情可参见 依赖安装和部署
通过控制台编辑和部署,详情可参见 通过控制台部署函数
使用命令行部署,详情可参见 通过 Serverless Framework CLI 命令行部署函数

依赖安装和部署

当前的函数标准 Python Runtime 中仅提供了 /tmp 目录可写,其他目录只读,因此在用到依赖库时,需要使用本地安装、打包、上传的方式。Python 依赖包通常可以与函数代码一同上传,或上传至层中,然后绑定使用。

本地安装依赖包

依赖管理工具

Python 可以通过 pip 包管理器进行依赖管理。由于环境配置不同,可自行将 pip 替换为 pip3pip2

使用方法

1. requirements.txt 中配置依赖信息。
2. 通过在代码目录下执行 pip install -r requirements.txt -t . 命令安装依赖包。通过使用 -t 参数,可以指定依赖包的安装目录,在项目代码目录下执行时,可以使用 -t . 安装在当前目录下。
注意:
您可以使用 pip freeze > requirements.txt 生成当前环境下所有依赖的 requirements.txt 文件。
函数运行的系统是 CentOS 7,您需要在相同环境下进行安装。若环境不一致,则可能导致上传后运行时出现找不到依赖的错误。您可参考 云函数容器镜像 进行依赖安装。
若部分依赖涉及动态链接库,则需手动复制相关依赖包到依赖安装目录后再打包上传。详情请参阅 使用 Docker 安装依赖

示例

1. 在本地安装 requests 依赖,其中代码文件 index.py 如下所示:
# -*- coding: utf8 -*-
import requests

def main_handler(event, context):
addr = "www.qq.com"
resp = requests.get(addr)
print(resp)
return resp
2. 使用 pip3 install requests -t . 在项目当前目录安装 requests 依赖。代码文件如下所示:
$ pip3 install requests -t .
Collecting requests
Using cached requests-2.25.1-py2.py3-none-any.whl (61 kB)
Collecting certifi>=2017.4.17
Using cached certifi-2020.12.5-py2.py3-none-any.whl (147 kB)
Collecting chardet<5,>=3.0.2
Using cached chardet-4.0.0-py2.py3-none-any.whl (178 kB)
Collecting idna<3,>=2.5
Using cached idna-2.10-py2.py3-none-any.whl (58 kB)
Collecting urllib3<1.27,>=1.21.1
Using cached urllib3-1.26.4-py2.py3-none-any.whl (153 kB)
Installing collected packages: urllib3, idna, chardet, certifi, requests
Successfully installed certifi-2020.12.5 chardet-4.0.0 idna-2.10 requests-2.25.1 urllib3-1.26.4

$ ls -l
total 8
drwxr-xr-x 3 xxx 111 96 4 29 16:45 bin
drwxr-xr-x 7 xxx 111 224 4 29 16:45 certifi
drwxr-xr-x 8 xxx 111 256 4 29 16:45 certifi-2020.12.5.dist-info
drwxr-xr-x 44 xxx 111 1408 4 29 16:45 chardet
drwxr-xr-x 9 xxx 111 288 4 29 16:45 chardet-4.0.0.dist-info
drwxr-xr-x 11 xxx 111 352 4 29 16:45 idna
drwxr-xr-x 8 xxx 111 256 4 29 16:45 idna-2.10.dist-info
-rw-r--r--@ 1 xxx 111 177 4 29 16:33 index.py
drwxr-xr-x 21 xxx 111 672 4 29 16:45 requests
drwxr-xr-x 9 xxx 111 288 4 29 16:45 requests-2.25.1.dist-info
drwxr-xr-x 17 xxx 111 544 4 29 16:45 urllib3
drwxr-xr-x 10 xxx 111 320 4 29 16:45 urllib3-1.26.4.dist-info

打包上传

依赖可以和项目一同上传,并在函数代码中通过 import 方式引入和使用。同时,依赖也可以打包部署为层,并通过在函数创建部署时,与函数绑定,提供复用能力。
您可以通过控制台选择本地文件夹的方式自动化打包,也可以通过手工打包的方式形成可以用于部署函数或层的 zip 包。在打包部署时,需要注意的是均在项目目录下进行打包操作,即确保代码、依赖均在 zip 文件内的根目录中。详情可参见 打包要求

特殊依赖包

部分 Python 的依赖包,在安装时需要进行相关的编译操作,例如 pycryptodome 依赖。由于编译程序会根据不同 OS 进行操作系统相关的编译操作,在 Windows、Mac 等环境下编译生成的依赖库及动态库等程序,可能无法在云函数的环境中运行。您可通过以下方案尝试解决:
寻找针对 FaaS 的开源实现,使用开源实现已经准备好的依赖库。
SCF 公共 Layer 项目中寻找依赖或提交需求,本项目用于常用特殊依赖包的整理和存储,并以 Layer 形式提供部署支持。
通过使用容器方案及 SCF 容器镜像,在本地完成特殊依赖包安装和内容抽取后,打包上传至代码运行环境中。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈