3

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

 3 years ago
source link: https://serverlesscloud.cn/best-practice/2021-07-21-scf
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

发布于: 2021-7-21
归档于:

标签:Serverless云函数

01. PHP 运行时

1. 安装自定义库

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

  • 依赖库同代码一起打包上传 通过依赖管理工具,例如 composer,在本地安装依赖后同函数代码一同打包上传。
  • 打包时函数入口文件需要在 zip 包的根目录下。如果打包整个文件夹并上传 zip 包,则会因解压后无法在根目录找到入口文件而导致函数创建失败。

本文以 PHP7 安装 requests 库为例:

  1. 在本地终端中执行 mkdir test-package 命令,创建一个目录用于存放函数代码和依赖库。
  2. test-package下创建conposer.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 包,在 云函数控制台 中上传打包的 zip 包并创建一个新函数。操作步骤如下:

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

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

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

    • 创建方式:选择使用「自定义创建」来新建函数。
    • 运行环境:选择「Php7」。
    • 提交方法:选择「本地上传zip包」。
  6. 单击「完成」即可创建函数。

2. 安装自定义扩展

在函数入口文件的同级目录下创建扩展文件夹 php_extension 并添加自定义扩展文件 .so 和配置文件 php.ini,同函数代码一起打包上传。

本文以 PHP7 安装自定义扩展 swoole.so 为例。

  1. 在本地终端中执行 mkdir test-package 命令,创建一个目录用于存放函数代码和依赖库。
  2. 执行以下命令在 test-package 创建文件夹 php_extension,并将扩展对应的配置文件 php.ini 和扩展文件 .so 放在该目录下,目录结构如下:

    • 扩展文件夹 php_extension 和配置文件 php.ini 为固定命名,如使用其他命名可能导致扩展加载失败。
    • 扩展文件夹 php_extension 和配置文件 php.ini 以及自定义扩展 .so 文件需要具备可执行权限。
|____php_extension
| |____php.ini
| |____swoole.so
|____index.php  
  1. 自定义扩展支持从代码中或层中加载,如果扩展以层的形式上传,请确保上传到层的 zip 解压后的目录格式如下:
|____php_extension
| |____swoole.so
  1. php.ini 写法:
  2. 扩展在代码目录下:

    extension=/var/user/php_extension/swoole.so
  3. 扩展在层目录下:

    extension=/opt/php_extension/swoole.so
  4. 在该目录下创建函数入口文件 index.php,可通过 extension_loaded( ) 函数检查扩展是否加载成功,加载成功返回 true,否则返回 false
<?php
function main_handler($event, $context) {
    var_dump(extension_loaded('swoole'));
    return "hello world";
}
?> 
  1. 将函数代码及依赖库一同压缩为 zip 包,在 云函数控制台 中上传打包的 zip 包并创建一个新函数。操作步骤如下:

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

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

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

  • 创建方式:选择使用「自定义创建」来新建函数。
  • 运行环境:选择「Php7」。
  • 提交方法:选择「本地上传zip包」。
  • 单击「完成」即可创建函数。

02. 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] ------------------------------------------------------------------------
  1. 将函数代码及依赖库一同压缩为 jar 包,在 云函数控制台 中上传打包的 jar 包并创建一个新函数。操作步骤如下:

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

03. Go 运行时

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

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

  1. 登录 云函数控制台,单击左侧导航栏的「函数服务」。
  2. 在主界面上方选择期望创建函数的地域,并单击「新建」,进入函数创建流程。
  3. 在“新建函数”页面,填写函数基本信息。如下图所示: img

    • 创建方式:选择使用「自定义创建」来新建函数。
    • 运行环境:选择「Go1」。
    • 提交方法:选择「本地上传zip包」。
  4. 单击「完成」即可创建函数。

传送门:

欢迎访问:Serverless 中文网,您可以在 最佳实践 里体验更多关于 Serverless 应用的开发!


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK