关于腾讯云:一文读懂云函数-SCF-如何进行依赖安装

40次阅读

共计 3135 个字符,预计需要花费 8 分钟才能阅读完成。

云函数 SCF 各个运行时已内置局部罕用依赖库,您可返回各运行时代码开发中查问:Node.js、Python、PHP。但仅有内置依赖库是不足以满足用户的代码运行诉求的,在此基础上,SCF 提供了丰盛的依赖装置形式。咱们将分为高低两篇进行解说,本文将介绍对 Node.js 和 Python 运行时的依赖装置办法,下篇将为大家介绍 PHP、Java、Go 的依赖装置办法。

01. Node.js 运行时

Node.js 运行时反对以下三种依赖库装置办法:

1. 依赖库同代码一起打包上传

通过依赖管理工具,例如 npm,在本地装置依赖后同函数代码一起打包上传。

  • 打包时函数入口文件须要在 zip 包的根目录下。如果打包整个文件夹并上传 zip 包,则会因解压后无奈在根目录找到入口文件而导致函数创立失败。

本文以装置 lodash 库为例:

  1. 在本地终端中执行 mkdir test-package 命令,创立一个目录用于寄存函数代码和依赖库。
  2. 执行以下命令,在该目录下装置 lodash 依赖库。

    cd test-package
    npm install lodash
  3. 在该目录下创立函数入口文件 index.js 并在代码中援用 lodash 库。

    'use strict';
    const _ = require('lodash');
    exports.main_handler = async (event, context) => {console.log("Hello World")
         console.log(event)
         console.log(event["non-exist"])
         console.log(context)
         return event
    };
  4. 将函数代码及依赖库一起压缩为 zip 包,在 云函数控制台 中上传打包的 zip 包并创立一个新函数。操作步骤如下:

    i. 登录 云函数控制台,单击左侧导航栏的【函数服务】。

    ii. 在主界面上方抉择冀望创立函数的地区,并单击【新建】,进入函数创立流程。

    iii. 在“新建函数”页面,填写函数根本信息。如下图所示:

    • 创立形式:抉择应用【自定义创立】来新建函数。
    • 运行环境:抉择【Node.js12.16】。
    • 提交办法:抉择【本地上传 zip 包】。
  5. 单击【实现】即可创立函数。

2. 在线依赖装置
Node.js 运行时提供了在线依赖装置性能,启用了「在线装置依赖」后,在每次上传代码之后,云函数后盾将查看代码包根目录的 package.json 文件,并依据 package.json 中的依赖,尝试应用 npm 工具装置依赖包。

以装置 lodash 库为例:

  1. 登录 云函数控制台,单击左侧导航栏的【函数服务】。
  2. 抉择左侧导航栏【函数服务】,在“函数服务”列表页面抉择须要在线装置依赖的函数或单击【新建】创立一个函数。
  3. 抉择【函数代码】页签,依据您的理论需要批改函数代码并增加 package.json文件。package.json 内容以下文为例:

    {
        "dependencies": {"lodash": "4.17.15"}
    }
  4. 在 IDE 代码编辑窗口右上角中单击【】,在下拉列表中抉择【主动装置依赖: 敞开】以开启主动装置依赖,如下图所示:
  5. 单击【部署】,云函数后盾会依据 package.json 主动装置依赖。

    ? 在线依赖装置性能目前仅反对 Node.js 运行时,其余运行时敬请期待。

3. 应用 Serverless Web IDE

云函数在线编辑器 Serverless Web IDE 提供了终端性能,并在终端中内置了包管理工具 npm。本文以在终端中装置 lodash 库为例:

  1. 登录 云函数控制台,在左侧抉择【函数服务】。
  2. 在函数列表中,单击函数名,进入该函数的详情页面。
  3. 在“函数治理”页面中,抉择【函数代码】>【代码编辑】,查看并编辑函数。
  4. 在 IDE 顶部的菜单栏【终端】中抉择【新终端】,关上终端窗口。
  5. 在终端中执行如下命令,装置依赖库 lodash

    cd src  # 依赖库须要装置在与函数入口文件同一级的目录下,即须要进入 `src` 目录后再执行依赖安装操作。npm install lodash
  6. 装置实现后,在 IDE 左侧的文件树中查看 package.jsonnode_modules
  7. 单击【部署】后依赖库即可与函数代码一起打包上传到云端。如下图所示:

02. Python 运行时

Python 运行时反对以下两种依赖库装置办法:

1. 依赖库同代码一起打包上传
通过依赖管理工具,例如 pip,在本地装置依赖后同函数代码一起打包上传。

  • 打包时函数入口文件须要在 zip 包的根目录下。如果打包整个文件夹并上传 zip 包,则会因解压后无奈在根目录找到入口文件而导致函数创立失败。
  • 因为运行环境不同,可自行将 pip 替换为 pip3pip2
  • 函数运行零碎为 CentOS 7,您须要在雷同环境下进行装置。若环境不统一,则可能导致上传后运行时呈现无奈找到依赖的谬误。您可参考 云函数容器镜像 进行依赖装置或应用在线 IDE 进行装置。
  • 若局部依赖波及动态链接库,则需手动复制相干依赖包到依赖装置目录后再打包上传。详情请参见 应用 Docker 装置依赖 或应用在线 IDE 进行装置。

本文以装置 numpy 库为例:

  1. 在本地终端中执行 mkdir test-package 命令,创立一个目录用于寄存函数代码和依赖库。
  2. 执行以下命令,在该目录下装置 numpy 依赖库。

    cd test-package
    pip install numpy -t .
  3. 在该目录下创立函数入口文件 index.py 并在代码中援用 numpy 库。

    # -*- coding: utf8 -*-
    import json
    import numpy
    def main_handler(event, context):
         print("Received event:" + json.dumps(event, indent = 2)) 
         print("Received context:" + str(context))
         print("Hello world")
         return("Hello World")
  4. 将函数代码及依赖库一起压缩为 zip 包,在 云函数控制台 中上传打包的 zip 包并创立一个新函数。操作步骤如下:

    i. 登录 云函数控制台,单击左侧导航栏的【函数服务】。

    ii. 在主界面上方抉择冀望创立函数的地区,并单击【新建】,进入函数创立流程。

    iii. 在“新建函数”页面,填写函数根本信息。如下图所示:

    • 创立形式:抉择应用【自定义创立】来新建函数。
    • 运行环境:抉择【Python 3.6】。
    • 提交办法:抉择【本地上传 zip 包】。
  5. 单击【实现】即可创立函数。

2. 应用 Serverless Web IDE
云函数在线编辑器 Serverless Web IDE 提供了终端性能,并在终端中内置了包管理工具 pip。本文以在终端中装置 numpy 库为例:

  1. 登录 云函数控制台,在左侧抉择【函数服务】。
  2. 在函数列表中,单击函数名,进入该函数的详情页面。
  3. 在“函数治理”页面中,抉择【函数代码】>【代码编辑】,查看并编辑函数。
  4. 在 IDE 顶部的菜单栏【终端】中抉择【新终端】,关上终端窗口。
  5. 在终端中执行如下命令,装置依赖库 numpy

    cd src  # 依赖库须要装置在与函数入口文件同一级的目录下,即须要进入 `src` 目录后再执行依赖安装操作。pip3 install numpy -t .
  6. 装置实现后,在 IDE 左侧的文件树中查看已装置的依赖库。
  7. 单击【部署】后依赖库即可与函数代码一起打包上传到云端。
  • 您能够应用 pip freeze > requirements.txt 生成本地环境下所有依赖的 requirements.txt 文件。
  • 在 IDE 的终端中执行 pip3 install -r requirements.txt -t . 即可依据 requirements.txt 的配置装置依赖包。

One More Thing

立刻体验腾讯云 Serverless Demo,支付 Serverless 新用户礼包 👉 腾讯云 Serverless 老手体验。

正文完
 0