tencent cloud

文档反馈

部署方法

最后更新时间: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 容器镜像,在本地完成特殊依赖包安装和内容抽取后,打包上传至代码运行环境中。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持