Yaml 规范字段解析

Yaml 完整示例

参数名必填类型参数描述
regionTrueEnum地域,支持情况参见函数计算开服地域
codeTrueString[本地位置]/Struct[远程位置]代码位置,code 和 customContainerConfig 二选一
cpuFalseNumber函数的 CPU 规格,单位为 vCPU,为 0.05 vCPU 的倍数。
customContainerConfigFalseStruct自定义镜像配置
customDNSFalseStructDNS 配置
customRuntimeConfigFalseStruct自定义运行时启动配置
descriptionFalseString函数的简短描述
diskSizeFalseNumber函数的磁盘规格,单位为 MB,可选值为 512 MB 或 10240 MB。
instanceConcurrencyFalseNumber单实例多并发数,该参数仅针对 custom/custom.debian10/custom-container runtime 有效,范围为 [1, 100]
environmentVariablesFalseStruct环境变量
funtionaNameTrueString函数名称
gpuConfigFalseStruct环境变量
handlerFalseString函数执行的入口,具体格式和语言相关
instanceLifecycleConfigFalseStruct实例生命周期回调方法配置
internetAccessFalseBoolean设为 true 让 function 可以访问公网
layersFalseList<String>函数绑定层,支持 Nodejs、Python、Custom、Go1;取值是层的 ARN, 比如 acs:fc:cn-huhehaote:123456789:layers/test-lh/versions/1
logConfigFalseEnum[简单配置]/Struct[详细配置]日志 log 配置,函数产生的日志会写入这里配置的 logstore
memorySizeFalseNumber函数的内存规格
nasConfigFalseEnum[简单配置]/Struct[详细配置]文件存储 NAS 配置, 配置此参数后,函数可以访问指定的 NAS 资源
ossMountConfigFalseStruct[详细配置]对象存储 OSS 挂载配置, 配置此参数后,函数可以访问指定 OSS bucket
roleFalseString授予函数计算所需权限的 RAM 角色,使用场景包含:1. 把函数产生的日志发送到您的日志库中。2. 为函数在执行过程中访问其他云资源生成的临时访问令牌。
runtimeTrueString函数的运行时环境
timeoutFalseNumber函数运行的超时时间,单位为秒,最小 1 秒,默认 3 秒。函数超过这个时间后会被终止执行
tracingConfigFalseStruct链链路追踪配置,当函数计算与链路追踪集成后,您可以记录请求在函数计算的耗时时间、查看函数的冷启动时间、记录函数内部时间的消耗等
vpcBindingFalseStruct仅允许指定专有网络 VPC 调用函数 文档
vpcConfigFalseEnum[简单配置]/Struct[详细配置]专有网络 VPC 配置,配置此参数后,函数可以访问指定的 VPC 资源
asyncInvokeConfigFalseStruct函数异步调用配置
triggersFalseStruct触发器

code

函数代码位置。支持从项目中读取代码或者从 oss 中获取代码包。当代码位于项目下时,可以直接指定本地路径,code 类型为 String,支持文件夹或 zip 文件,例如'./code'、'./code.zip'。当代码位于 oss 上时,code 类型为 Struct,详细参数如下:

参数名必填类型参数描述
ossBucketNameFalseString存放函数代码 ZIP 包的 OSS Bucket 名称。
ossObjectNameFalseString存放函数代码 ZIP 包的 OSS Object 名称。

customContainerConfig

参数名必填类型参数描述
commandFalseList<String>容器启动参数,示例值: ["/code/myserver"]
entrypointFalseList<String>容器启动指令,示例值: ["args", "value1"]
healthCheckConfigFalseStruct函数自定义健康检查配置,仅适用于 Custom Runtime 和 Custom Container
imageTrueString容器镜像仓库地址
portFalseNumber自定义容器运行时 HTTP Server 的监听端口。

healthCheckConfig

参数名必填类型参数描述
failureThresholdFalseNumber健康检查失败次数阈值,达到该值后系统认为检查失败。取值范围 1~120。默认值为 3。
httpGetUrlTrueString容器自定义健康检查 URL 地址。长度不超过 2048 个字符。
initialDelaySecondsFalseNumber容器启动到发起健康检查的延迟。取值范围 0~120。默认值为 0。
periodSecondsFalseNumber健康检查周期。取值范围 1~120。默认值为 3。
successThresholdFalseNumber健康检查成功次数阈值,达到该值后系统认为检查成功。取值范围 1~120。默认值为 1。
timeoutSecondsFalseNumber健康检查超时时间。取值范围 1~3。默认值为 1。

customDNS

参数名必填类型参数描述
dnsOptionsFalseList<Struct>对应 resolv.conf DNS 配置的 Options 项
nameServersFalseList<String>DNS 服务器的 IP 地址列表
searchesFalseList<String>DNS 搜索域列表

dnsOptions

dnsOptions 为 List<Struct>,其中每个 Struct 需符合如下参数规范:

参数名必填类型参数描述
nameTrueString对应 resolv.conf DNS 配置的 Options 项的键
valueTrueString对应 resolv.conf DNS 配置的 Options 项的值

customRuntimeConfig

参数名必填类型参数描述
commandFalseList<String>容器启动参数,示例值: ["/code/myserver"]
entrypointFalseList<String>容器启动指令,示例值: ["-arg1", "value1"]
healthCheckConfigFalseStruct函数自定义健康检查配置,仅适用于 Custom Runtime 和 Custom Container
portFalseNumber自定义容器运行时 HTTP Server 的监听端口。

environmentVariables

Object 格式,例如:

DB_connection: jdbc:mysql://rm-bp90434sds45c.mysql.rds.aliyuncs.com:3306/litemall

当然不推荐通过明文将敏感信息写入到s.yaml, 可以配合.env 使用。 如果在 CICD流水线环境中,也可以通过export DB_connection=xxx到临时环境变量, 再配合${env('DB_connection')}$env 文档)进行引用

gpuConfig

参数名必填类型参数描述
gpuMemorySizeFalseNumberGPU 显存规格,单位为 MB,为 1024MB 的倍数
gpuTypeFalseStringGPU 卡类型。 fc.gpu.tesla.1 表示 GPU 实例 Tesla 系列 T4 卡型。fc.gpu.ampere.1 表示 GPU 实例 Ampere 系列 A10 卡型。

instanceLifecycleConfig

参数名必填类型参数描述
initializerFalseStructInitializer 回调方法配置
preStopFalseStructPreStop 回调方法配置

lifecycleHook

参数名必填类型参数描述
handlerTrueString回调方法的执行入口,含义与请求处理程序类似
timeoutFalseNumber回调方法的超时时间,单位为秒

logConfig

logConfig参数为简单配置时,可以是:auto。在部署阶段会先检测线上是否存在 logConfig 的配置,如果存在则直接复用线上配置,如果不存在则按照以下规则复用或者创建日志资源:

  • 日志服务中的 project 名称为 ${accountID}-${region}-project
  • 日志服务中的 logstore 名称为function-logstore

logConfig参数为结构时,可以参考:

参数名必填类型参数描述
logstoreTrueStringloghub 中的 logstore 名称
projectTrueStringloghub 中的 project 名称
enableRequestMetricsFalseBooleanRequestMetrics 开关,取值true/false
enableInstanceMetricsFalseBooleanInstanceMetrics 开关,取值true/false
logBeginRuleFalseString日志是否切分,取值 DefaultRegex/None

权限配置相关

子账号需要的权限

最大权限

系统策略:AliyunFCFullAccessAliyunLogFullAccess

部署最小权限
  • logConfig 不为 auto

自定义策略

{
  "Statement": [
    {
      "Action": "ram:PassRole",
      "Resource": "*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "acs:Service": "fc.aliyuncs.com"
        }
      }
    }
  ],
  "Version": "1"
}
  • logConfgauto

自定义策略

{
  "Version": "1",
  "Statement": [
    {
      "Action": "ram:PassRole",
      "Resource": "*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "acs:Service": "fc.aliyuncs.com"
        }
      }
    }
    {
      "Action": ["log:GetProject", "log:CreateProject"],
      "Resource": "acs:log:<region>:<account-id>:project/<project-name>",
      "Effect": "Allow"
    },
    {
      "Action": ["log:CreateLogStore", "log:GetIndex", "log:GetLogStore", "log:CreateIndex"],
      "Resource": "acs:log:<region>:<account-id>:project/<project-name>/logstore/<logstore-name>",
      "Effect": "Allow"
    }
  ]
}

nasConfig

nasConfig参数为简单配置是,可以是:auto。在部署阶段规则如下: 会先检测在线上是否存在 nasConfig 的配置,如果存在配置则验证挂载点是否已经被删除,如果存在直接复用线上配置;如果不存在则再创建一个新的挂载点。

nasConfig参数为结构时,可以参考:

参数名必填类型参数描述
groupIdFalseStringgroupID, 默认为 0
mountPointsTrueList<Struct>NAS 挂载点列表
userIdFalseStringuserID, 默认为 0

权限配置相关

子账号需要的权限

最大权限

系统策略AliyunFCFullAccessAliyunVPCFullAccessAliyunNasFullAccess

部署最小权限
  • nasConfig 不为 auto

自定义策略

{
  "Statement": [
    {
      "Action": "ram:PassRole",
      "Resource": "*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "acs:Service": "fc.aliyuncs.com"
        }
      }
    }
  ],
  "Version": "1"
}
  • nasConfigauto

系统策略AliyunNasReadOnlyAccess

自定义策略

{
  "Statement": [
    {
      "Action": "fc:GetAccountSettings",
      "Effect": "Allow",
      "Resource": "acs:fc:<region>:<account-id>:account-settings"
    },
    {
      "Action": ["fc:InvokeFunction", "fc:CreateFunction", "fc:UpdateFunction"],
      "Effect": "Allow",
      "Resource": "acs:fc:<region>:<account-id>:functions/*"
    },
    {
      "Action": ["fc:UpdateTrigger", "fc:CreateTrigger"],
      "Effect": "Allow",
      "Resource": "acs:fc:<region>:<account-id>:functions/*/triggers/*"
    },
    {
      "Action": "ram:PassRole",
      "Resource": "*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "acs:Service": "fc.aliyuncs.com"
        }
      }
    }
    {
      "Action": [
        "nas:CreateMountTarget",
        "nas:DescribeMountTargets",
        "nas:DescribeFileSystems",
        "nas:CreateFileSystem",
        "vpc:DescribeVSwitchAttributes"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ],
  "Version": "1"
}

mountPoints

mountPoints 为 List<Struct>,其中每个 Struct 需符合如下参数规范:

参数名必填类型参数描述
enableTLSFalseBoolean使用传输加密方式挂载。 说明:仅通用型 NAS 支持传输加密
mountDirTrueString本地挂载目录
serverAddrTrueStringNAS 服务器地址

ossMountConfig

ossMountConfig参数为结构时,可以参考:

参数名必填类型参数描述
mountPointsTrueList<Struct>OSS 挂载点列表

权限配置相关

子账号需要的权限

最大权限

系统策略AliyunFCFullAccess

部署最小权限

自定义策略

{
  "Statement": [
    {
      "Action": "ram:PassRole",
      "Resource": "*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "acs:Service": "fc.aliyuncs.com"
        }
      }
    }
  ],
  "Version": "1"
}

函数角色权限

最大权限

系统策略AliyunOSSFullAccess

限定只读访问指定 bucket
{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "oss:ListObjects",
        "oss:GetObject"
      ],
      "Resource": [
        "acs:oss:*:*:bucketName",
        "acs:oss:*:*:bucketName/*"
      ],
      "Effect": "Allow"
    }
  ]
}
限定读写访问指定 bucket
{
  "Version": "1",
  "Statement": [
    {
      "Action": [
        "oss:ListObjects",
        "oss:GetObject",
        "oss:PutObject",
        "oss:DeleteObject",
        "oss:AbortMultipartUpload",
        "oss:ListParts"
      ],
      "Resource": [
        "acs:oss:*:*:bucketName",
        "acs:oss:*:*:bucketName/*"
      ],
      "Effect": "Allow"
    }
  ]
}

ossMountPoints

参数名必填类型参数描述
bucketNameTrueStringOSS bucket 名称
bucketPathFalseString挂载的 OSS Bucket 路径。留空或者填/,都表示挂载 bucket 根目录
endpointTrueStringOSS 访问地址
mountDirTrueString挂载目录
readOnlyFalseBoolean是否只读

runtime

runtime 目前支持

nodejs14nodejs12nodejs10nodejs8
python3.10python3.9python3 java11java8
go1
php7.2
dotnetcore3.1
customcustom.debian10custom-container

tracingConfig

参数名必填类型参数描述
paramsTrueString链路追踪内网接入点。 例如 http://tracing-analysis-dc-hz.aliyuncs.com/adapt_xxx/api/otlp/traces
typeTrueString链路追踪协议类型,目前只支持 Jaeger。

权限配置相关

子账号需要的权限

系统策略AliyunFCFullAccessAliyunTracingAnalysisReadOnlyAccess

{
  "Statement": [
    {
      "Action": "ram:PassRole",
      "Resource": "*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "acs:Service": "fc.aliyuncs.com"
        }
      }
    }
  ],
  "Version": "1"
}

vpcBinding

参数名必填类型参数描述
vpcIdsTrueList<String>允许访问该函数的 vpc ID 列表

vpcConfig

vpcConfig参数为简单配置是,可以是:auto。在部署阶段会先检测线上是否存在 vpcConfig 的配置,如果存在则直接复用,如果不存在则尝试按照以下规则复用或者创建资源:

  • vpcId 的名称是 Alibaba-Fc-V3-Component-Generated-vpc-${this.region},当如果存在多个符合规则的 vpc,会复用第一个返回值。在创建时 cidrBlock 固定为 10.0.0.0/8
  • vswitch 的名称是 Alibaba-Fc-V3-Component-Generated-vswitch-${this.region},当如果存在多个符合规则的 vswitch,会复用第一个返回值。
  • securityGroup 的名称是 Alibaba-Fc-V3-Component-Generated-securityGroup-${this.region},当如果存在多个符合规则的 securityGroup,会复用第一个返回值。

vpcConfig参数为结构时,可以参考:

参数名必填类型参数描述
securityGroupIdTrueString安全组 ID
vpcIdTrueStringVPC ID
vswitchIdsTrueList<String>交换机 ID 列表

权限配置相关

子账号需要的权限

最大权限

系统策略AliyunFCFullAccessAliyunVPCFullAccessAliyunECSFullAccess

部署最小权限
  • vpcConfig 不为 auto

自定义策略

{
  "Statement": [
    {
      "Action": "ram:PassRole",
      "Resource": "*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "acs:Service": "fc.aliyuncs.com"
        }
      }
    }
  ],
  "Version": "1"
}
  • vpcConfigauto

系统策略AliyunVPCReadOnlyAccess

自定义策略

{
  "Statement": [
    {
      "Action": "ram:PassRole",
      "Resource": "*",
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "acs:Service": "fc.aliyuncs.com"
        }
      }
    }
    {
      "Action": "fc:GetAccountSettings",
      "Effect": "Allow",
      "Resource": "acs:fc:<region>:<account-id>:account-settings"
    },
    {
      "Action": [
        "vpc:CreateVpc",
        "vpc:CreateVSwitch",
        "ecs:AuthorizeSecurityGroup",
        "ecs:DescribeSecurityGroups",
        "ecs:CreateSecurityGroup"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ],
  "Version": "1"
}

asyncInvokeConfig

参数名必填类型参数描述
destinationConfigTrueStruct异步调用目标的配置结构体
maxAsyncEventAgeInSecondsFalseNumber消息最大存活时长,取值范围[1,2592000]。单位:秒
maxAsyncRetryAttemptsFalseNumber异步调用失败后的最大重试次数,默认值为 3。取值范围[0,8]

destinationConfig

参数名必填类型参数描述
onSuccessTrueStruct异步调用成功的目标服务
onFailureTrueStruct异步调用失败的目标服务

destination

参数名必填类型参数描述
destinationTrueString异步调用目标资源描述符,例如acs:fc:cn-shanghai:xxx:functions/f1
在 GitHub 上编辑本页面 更新时间: Thu, Feb 22, 2024