前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文读懂云函数 SCF 如何进行依赖安装

一文读懂云函数 SCF 如何进行依赖安装

作者头像
腾讯云serverless团队
发布2021-07-20 19:10:50
6260
发布2021-07-20 19:10:50
举报

云函数 SCF 各个运行时已内置部分常用依赖库,您可前往各运行时代码开发中查询:Node.js、Python 、PHP。但仅有内置依赖库是不足以满足用户的代码运行诉求的,在此基础上,云函数 SCF 提供了丰富的依赖安装方式。我们将分为上下两篇进行讲解,本文将介绍对 Node.js 和 Python 运行时的依赖安装方法,下篇将为大家介绍 PHP、Java、Go 的依赖安装方法。

  • Node.js 说明:https://cloud.tencent.com/document/product/583/11060
  • Python 说明:https://cloud.tencent.com/document/product/583/55592
  • PHP 说明:https://cloud.tencent.com/document/product/583/17531

01.

Node.js 运行时

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

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

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

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

本文以安装 lodash 库为例:

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

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

代码语言:javascript
复制
cd test-packagenpm install lodash

3. 在该目录下创建函数入口文件 index.js 并在代码中引用 lodash 库。

代码语言:javascript
复制
'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. 登录云函数控制台,单击左侧导航栏的「函数服务」。

  • 云函数控制台:https://console.cloud.tencent.com/scf

ii. 在主界面上方选择期望创建函数的地域,并单击「新建」,进入函数创建流程。

iii. 在「新建函数」页面,填写函数基本信息。如下图所示:

  • 创建方式:选择使用「自定义创建」来新建函数。
  • 运行环境:选择「Node.js12.16」。
  • 提交方法:选择「本地上传zip包」。

2. 在线依赖安装 

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

以安装 lodash 库为例:

1. 登录 云函数控制台,单击左侧导航栏的「函数服务」。

2. 选择左侧导航栏「函数服务」,在“函数服务”列表页面选择需要在线安装依赖的函数或单击「新建」创建一个函数。

3. 选择「函数代码」页签,根据您的实际需求修改函数代码并添加 package.json文件。package.json 内容以下文为例:

代码语言:javascript
复制
{    "dependencies": {    "lodash": "4.17.15"  }}

4. 在 IDE 代码编辑窗口右上角中单击 ? ,在下拉列表中选择「自动安装依赖:关闭」以开启自动安装依赖,如下图所示:

5. 单击「部署」,云函数后台会根据 package.json 自动安装依赖。

在线依赖安装功能目前仅支持Node.js运行时,其他运行时敬请期待。

3. 使用 Serverless Web IDE

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

1. 登录 云函数控制台,在左侧选择「函数服务」。

  • 云函数控制台:https://console.cloud.tencent.com/scf

2. 在函数列表中,单击函数名,进入该函数的详情页面。

3. 在“函数管理”页面中,选择「函数代码」>「代码编辑」,查看并编辑函数。

4. 在 IDE 顶部的菜单栏「终端」中选择「新终端」,打开终端窗口。

5. 在终端中执行如下命令,安装依赖库 lodash

代码语言:javascript
复制
cd src  # 依赖库需要安装在与函数入口文件同一级的目录下,即需要进入`src`目录后再执行依赖安装操作。npm install lodash

6. 安装完成后,在 IDE 左侧的文件树中查看 package.json 和 node_modules

7. 单击「部署」后依赖库即可与函数代码一同打包上传到云端。如下图所示:

02. 

Python 运行时

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

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

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

  • 打包时函数入口文件需要在 zip 包的根目录下。如果打包整个文件夹并上传 zip 包,则会因解压后无法在根目录找到入口文件而导致函数创建失败。
  • 由于运行环境不同,可自行将 pip 替换为 pip3 或 pip2
  • 函数运行系统为 CentOS 7,您需要在相同环境下进行安装。若环境不一致,则可能导致上传后运行时出现无法找到依赖的错误。您可参考 云函数容器镜像 进行依赖安装或使用在线 IDE 进行安装。
  • 若部分依赖涉及动态链接库,则需手动复制相关依赖包到依赖安装目录后再打包上传。详情请参见 使用 Docker 安装依赖 或使用在线 IDE 进行安装。

本文以安装 numpy 库为例:

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

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

代码语言:javascript
复制
cd test-packagepip install numpy -t .

3. 在该目录下创建函数入口文件 index.py 并在代码中引用 numpy 库。

代码语言:javascript
复制
# -*- coding: utf8 -*-import jsonimport numpydef 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. 登录云函数控制台,单击左侧导航栏的「函数服务」。

  • 云函数控制台:https://console.cloud.tencent.com/scf

ii. 在主界面上方选择期望创建函数的地域,并单击「新建」,进入函数创建流程。

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

  • 创建方式:选择使用「自定义创建」来新建函数。
  • 运行环境:选择「Python 3.6」。
  • 提交方法:选择「本地上传zip包」。

2. 使用 Serverless Web IDE

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

1. 登录 云函数控制台,在左侧选择「函数服务」。

  • 云函数控制台:https://console.cloud.tencent.com/scf

2. 在函数列表中,单击函数名,进入该函数的详情页面。

3. 在“函数管理”页面中,选择「函数代码」>「代码编辑」,查看并编辑函数。

4. 在 IDE 顶部的菜单栏「终端」中选择「新终端」,打开终端窗口。

5. 在终端中执行如下命令,安装依赖库 numpy

代码语言:javascript
复制
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 的配置安装依赖包。

下期预告

《一文读懂云函数 SCF 如何进行依赖安装?(下)》

  • PHP 运行时
  • Java 运行时
  • Go 运行时

推荐阅读

One More Thing


欢迎进入千人 QQ 群 (871445853) 交流 Serverless!

  • GitHub: github.com/serverless
  • 官网: cloud.tencent.com/product/serverless-catalog

点击「阅读原文」,轻松体验 Serverless 应用部署。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ServerlessCloudNative 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云函数
云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。云函数是实时文件处理和数据处理等场景下理想的计算平台。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档