You need to enable JavaScript to run this app.
导航
一键部署 Express 应用
最近更新时间:2024.07.15 14:01:48首次发布时间:2024.07.15 14:01:48

本文为您介绍如何通过函数服务应用中心一键部署 Express 应用。

背景信息

  • 应用介绍
    基于自定义的 Native 运行时为用户快速部署一个可通过公网访问的 Express 应用。部署成功后,可通过 API 网关触发器提供的域名访问。
  • 运行时
    Native 运行时
  • 关联云服务
    • 函数服务:使用相应的运行时模板构建 Web 应用。
    • API 网关:使用网关服务暴露 Web 应用的公网域名。

前提条件

  • 已开通本应用关联的所有云服务。

  • IAM 用户需确保已授权 VeFaaSFullAccessAPIGFullAccessSTSAssumeRoleAccess 策略。如果缺少以上策略,请联系主账号或管理员进行授权。具体操作可参见 创建用户并授权

  • 已在 API 网关侧创建网关实例,详细操作可参见 创建实例

  • 首次使用函数服务,需确保已完成跨服务授权。如未授权,控制台会弹出跨服务授权页面引导您进行授权。

操作步骤

  1. 登录 函数服务控制台

  2. 在顶部导航栏,选择目标地域。

  3. 在左侧导航栏选择 应用

  4. 在应用页面,单击 创建应用

  5. 在创建应用页面,选择 volcano-webserver-express 模板,单击 创建

  6. 在创建应用页面,按要求配置以下信息。

    • 基础信息
    配置项说明
    已选模板展示选择的模板。本场景为 volcano-webserver-express
    名称自定义应用的名称。
    备注填写当前应用的备注信息,可以为空。

    IAM 角色

    应用中心提供了系统默认角色 ServerlessApplicationRole,该角色包含了应用中心需要访问的部分云资源权限。

    • 如果您的用户角色未包含此角色,将会自动添加该角色。
    • 如果您的用户角色已包含此角色,系统会自动检测该角色是否已包含当前应用需要的所有策略。当缺少相关策略时,控制台会提示需要添加的策略名称,请单击 添加策略 进行添加。

    注意

    • IAM 用户需确保已授权 IAMReadOnlyAccess 策略,否则无权限获取 ServerlessApplicationRole 角色信息。
    • IAM 用户如需进一步为 ServerlessApplicationRole 角色添加策略,需确保已授权 IAMFullAccess 策略。
    关联云服务展示当前应用需要使用的所有云服务名称、开通状态及开通目的。
    • 高级配置
    配置项说明
    地域展示当前应用及应用下关联云资源所在的地域。
    函数名称自定义函数名称。
    APIG 网关实例选择待使用的网关实例。将在该网关实例下自动创建 API 网关触发器相关资源,包括:服务、Upstream、路由。
  7. 单击 确定,开始创建并部署应用。 系统将自动跳转至应用详情页面,为您实时展示应用部署日志。

结果验证

应用部署成功后,在云资源列表中,单击 API 网关下的访问地址,可以访问到 Express 应用返回的 html 页面。
alt

后续操作

本文仅展示了部署一个最简单的 Express 应用示例。如果您希望对应用进行二次开发,可参考以下步骤。

  1. 在应用详情的云资源列表中,单击函数服务旁的 +,可查看应用对应的函数信息。
    alt
  2. 单击函数名称,跳转至函数详情页面。
  3. 切换至 代码 页签。编辑函数代码并重新发布函数,无需重新部署应用。
    代码结构如下:
    # static 目录下是 express 应用模版展示的静态页面资源文件
    --static
       --index.html
       --style.css
    # express 应用的 node_modules 依赖
    --node_modules
       --xxx
       ...
    # node目录为自定义 native 运动时依赖的 node runtime 包
    --node
       --xx
       ...
    # index.js 为入口文件,用于书写 express 应用的业务逻辑
    --index.js
    # package.json,依赖配置等
    --package.json
    # package-lock.json
    --package-lock.json
    # run.sh 为启动文件,native 运行时函数必需,并配置了相应的启动命令
    --run.sh