使用CFC层管理依赖包-Node.js
现在 CFC 新增了“层( Layer )” 功能使得可以单独上传并集中管理CFC的依赖包了,这样开发者开发函数代码的时候只需要关注该函数本身的代码,依赖包只需要引用即可。这样有以下的好处。开发者可以只关注函数代码,不用考虑依赖包的部署。
Node.js依赖包制作
1.打包 比如要将lodash打包在层中,我们先创建一个目录叫my_nodejs_layer,在my_nodejs_layer目录下创建一个nodejs目录,此时目录结构如下
1➜ my_nodejs_layer tree
2.
3└── nodejs
4
51 directory, 0 files
进入nodejs目录,执行 npm install lodash 再查看一下目录结构
1➜ my_nodejs_layer tree -d
2.
3└── nodejs
4 └── node_modules
5 └── lodash
6 └── fp
7
84 directories
9
在my_nodejs_layer目录中将nodejs打包,
1zip -r nodejs_layer_lodash.zip nodejs
这样我们的layer依赖就打好了。
CFC运行时会将层放在/opt 目录下并根据不同运行环境��的目录来调用,需要按照如下的结构来打包
-
nodejs nodejs/node_modules,nodejs/node8/node_modules
Plain Text1``` 2 my_nodejs_layer.zip 3└── nodejs/node_modules/lodash 4```2.创建层
导航路径:控制台 -> 函数计算 CFC -> 层
单击 【创建层】,填写层信息并上传刚打好的 ZIP 包。
| 参数 | 必填 | 说明 |
|---|---|---|
| 层名称 | 是 | 输入能够标识依赖用途的名称。 |
| 描述 | 否 | 填写层的用途说明,便于后续版本管理。 |
LICENSE 信息 |
是 | 填写依赖包对应的 License 链接。 |
| ZIP 包 | 是 | 选择本地打好的层压缩包上传。 |
若当前层中打包的是 lodash,LICENSE 信息可填写其 LICENSE 链接。
单击 【创建】,完成层创建。后续若需要更新层内容,可在层详情页单击 【创建版本】 新建层版本。


注意: 层版本创建后不可修改。若删除某个层版本,已引用该版本的 CFC 函数仍可继续运行,但新建函数不能再引用该版本。
3.创建函数 到函数菜单下创建新的函数,选择语言nodejs12

修改代码如下
1var process = require('child_process');
2
3exports.handler = (event, context, callback) => {
4 process.exec('ls -l /opt', function (error, stdout, stderr) {
5 if (error !== null) {
6 console.log('exec error: ' + error);
7 callback(null, error);
8 }else{
9 console.log('exec success: '+ stdout)
10 callback(null, stdout);
11 }
12 });
13};
此时层还没有引入函数,先运行一下看看

/opt 目录下没有内容
4.引入layer,在函数的层配置里点击添加层

在弹窗中选择刚刚创建的层nodejs-lodash 选择版本,点击确定

最多可以添加5个层,如果有多个层,如果有同名文件存在序号大的会覆盖序号小的。可以点击上下箭头修改顺序

确定层之后,点击保存,保存层配置。
5. 测试
导航路径:控制台 -> 函数计算 CFC -> 函数 -> 目标函数
确认层配置已保存后,修改函数代码,增加 require('lodash'),再次执行函数:
1var process = require('child_process');
2var _ = require('lodash');
3
4exports.handler = (event, context, callback) => {
5 process.exec('ls -l /opt', function (error, stdout, stderr) {
6 if (error !== null) {
7 console.log('exec error: ' + error);
8 callback(null, error);
9 } else {
10 console.log('exec success: ' + stdout);
11 console.log(_.chunk(['a', 'b', 'c', 'd'], 2));
12 callback(null, stdout);
13 }
14 });
15};
执行成功后,可以看到 _.chunk(...) 的输出结果,并且 /opt 目录下存在 nodejs 目录,该目录即为层中依赖包的挂载位置。


评价此篇文章
