本文介绍如何在函数中配置自定义层。

通过控制台配置

前提条件

操作步骤

为函数配置层时,如果层有多个版本,将按照具体的层版本与函数进行绑定。

  1. 登录函数计算控制台,在左侧导航栏,单击服务及函数
  2. 在顶部菜单栏,选择地域,然后在服务列表页面,单击目标服务。
  3. 函数管理页面,单击目标函数操作列的配置
  4. 区域,单击+添加层,从下拉列表中选择添加自定义层,在自定义层层版本下拉列表选择所需的配置,然后单击保存
说明
  • 一个函数最多支持配置5个层,包括自定义层和官方公共层。
  • 当函数配置多个层时,这些层的内容将被合并至/opt目录,多个层按照层配置的逆序合并。如果多个层中有同名文件,先配置的层会覆盖后配置的层中的同名文件。

通过Serverless Devs配置

前提条件

操作步骤

  1. 执行以下命令查找指定地域下的自定义层。
    s cli fc layer list --custom --region cn-hangzhou
    执行成功后,返回自定义层列表,如下所示。从中获取目标层的arn并记录。
    说明 返回的自定义层信息中,字段arn即将废弃,推荐您使用字段arnV2的值作为自定义层的ARN。
    -
      layerName:         java11_fc_auto_created
      arn:               ec284ee1c033fa7fc68ffcd44c******#java11_fc_auto_created#1
      arnV2:             acs:fc:cn-hangzhou:164901546557****:layers/java11_fc_auto_created/versions/1
      version:           1
      acl:               0
      description:
      compatibleRuntime:
        - custom
    示例解析如下:
    • layerName:层名称。
    • version:层版本。
    • arn:层的旧ARN。只支持在自定义层中使用。
    • arnV2:层的新ARN。支持在自定义层和官方公共层中使用。
    • acl:层的权限。取值0代表私有,取值1代表公有。官方公共层默认为公有,自定义层可以设置为私有或者公有。
    • description:层的描述信息。
    • compatibleRuntime:兼容的运行时列表。
  2. 在任意目录下创建s.yaml文件,填写获取的层arn信息。
    示例如下:
    edition: 1.0.0          #  命令行YAML规范版本,遵循语义化版本(Semantic Versioning)规范
    name: fcDeployApp       #  项目名称
    access: "default"  #  密钥别名
    
    services:
      fc-deploy-test: #  服务名称
        component: fc  #  组件名称
        props: #  组件的属性值
          region: cn-hangzhou
          service:
            name: fctest
            description: 'test'
            internetAccess: true
          function:
            name: emoji #  函数名称
            description: this is a emoji
            runtime: java11
            codeUri: ./
            handler: index.handler
            memorySize: 128
            timeout: 6
            layers:    # 函数绑定层,取值是层的ARN
              - acs:fc:cn-hangzhou:164901546557****:layers/java11_fc_auto_created/versions/1
  3. s.yaml文件所在目录,执行以下命令部署函数并为其配置层。
    s deploy

更多信息

您还可以通过API或SDK来管理层和配置层。您可以在以下API中配置层:

您可以通过OpenAPI Explorer调用API和SDK。