如何通过含第三方依赖的manifest.yml批量部署IBM Cloud Functions多动作
解决方案核心逻辑
OpenWhisk manifest 部署模式支持直接为每个动作指定预打包好的包含npm依赖的zip包,无需单独逐个部署,可保持所有动作归属同一自定义包的结构。
具体操作步骤
- 为每个动作创建独立的工作目录,比如3个动作分别存放在
./actions/test、./actions/test2、./actions/test3路径下 - 每个目录下放入对应动作的入口代码文件(如index.js),在对应目录内执行
npm install <所需依赖>,生成专属的package.json与node_modules文件夹 - 分别对每个动作目录的内容打包:进入对应动作目录,执行
zip -r ../<动作名>.zip ./*,注意zip包根目录需直接包含index.js、node_modules、package.json,不能嵌套外层动作目录 - 修改
manifest.yml配置,将每个action的function字段指向对应预打包的zip包,示例配置如下:
packages: stocks_package: version: 1.0 license: Apache-2.0 actions: test: function: ./actions/test.zip web-export: true runtime: nodejs:18 # 建议指定与本地开发一致的Node.js版本,避免依赖兼容问题 test2: function: ./actions/test2.zip web-export: true runtime: nodejs:18 test3: # 第三个API对应动作配置 function: ./actions/test3.zip web-export: true runtime: nodejs:18 apis: stocks-me: base: test: test: method: GET response: http test2: test2: method: GET response: http test3: # 第三个API路由配置 test3: method: GET response: http
- 在
manifest.yml所在根目录执行统一部署命令即可:ibmcloud fn deploy --manifest manifest.yml,所有动作、API路由会批量部署完成,且全部归属stocks_package包。
注意事项
- 打包前可执行
npm install --production排除开发依赖,减少zip包体积,单动作zip包最大不可超过48MB - 若存在多动作共用的公共依赖与逻辑,可额外封装为自定义层复用,进一步减少重复打包的体积
内容的提问来源于stack exchange,提问作者Akash Gorai
相关产品推荐
相关产品推荐

