本文介绍如何在云效平台使用Serverless Devs工具将函数部署至函数计算。

前提条件

你已完成以下操作:
  • 开通函数计算服务
  • 开通云效
  • 将业务代码上传至代码库。
    说明
    • 云效支持的代码库,请参见代码源
    • 代码库中除了业务代码外,还必须包含Funcraft工具的template.yml文件和Serverless-Devs工具的s.yml文件,s.yml文件一般为如下配置:
      ProjectName:
        Component: fun
        Provider: alibaba
        Properties:
          Region: cn-qingdao #输入您需要部署函数的地域。
          Config: s

操作步骤

  1. 登录云效Flow
  2. 我的流水线页面右上角,单击新建流水线
  3. 选择流水线模板对话框,选择空模板,单击创建
    创建空模板
  4. 添加流水线源面板,选择存放代码的代码源、仓库及默认分支,单击添加
    add-flow
  5. 流程设置页面的阶段1区域,单击空任务,在编辑面板,设置任务信息。
    flow-config参数说明如下。
    参数 说明
    任务名称 设置任务名称。
    构建集群 选择构建集群。
    任务步骤 单击添加步骤,在下拉框中选择构建 > Serverless Dev
    选择授权 选择服务授权,使云效能在函数计算控制台部署函数。如果您没有授权,您可以单击新建服务授权,根据界面提示完成函数计算的服务授权。
    用户命令 设置Serverless Dev工具的部署命令。命令示例如下:
    s build -y <服务名称/函数名称>  
    s deploy -y <函数名称>
    说明
    • 如果您不设置服务名称及函数名称,云效会部署template.yml文件中的所有函数。
    • 如果您的命令中包含s build命令且函数类型为Custom Container,则云效执行命令时会构建镜像并推送镜像至远端仓库,镜像仓库地址需要在template.yml中提前设置。Custom Container类型的函数的template.yml格式示例,请参见template.yml

      您在执行s build命令前,需要先登录至对应的镜像仓库。您可以采用以下方式登录镜像仓库:

      • s build命令前,新增docker login --username=${DOCKER_USR} ${REGISTRY_NAME} -p ${DOCKER_PWD命令。
      • 在当前面板选中制品类型为镜像,并设置镜像仓库信息。
    制品类型为镜像 如果您需要构建镜像并推送至镜像仓库,请选中制品类型为镜像,并设置镜像仓库信息。
    • Registry:设置镜像仓库地址。
    • Registry Username:设置镜像仓库用户名。
    • Registry Password:设置镜像仓库密码。
    说明 此处设置的镜像仓库信息需要与template.yml文件中的镜像仓库信息一致。
  6. 设置完成后,单击页面右上角的保存并运行,在确认运行流水线对话框单击确定,即可运行流水线。
    单击确定后,页面自动进入最近运行界面,如果流水线显示运行成功,说明函数部署成功。flow-deploy-success

常见问题

问题现象:我使用了第三方云产品或者为函数配置了触发器后,无法通过云效将函数成功部署至函数计算怎么办?

可能原因:云效提供的AliyunRDCDefaultRole包含的权限有限,在以下场景中,可能无法成功将函数部署至函数计算。

场景 所需权限及作用
没有为函数配置特定的角色,且函数配置涉及第三方云产品。
  • AliyunFCFullAccess:部署函数。
  • AliyunRAMFullAccess:Serverless Devs工具的Funcraft组件会基于所要涉及的云产品情况,自动为您创建相应的角色(fc-default-role-${function_name}),并关联指定的策略到这个角色上。
  • ram:PassRole:将指定的角色授权给服务。
  • ram:GetRole:判断fc-default-role-${function_name}是否存在,若不存在,则进行创建并关联指定的策略。
为函数配置了触发器(触发器包括OSS、MNS、SLS、Tablestore、CDN、API网关、云监控触发器)。 对应云产品的All Read权限或Full Access权限:用于在创建触发器资源时,保证对应云产品资源的可达性。
您可以参考以下方式解决上述问题:
  • 登录RAM控制台,为AliyunRDCDefaultRole配置所需的相关权限。
    注意 这种方式适用于阿里云账号以及能够修改角色的权限集合的RAM用户。
  • 利用阿里云账号或者具有足够权限的RAM用户自行配置Serverless Devs,配置步骤,请参见配置方法
说明 建议您使用第一种方式配置相关权限,避免直接在云效平台使用账号配置。