Midway Serverless 提供了一套通用的应用迁移方案,将原有应用尽可能不修改代码,就可以发布到函数平台。使用此方案,可以将原有的 express 应用尽可能快速简单的迁移到函数平台进行托管,享受云原生时代的弹性红利。

使用

新增函数配置

在代码根目录新增加文件 f.yml ,内容如下。

  1. service: my-express-demo ## 发布到云平台的应用名
  2. provider:
  3. name: aliyun ## 发布的云平台,aliyun,tencent 等
  4. deployType: express ## 部署的应用类型

代码修改

  • 1、需要导出默认的 app
  • 2、项目文件当前文件名必须为 app.js
  • 3、 index.js 为保留文件,项目中请 不要有此文件。
  1. // app.js
  2. const express = require('express');
  3. const app = express();
  4. // *****
  5. // 注释原本的监听
  6. // app.listen(3000);
  7. // 导出默认的 app
  8. module.exports = app;

如果在初始化有异步的情况 ,比如连接数据库等,我们提供了异步的支持。

  1. // app.js
  2. const Koa = require('koa');
  3. const Router = require('koa-router');
  4. const app = new Koa();
  5. // *****
  6. // 注释原本的监听
  7. // app.listen(3000);
  8. // 导出默认的 app
  9. module.exports = async () => {
  10. // do some async method, like db connect
  11. return app;
  12. };

部署

执行 f deploy 即可。

默认情况

阿里云

**
默认发布为 http 触发器,如果需要 API 网关,可以自行按照上面 f.yml 的格式进行 functions 结构的修改配置,同时,需要在平台配置路由。

腾讯云

**
默认发布为 API 网关触发器,同时会自动配置网关路由。

一些限制

  • 不支持文件上传等网关无法支持的能力
  • 还有一些,请参考 应用迁移 faq