一文读懂云函数 SCF 如何进行依赖安装(下)
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.
一文读懂云函数 SCF 如何进行依赖安装(下)
01. PHP 运行时
1. 安装自定义库
通过依赖管理工具,例如 composer,在本地安装依赖后同函数代码一同打包上传。
- 依赖库同代码一起打包上传 通过依赖管理工具,例如 composer,在本地安装依赖后同函数代码一同打包上传。
- 打包时函数入口文件需要在
zip
包的根目录下。如果打包整个文件夹并上传zip
包,则会因解压后无法在根目录找到入口文件而导致函数创建失败。
本文以 PHP7 安装 requests
库为例:
- 在本地终端中执行
mkdir test-package
命令,创建一个目录用于存放函数代码和依赖库。 -
在
test-package
下创建conposer.json
并指定需要安装的依赖库及版本。{ "require": { "requests": ">=1.0" } }
-
执行以下命令,在该目录下安装
requests
依赖库。cd test-package composer install
-
在该目录下创建函数入口文件
index.php
并在代码中引用requests
库。<?php require 'vendor/autoload.php'; function main_handler($event, $context) { return "hello world"; } ?>
-
将函数代码及依赖库一同压缩为 zip 包,在 云函数控制台 中上传打包的 zip 包并创建一个新函数。操作步骤如下:
i. 登录 云函数控制台,单击左侧导航栏的「函数服务」。
ii. 在主界面上方选择期望创建函数的地域,并单击「新建」,进入函数创建流程。
iii. 在「新建函数」页面,填写函数基本信息。如下图所示:
- 创建方式:选择使用「自定义创建」来新建函数。
- 运行环境:选择「Php7」。
- 提交方法:选择「本地上传zip包」。
- 单击「完成」即可创建函数。
2. 安装自定义扩展
在函数入口文件的同级目录下创建扩展文件夹 php_extension
并添加自定义扩展文件 .so
和配置文件 php.ini
,同函数代码一起打包上传。
本文以 PHP7
安装自定义扩展 swoole.so
为例。
- 在本地终端中执行
mkdir test-package
命令,创建一个目录用于存放函数代码和依赖库。 -
执行以下命令在
test-package
创建文件夹php_extension
,并将扩展对应的配置文件php.ini
和扩展文件.so
放在该目录下,目录结构如下:- 扩展文件夹
php_extension
和配置文件php.ini
为固定命名,如使用其他命名可能导致扩展加载失败。 - 扩展文件夹
php_extension
和配置文件php.ini
以及自定义扩展.so
文件需要具备可执行权限。
- 扩展文件夹
|____php_extension
| |____php.ini
| |____swoole.so
|____index.php
- 自定义扩展支持从代码中或层中加载,如果扩展以层的形式上传,请确保上传到层的 zip 解压后的目录格式如下:
|____php_extension
| |____swoole.so
- php.ini 写法:
-
扩展在代码目录下:
extension=/var/user/php_extension/swoole.so
-
扩展在层目录下:
extension=/opt/php_extension/swoole.so
- 在该目录下创建函数入口文件
index.php
,可通过extension_loaded( )
函数检查扩展是否加载成功,加载成功返回true
,否则返回false
。
<?php
function main_handler($event, $context) {
var_dump(extension_loaded('swoole'));
return "hello world";
}
?>
- 将函数代码及依赖库一同压缩为 zip 包,在 云函数控制台 中上传打包的 zip 包并创建一个新函数。操作步骤如下:
i. 登录 云函数控制台,单击左侧导航栏的「函数服务」。
ii. 在主界面上方选择期望创建函数的地域,并单击「新建」,进入函数创建流程。
iii. 在「新建函数」页面,填写函数基本信息。如下图所示:
- 创建方式:选择使用「自定义创建」来新建函数。
- 运行环境:选择「Php7」。
- 提交方法:选择「本地上传zip包」。
- 单击「完成」即可创建函数。
02. Java 运行时
通过依赖管理工具,例如 maven,在本地安装依赖后同函数代码一同打包上传。
- 在本地终端中执行
mkdir test-package
命令,创建一个目录用于存放函数代码和依赖库。 - 在该目录下创建
pom.xml
,并在pom.xml
中配置依赖信息。 - 在项目文件夹根目录下执行
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] ------------------------------------------------------------------------
-
将函数代码及依赖库一同压缩为 jar 包,在 云函数控制台 中上传打包的 jar 包并创建一个新函数。操作步骤如下:
- 登录 云函数控制台,单击左侧导航栏的「函数服务」。
- 在主界面上方选择期望创建函数的地域,并单击「新建」,进入函数创建流程。
- 在“新建函数”页面,填写函数基本信息。如下图所示:
- 创建方式:选择使用「自定义创建」来新建函数。
- 运行环境:选择「Java8」。
- 提交方法:选择「本地上传zip包」。
- 单击「完成」即可创建函数。
03. Go 运行时
使用方法:打包时上传最终的二进制文件。
Go 运行时的依赖库同代码一起编译后得到二进制文件,在 云函数控制台 中上传打包的二进制文件并创建一个新函数。操作步骤如下:
- 登录 云函数控制台,单击左侧导航栏的「函数服务」。
- 在主界面上方选择期望创建函数的地域,并单击「新建」,进入函数创建流程。
-
在“新建函数”页面,填写函数基本信息。如下图所示:
- 创建方式:选择使用「自定义创建」来新建函数。
- 运行环境:选择「Go1」。
- 提交方法:选择「本地上传zip包」。
- 单击「完成」即可创建函数。
传送门:
欢迎访问:Serverless 中文网,您可以在 最佳实践 里体验更多关于 Serverless 应用的开发!
Recommend
-
25
优秀的用户运营是给产品增加适合的用户激励体系,顶尖的用户运营是把产品做成对用户最好的激励。 互联网产品近年有一个怪现象,无论是...
-
8
干货:一文读懂客户端请求是如何到达服务器的 - 趣学程序-shaofeer - OSCHINA - 中文开源技术交流社区 点击上方“趣学程序”,星标公众号 重磅干货,第一时间送达
-
11
星链StarLinkNetwork的核心目标是搭建中心化及去中心化世界的全局搜索,于1月28日中午12点开启头矿。DeFi流动性挖矿火爆一时,吸引了大量投资者参与。为了方便投资者及时了解DeFi挖矿项目的相关信息和挖矿流程,金色财经推出了“金色说明书”系列...
-
4
iOS中如何对具有复杂依赖的SDK在真机上进行单元测试 17 Feb 2016 • 7 min. read • 0 Comments
-
5
DeFi 世界如何实现非足额抵押贷款?一文读懂低抵押 DeFi 贷款赛道现状非足额抵押贷款正在 DeFi 领域蓬勃发展,可能引领下一波 DeFi 的采用和增长。…以太坊,市场,借贷,DeFi,Compound,Centrifuge,Akropolis,NFT,Aave,DeFi Saver,RealT,NFTfi,Telle...
-
5
一文读懂:如何享受小型微利企业减免企业所得税优惠政策 一文读懂:如何享受小型微利企业减免企业所得税优惠政策 08-31 19:38
-
7
原文标题:《干货 | Schnorr 签名如何提升比特币》,作者Stepan在阅读 Blockstream 撰写的 MuSig 论文时,我一直在想象,这对于我一个比特币用户来说,到底意味着什么。我发现 Schnorr 签...
-
3
目前,没有比疫情更好的理由来制定业务连续性(BC,Business Continuity) 计划。对于组织而言, BC 计划表明该组织致力于保护业务并保持其运营,尽可能避免发生破坏性事件。从审计的角度来看,BC 计划对于执行审计控制越来越重要。内部和外部审计师比以...
-
2
一文读懂Chainlink如何驱动去中心化治理Chainlink2022-04-16热度: 21243了解目前去中心化治理存在的问题,以及如何才能提高DAO的透明度和去...
-
2
V2EX › Node.js 运行环境是 Node12,如何知道用 npm 安装依赖库时应该指定哪个版本号?
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK