如果您仍使用Funcraft来管理函数计算资源,建议切换至Serverless Devs管理。本文介绍如何将函数计算的相关资源从Funcraft迁移到Serverless Devs的不同组件。

背景信息

FC组件和ROS组件都是函数计算团队基于Serverless Devs为您提供的组件,FC组件和ROS组件是用于支持阿里云Serverless应用全生命周期的工具。该组件是Funcraft的进阶版本,和Funcraft的行为描述类似,Funcraft是通过资源配置文件template.yml协助您实现开发、构建、部署等操作的,FC组件和ROS组件则是通过资源配置文件即YAML文件,帮助您快速开发、构建、测试和将应用部署到函数计算。

Serverless Devs相较于Funcraft,具有更多优势,例如:
  • 可拓展性:可以更简单地集成更多产品和功能。
  • 功能的完善性:支持日志查询、指标查询、资源同步等能力。详细信息,请参见使用YAML模式管理资源使用非YAML模式管理资源
  • 多模式:不仅支持使用YAML文件管理资源,也支持非YAML模式即CLI模式管理资源。

迁移方式

从Funcraft迁移到Serverless Devs的FC组件

您可以通过以下方式迁移:
  • (推荐)方式一:一键式切换命令
    在Funcraft管理的函数资源目录下,执行以下命令,将Funcraft的YAML文件转换成Serverless Devs可以识别的YAML文件:
    s cli fc fun2s --target s.yaml

    成功执行一键式切换命令后,将在项目目录中生成一个s.yaml文件。

    在使用一键式切换命令实现迁移时,按需选择以下参数:
    • --source:指定使用Funcraft管理的函数资源路径。
    • --target:指定迁移后的YAML文件名称。默认迁移后的文件名称是s.yamls.yaml,如果您想自定义YAML文件的名称,则需要使用此参数指定。
    • --force:如果在迁移时出现文件名称一样,可以通过该参数强制覆盖已存在的同名称文件。
    • --region string:指定部署资源的地域。
    输出示例:
     fc-transform.zip file decompression completed
    [2021-09-02T10:31:28.870] [INFO ] [FC-TRANSFORM] - Using funcraft yaml: /test/demo/template.yml
    [2021-09-02T10:31:28.884] [INFO ] [FC-TRANSFORM] - Reminder serverless devs yaml path: /test/demo/s.yaml
    
    Tips for next step
    
    ======================
    * Invoke Event Function: s local invoke -t s.yaml
    * Invoke Http Function: s local start -t s.yaml
    * Deploy Resources: s deploy -t s.yaml
    
    End of method: fun2s
  • 方式二:新建s.yaml文件
    1. 在Funcraft管理的函数资源目录下,新建一个s.yaml文件。
    2. 编辑s.yaml文件。
      1. 拷贝以下代码到s.yaml文件内:
        edition: 1.0.0  # 命令行YAML规范版本,遵循语义化版本(Semantic Versioning)规范。
        name: funApp  # 项目名称。
        access: default  # 密钥别名。
        
        services:
          fun-test: # 服务名称。
            component: fun  # 组件名称。
            props: # 组件的属性值。
              region: cn-hangzhou
              config: s
      2. 根据YAML规范将template.yml文件内的资源信息,编辑到s.yaml内。关于YAML规范的详细信息,请参见YAML规范
  • 方式三:资源同步

    当您的资源已成功部署到函数计算时,您可以使用同步管理资源的相关命令,进行资源同步,从而实现使用Serverless Devs管理项目。关于如何同步管理资源,请参见使用s sync的相关命令同步管理资源

从Funcraft迁移到Serverless Devs的ROS组件

  • (推荐)方式一:一键式切换命令
    在Funcraft管理的函数资源目录下,执行以下命令,将Funcraft的YAML文件转换成Serverless Devs可以识别的YAML文件:
    s cli fc-transform fun2ros --target s.yaml
    在使用一键式切换命令实现迁移时,按需选择以下参数:
    • --source:指定使用Funcraft管理的函数资源路径。
    • --target:指定迁移后的YAML文件名称。
    • --force:如果在迁移的过程中出现文件名称一样,可以通过该参数强制覆盖文件。
    • --region string:指定部署资源的地域。
    输出示例:
    [2021-09-02T10:34:53.909] [INFO ] [FC-TRANSFORM] - Using funcraft yaml: /test/demo/template.yml
    [2021-09-02T10:34:53.923] [INFO ] [FC-TRANSFORM] - Reminder serverless devs yaml path: /test/demo/s.yaml
    
    Tips for next step
    
    ======================
    * Deploy Resources: s deploy -t s.yaml
    
    End of method: fun2ros
  • 方式二:新建s.yaml文件
    1. 在Funcraft管理的函数资源目录下,新建一个s.yaml文件。
    2. 编辑s.yaml文件。
      1. 拷贝以下代码到s.yaml文件内:
        edition: 1.0.0  # 命令行YAML规范版本,遵循语义化版本(Semantic Versioning)规范。
        name: rosApp  # 项目名称。
        access: default  # 密钥别名。
        
        services:
          ros-test: # 服务名称。
            component: ros  # 组件名称。
            props: # 组件的属性值。
              region: cn-hangzhou
                name: test
                template: ./temp.json
                policy:
                  url: url
                  body: body
      2. 根据YAML规范将template.yml文件内的资源信息,编辑到s.yaml内。关于YAML规范的详细信息,请参见YAML规范
    services字段内的参数说明:
    • region:指定部署资源的地域。
    • name:ROS的资源名称。
    • templatetemplate文件在本地的路径。
    • policy:指定策略配置,包含以下参数:
      • url:资源栈策略的文件位置。URL必须指向位于Web服务器(HTTP或HTTPS)或阿里云OSS存储桶中的策略,策略文件最大长度不超过16,384个字节。当您使用阿里云OSS存储桶时,未指定OSS地域,则默认与接口参数地域一致。
      • body:资源栈策略主体的结构,最大长度不超过524,288个字节。