最佳实践

有奖征文|投稿上云技术实践,赢取价值5000元大奖> HOT

内置依赖

云函数 SCF 各个运行时已内置部分常用依赖库,您可前往各运行时代码开发中查询:

安装依赖库

您可以将 SCF 代码所有的依赖库保存在代码包中,并上传至云端以供 SCF 使用。SCF 已支持的运行时及使用方法如下:

Node.js 运行时

Node.js 运行时支持以下三种依赖库安装方法:

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

注意

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


本文以安装 lodash 库为例:

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

cd test-package
npm install lodash

  1. 在该目录下创建函数入口文件 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
};

  1. 将函数代码及依赖库一同压缩为 zip 包,在 Serverless 控制台 中上传打包的 zip 包并创建一个新函数。操作步骤如下:
    1. 登录 Serverless 控制台,单击左侧导航栏的函数服务
    2. 在主界面上方选择期望创建函数的地域,并单击新建,进入函数创建流程。
    3. 在“新建函数”页面,填写函数基本信息。如下图所示:
      • 创建方式:选择使用自定义创建来新建函数。
      • 运行环境:选择Node.js12.16
      • 提交方法:选择本地上传zip包
    4. 单击完成即可创建函数。

Python 运行时

Python 运行时支持以下两种依赖库安装方法:

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

注意
  • 打包时函数入口文件需要在 zip 包的根目录下。如果打包整个文件夹并上传 zip 包,则会因解压后无法在根目录找到入口文件而导致函数创建失败。
  • 由于运行环境差异,请确认安装的依赖版本适配函数的运行环境。
  • 函数运行系统为 CentOS 7,您需要在相同环境下进行安装。若环境不一致,则可能导致上传后运行时出现无法找到依赖的错误。
  • 若部分依赖涉及动态链接库,例如 Python 3.6 安装 pandas,需手动复制相关依赖包到依赖安装目录后再打包上传。详情请参见 使用 Docker 安装依赖 或使用在线 IDE 进行安装。

本文以安装 numpy 库为例:

  1. 在本地终端中执行 mkdir test-package 命令,创建一个目录用于存放函数代码和依赖库。
  2. 执行以下命令,在该目录下安装 numpy 依赖库。
    cd test-package
    pip install numpy -t . # 请关注所用 pip 版本是否适配函数运行环境
  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 包,在 Serverless 控制台 中上传打包的 zip 包并创建一个新函数。操作步骤如下:
    1. 登录 Serverless 控制台,单击左侧导航栏的函数服务
    2. 在主界面上方选择期望创建函数的地域,并单击新建,进入函数创建流程。
    3. 在“新建函数”页面,填写函数基本信息。如下图所示:
      • 创建方式:选择使用自定义创建来新建函数。
      • 运行环境:选择Python 3.6
      • 提交方法:选择本地上传zip包
    4. 单击完成即可创建函数。

PHP 运行时

注意:

SCF 支持的 PHP 版本为 PHP 8.0、PHP 7.4、PHP 7.2 和 PHP 5.6,PHP 不同的小版本号存在不兼容的可能,请核对版本号后进行依赖安装。

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

注意

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


本文以 PHP7.2 安装 requests 库为例:

  1. 在本地终端中执行 mkdir test-package 命令,创建一个目录用于存放函数代码和依赖库。

  2. test-package下创建Composer.json并指定需要安装的依赖库及版本。

    {
    "require": {
     "requests": ">=1.0"
        }
    }

  3. 执行以下命令,在该目录下安装 requests 依赖库。

    cd test-package
    composer install

  4. 在该目录下创建函数入口文件 index.php 并在代码中引用 requests 库。

    <?php
    require 'vendor/autoload.php';
    function main_handler($event, $context) {
        return "hello world";
    }
    ?> 

  5. 将函数代码及依赖库一同压缩为 zip 包,在 Serverless 控制台 中上传打包的 zip 包并创建一个新函数。操作步骤如下:

    1. 登录 Serverless 控制台,单击左侧导航栏的函数服务
    2. 在主界面上方选择期望创建函数的地域,并单击新建,进入函数创建流程。
    3. 在“新建函数”页面,填写函数基本信息。如下图所示:
      • 创建方式:选择使用自定义创建来新建函数。
      • 运行环境:选择Php7.2
      • 提交方法:选择本地上传zip包
    4. 单击完成即可创建函数。

Java 运行时

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

  1. 在本地终端中执行 mkdir test-package 命令,创建一个目录用于存放函数代码和依赖库。
  2. 在该目录下创建 pom.xml,并在 pom.xml 中配置依赖信息。
  3. 在项目文件夹根目录下执行 mvn package 命令,编译输出如下:
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] Building java-example 1.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO]
    ...
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 1.785 s
    [INFO] Finished at: 2017-08-25T10:53:54+08:00
    [INFO] Final Memory: 17M/214M
    [INFO] ------------------------------------------------------------------------
  4. 将函数代码及依赖库一同压缩为 jar 包,在 Serverless 控制台 中上传打包的 jar 包并创建一个新函数。操作步骤如下:
    1. 登录 Serverless 控制台,单击左侧导航栏的函数服务
    2. 在主界面上方选择期望创建函数的地域,并单击新建,进入函数创建流程。
    3. 在“新建函数”页面,填写函数基本信息。如下图所示:
      • 创建方式:选择使用自定义创建来新建函数。
      • 运行环境:选择Java8
      • 提交方法:选择本地上传zip包
    4. 单击完成即可创建函数。

Go 运行时

使用方法:打包时上传最终的二进制文件。

Go 运行时的依赖库同代码一起编译后得到二进制文件,在 Serverless 控制台 中上传打包的二进制文件并创建一个新函数。操作步骤如下:

  1. 登录 Serverless 控制台,单击左侧导航栏的函数服务
  2. 在主界面上方选择期望创建函数的地域,并单击新建,进入函数创建流程。
  3. 在“新建函数”页面,填写函数基本信息。如下图所示:
    • 创建方式:选择使用从头开始来新建函数。
    • 运行环境:选择Go1
    • 提交方法:选择本地上传zip包
  4. 单击完成即可创建函数。
目录