在使用 Serverless 框架开发 Serverless 架构应用时,我们常常需要将二进制文件打包到函数中去。而 serverless-plugin-custom-binary 就是一个可以轻松实现这个目标的 npm 包。本文将介绍如何使用 serverless-plugin-custom-binary 对 Serverless 应用中的二进制文件进行打包,并提供一些使用技巧和示例代码供参考。
安装 serverless-plugin-custom-binary
在初始化 Serverless 应用后,我们需要先安装 serverless-plugin-custom-binary。运行以下 npm 命令即可完成安装:
npm install --save-dev serverless-plugin-custom-binary
添加插件配置
安装完成后,在 serverless.yml 配置文件中添加 serverless-plugin-custom-binary 的配置信息。具体配置内容包括:
- package.artifact 标记需要打包的二进制文件所在的目录;
- package.include 打包时需要包含的文件,这里我们就将二进制文件名称列出;
- plugins 引入 serverless-plugin-custom-binary 插件。
示例配置如下:
plugins: - serverless-plugin-custom-binary custom: binary: package_artifact: bin package_include: - mybinary
运行打包命令
完成配置后,即可在命令行中运行打包命令:
sls package
此时,serverless-plugin-custom-binary 将会自动打包 serverless.yml 配置文件中指定的二进制文件,并将其打包至 Serverless 应用中。
使用技巧
除了基本的打包操作外,serverless-plugin-custom-binary 还提供了一些非常实用的配置选项,可以让我们更灵活地控制打包过程。以下是一些使用技巧:
支持多个二进制文件
只需将 package_include 数组中的文件名增加即可:
custom: binary: package_artifact: bin package_include: - mybinary - myotherbinary
压缩二进制文件
使用 UPX 工具可将可执行文件压缩至更小的体积,可以将其和 Serverless 应用一同打包。只需在 package_include 数组中加入一个命令行即可:
custom: binary: package_artifact: bin package_include: - mybinary - upx myotherbinary
显式设置二进制文件运行权限
有些二进制文件需要指定运行权限,否则可能会因权限不足而无法正常运行。可以使用 package_permissions 参数来指定特定文件的运行权限:
-- -------------------- ---- ------- ------- ------- ----------------- --- ---------------- - -------- - ------------- -------------------- - ----- -------- ------------ ------
处理二进制文件
有时我们需要对打包过程中的二进制文件进行一些额外的处理操作,比如更改文件名或处理二进制文件的内容。可以自定义 package_plugin 脚本来自定义这样的操作:
-- -------------------- ---- ------- ------- ------- ----------------- --- ---------------- - -------- ---------------- - -------- --------------------- - --------- ----- --------
以上示例中使用了 resolve 和 dos2unix 两个 npm 模块来演示自定义 plugin 的使用,读者可以根据自己的需求编写 custom plugin。
示例代码
下面是一段基本的 Serverless 应用代码,演示了 serverless-plugin-custom-binary 的使用方法:
-- -------------------- ---- ------- - -------------- -------- --------- --------- ----- --- -------- ---------- -------- - ------------------------------- ---------- ------ -------- ------------- -------- --------- ----------- ------------ -------- ------ -------
-- -------------------- ---- ------- -- ---------- ---- -------- ----- -- - -------------- ----- ------- - -------------------- ----- ------ - ------------------------------ -------------------- - ----- ------- -- - --------------------- -------------------- ------ - ----------- ---- ----- --------------- - -------- --------- -------- --------------- ------ ------ -- ----- - -- -- --
在示例代码中,我们将一个名为 mybinary 的二进制文件打包至应用中,并在 handler.js 文件中读取了它。需要注意的是,我们在读取二进制文件时使用了相对路径,这意味着必须将它与 Serverless 文件一同上传至 AWS Lambda 中。
假设我们的 mybinary 文件是一个 ELF 可执行文件,我们运行命令
sls package
后将收到以下提示:
Serverless: Package created: /path/to/myservice/.serverless/package.zip (15.13 MB)
这意味着我们的二进制文件已经被成功打包至 Serverless 应用中。
总结
serverless-plugin-custom-binary 是一款强大简便的 npm 包,它可以让我们轻松地将二进制文件打包至 Serverless 应用中,并提供了很多实用的配置选项供我们进行定制化开发。在使用 Serverless 框架时, serverless-plugin-custom-binary 将是你的得力助手。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/serverless-plugin-custom-binary