Skip to content

Latest commit

 

History

History
255 lines (204 loc) · 14.7 KB

function.md

File metadata and controls

255 lines (204 loc) · 14.7 KB
title description position category
function字段
function字段
3
Yaml规范

function 字段

参数名 必填 类型 参数描述
name True String function 名称
description False String function 的简短描述
codeUri False String 代码位置
ossBucket False String 代码存放的 oss 存储桶
ossKey False String 如果指定 oss 代码,所对应的对象,不能与 codeUri 同时出现
handler False String function 执行的入口,具体格式和语言相关
memorySize False Number function 的内存规格
runtime True String 运行时
timeout False Number function 运行的超时时间
caPort False Number CustomContainer/Runtime 指定端口
cpu False Number 函数的 CPU 规格,单位为 vCPU,为 0.05 vCPU 的倍数。
diskSize False Number 函数的磁盘规格,单位为 MB,可选值为 512 MB 或 10240 MB。
customContainerConfig False Struct 自定义镜像配置
customHealthCheckConfig False Struct 函数自定义健康检查配置,仅适用于 Custom Runtime 和 Custom Container。
environmentVariables False Struct 环境变量
initializationTimeout False Number 初始化方法超时时间
initializer False String 初始化方法
instanceConcurrency False Number 单实例多并发
instanceSoftConcurrency False Number 扩容并发度。扩容并发度用于优雅扩容,当实例上并发数超过扩容并发度时,会触发实例扩容。例如,您的实例启动较慢,可以通过设置合适的扩容并发度,提前启动实例。注意:扩容并发度的值不能大于实例并发度,最小值为1。线上存在此配置,但是yaml中没有配置,则默认为和 instanceConcurrency 值一致
instanceType False String 函数实例类型,可选值为:e1(弹性实例)、c1(性能实例)、g1(GPU 实例)
gpuMemorySize False Number GPU 实例内存规格
layers False List<String> 函数绑定层,支持 Nodejs、Python、Custom、Go1;取值是层的 ARN
instanceLifecycleConfig False Struct 扩展函数
asyncConfiguration False Struct 异步配置
customDNS False Struct DNS 配置
customRuntimeConfig False Struct 自定义运行时启动配置

参考案例:

function:
  name: event-function
  description: this is a test
  runtime: nodejs12
  codeUri: ./
  handler: index.handler
  memorySize: 128
  timeout: 60

账号需要的函数权限

最大权限

AliyunFCFullAccess

部署最小权限

⚠️ fc:GetFunctionAsyncInvokeConfig 选填,不影响使用

{
  "Statement": [
    {
      "Action": ["fc:GetFunction", "fc:CreateFunction", "fc:UpdateFunction"],
      "Effect": "Allow",
      "Resource": "acs:fc:<region>:<account-id>:services/<service-name>/functions/*"
    }
  ],
  "Version": "1"
}

删除最小权限

{
  "Version": "1",
  "Statement": [
    {
      "Action": "fc:DeleteFunction",
      "Resource": "acs:fc:<region>:<account-id>:services/<serviceName>/functions/<functionName>",
      "Effect": "Allow"
    }
  ]
}

runtime

runtime 目前支持

nodejs14nodejs12nodejs10nodejs8nodejs6nodejs4.4
python3.9python3python2.7
java11java8
go1
php7.2
dotnetcore2.1
customcustom-container

当 runtime 为 custom-container 服务角色权限:

系统策略AliyunContainerRegistryReadOnlyAccess

customHealthCheckConfig

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

customContainerConfig

参数名 必填 类型 参数描述
image True String 容器镜像仓库地址
command False String 容器启动指令,示例值: '["/code/myserver"]'
args False String 容器启动参数,示例值: '["-arg1", "value1"]'
accelerationType False String 镜像加速开关,可选值:'Default'、'None',前者表示开启,后者表示关闭
instanceID False String 容器镜像服务企业版实例的 ID。当容器镜像选择的是企业版实例时,您需要给容器镜像服务企业版添加实例 ID,该实例的默认解析必须是服务所在的 VPC 网络地址。目前不支持 PrivateZone 产品定义域名解析

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 文档)进行引用

instanceLifecycleConfig

参数名 必填 类型 参数描述
preFreeze False Struct PreFreeze 函数
preStop False Struct PreStop 函数

preFreeze 和 preStop

参数名 必填 类型 参数描述
handler True String 函数入口
timeout False Number 超时时间

asyncConfiguration

参数名 必填 类型 参数描述
maxAsyncEventAgeInSeconds False Number 消息最大存活时长,取值范围[1,2592000]。单位:秒
maxAsyncRetryAttempts False Number 异步调用失败后的最大重试次数,默认值为 3。取值范围[0,8]
statefulInvocation False Boolean 是否开启有状态异步调用
destination False Struct 异步调用目标的配置结构体

customDNS

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

customRuntimeConfig

参数名 必填 类型 参数描述
command True List<String> 启动指令,示例值: ["/code/myserver"]
args False List<String> 启动参数,示例值: ["-arg1", "value1"]

dnsOptions

参数名 必填 类型 参数描述
name True String 对应 resolv.conf DNS 配置的 Options 项的键
value True String 对应 resolv.conf DNS 配置的 Options 项的值

权限配置相关

服务角色权限
  • 配置了 fc:AliyunFCInvocationAccess
  • 配置了 mns
{
    "Action":[
        "mns:SendMessage",
        "mns:PublishMessage"
    ],
    "Resource":"*",
    "Effect":"Allow"
}
子账号需要的权限
最大权限

系统策略AliyunFCFullAccessAliyunMNSReadOnlyAccess【查看消息服务(MNS)的权限】、AliyunEventBridgeReadOnlyAccess【事件总线(EventBridge)的权限】、AliyunMQReadOnlyAccess【消息队列(MQ)的权限】、AliyunFCInvocationAccess【调用函数权限】

最小权限

系统策略

  • 如果配置了 mns 相关 AliyunMNSReadOnlyAccess
  • 如果配置了 EventBridge 相关 AliyunEventBridgeReadOnlyAccess
  • 如果配置了 MQ 相关 AliyunMQReadOnlyAccess

自定义策略

{
  "Version": "1",
  "Statement": [
    {
      "Action": "fc:*Service",
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": ["fc:GetFunction", "fc:CreateFunction", "fc:UpdateFunction"],
      "Effect": "Allow",
      "Resource": "acs:fc:<region>:<account-id>:services/unit-deploy-service/functions/*"
    },
    {
      "Action": [
        "fc:InvokeFunction",
        "fc:GetFunctionAsyncInvokeConfig",
        "fc:DeleteFunctionAsyncInvokeConfig",
        "fc:PutFunctionAsyncInvokeConfig"
      ],
      "Effect": "Allow",
      "Resource": "acs:fc:<region>:<account-id>:services/unit-deploy-service.*/functions/*"
    },
    {
      "Action": "ram:PassRole",
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

destination

参数名 必填 类型 参数描述
onSuccess False String 异步调用成功的目标服务
onFailure False String 异步调用失败的目标服务