Skip to content

Latest commit

 

History

History
854 lines (657 loc) · 31.5 KB

2018-04-03-zh-cn.md

File metadata and controls

854 lines (657 loc) · 31.5 KB

Serverless Application Model

版本 2018-04-03

本文件中的 “一定”,“不一定”,“必填”,“将要”,“最好不要”,“应该”,“不应该”,“推荐”,“可能”,和 “可选” 按照 RFC 2119 中的描述进行解释。

Serverless 的 Fun 是根据 MIT许可证 授权的。

介绍

Fun 是用于在阿里云上定义 serverless 应用的模型。

Serverless 应用是由事件触发功能组成的应用。一个典型的 serverless 应用由一个或多个由诸如向 阿里云 OSS 上传对象,在 阿里云 OTS 上执行数据操作以及 API 操作等事件触发的阿里云函数计算组成。这些函数可以独立使用。也可以利用其它资源,例如阿里云 OTS 的表和 OSS 的 buckets。最基本的 serverless 应用可以只有一个函数。

规范

格式

阿里云 Fun 用通过 YAML 格式的模板文件来描述 serverless 应用。

模板文件必须在文档根节点中包含一个值为 Aliyun::Serverless-2018-04-03Transform 部分。

示例:阿里云 Fun 模板

ROSTemplateFormatVersion: '2015-09-01'
Transform: 'Aliyun::Serverless-2018-04-03'
Resources:
  MyService: # service name
    Type: 'Aliyun::Serverless::Service'
    Properties:
      Policies:
        - AliyunFCReadOnlyAccess # Managed Policy
        - Version: '1' # Policy Document
          Statement:
            - Effect: Allow
              Action:
                - oss:GetObject
                - oss:GetObjectACL
              Resource: '*'
    MyFunction: # function name
      Type: 'Aliyun::Serverless::Function'
      Properties:
        Handler: index.handler
        Runtime: nodejs6
        CodeUri: './'
      Events:
        http-test: # trigger name
          Type: HTTP # http trigger
          Properties:
              AuthType: ANONYMOUS
              Methods: ['GET', 'POST', 'PUT']

阿里云 Fun 中的所有属性名称都区分大小写

Resource 类型

Aliyun::Serverless::Service

创建 FC 服务。服务是一个函数组,绑定函数公共属性,如 RAM 执行角色、日志服务。

属性
属性名称 类型 描述
Role string 使用一个 RAM 角色的 ARN 为函数指定执行角色。 如果忽略,将为函数创建一个默认的角色
Policies string | string 列表 | RAM policy 文档对象 | RAM policy 文档对象 列表 函数需要的阿里云管理的 RAM policies 或 RAM policy 文档的名称,将会被附加到该函数的默认角色上。如果设置了 Role 属性,则该属性会被忽略。
InternetAccess boolean 表示此服务是否可以访问公网。
VpcConfig Vpc 配置对象 允许函数访问 vpc 内的服务。
LogConfig Log 配置对象 允许函数执行的日志存储在日志服务中。
NasConfig Nas 配置对象 允许函数访问 nas 服务。
TracingConfig Tracing 配置 链路追踪集成。可选值为:Enable、Disable。
Description string 服务的描述。
Aliyun::Serverless::Function

创建函数以及触发该函数的事件源。函数是服务的子节点。

属性
属性名称 类型 描述
Handler string 必填。 处理函数的调用入口。
Runtime string 必填。 运行时环境。可选值为:nodejs6、nodejs8、nodejs10、nodejs12、python2.7、python3、java8、java11、php7.2、dotnetcore2.1、custom、custom-container。
CodeUri string 必填。 代码位置。支持 file、dir、zip、oss-bucket 等形式,更多信息参考
Initializer string 初始化函数的调用入口。
Description string 函数的描述。
MemorySize integer 每次函数执行分配的内存大小,单位是 MB,默认为 128(MB)。
Timeout integer 处理函数在被终止之前可以运行的最长时间,单位是秒,默认为 3 秒。
InitializationTimeout integer 初始化函数在被终止之前可以运行的最长时间,单位是秒,默认为 3 秒。
EnvironmentVariables 环境变量对象 为函数配置环境变量
InstanceConcurrency integer 为函数设置一个实例并发度 (最小为 1,最大为 100),表示单个函数实例可以同时处理多少个请求。更多信息参考
Events 事件源对象 用于定义触发此函数的事件。
InstanceType string 函数实例类型。可选值为:e1、c1。
CAPort integer 监听端口。
CustomContainerConfig 自定义容器配置 定义引用镜像。
AsyncConfiguration 异步调用配置 异步调用。
InstanceLifecycleConfig 扩展函数配置 扩展函数配置
示例:Aliyun::Serverless::Service 与 Aliyun::Serverless::Function
MyService: # service name
    Type: 'Aliyun::Serverless::Service'
    MyFunction: # function name
      Type: 'Aliyun::Serverless::Function'
      Properties:
        Handler: index.handler
        Runtime: nodejs6
        CodeUri: './' 
        Description: Nodejs Http Trigger Test
        MemorySize: 1024
        Timeout: 15

Aliyun::Serverless::CustomDomain

创建自定义域名。自定义域名是函数计算的一个功能,可以通过自定义域名调用函数执行。

属性
属性名称 类型 描述
Protocol string 自定义域名支持的协议类型。可选值为:HTTPHTTP,HTTPS(英文逗号)。
RouteConfig RouteConfig 对象 路由表,配置路径和函数的映射关系。
CertConfig CertConfig 对象 https 证书信息(仅当 ProtocolHTTP,HTTPS 时配置)
示例:Aliyun::Serverless::CustomDomain

示例一,ProtocolHTTP 时:

abc.com: # domain name
  Type: 'Aliyun::Serverless::CustomDomain'
  Properties:
    Protocol: HTTP
    RouteConfig:
      Routes: 
        '/a':
          ServiceName: serviceA
          FunctionName: functionA
        '/b':
          ServiceName: serviceB
          FunctionName: functionB

示例二,ProtocolHTTP,HTTPS 时:

abc.com: # domain name
     Type: 'Aliyun::Serverless::CustomDomain'
     Properties:
       Protocol: HTTP,HTTPS
       CertConfig:
         CertName: 'CertName'
         PrivateKey: './certificates/privateKey.pem'
         Certificate: './certificates/certificate.pem'
       RouteConfig:
         Routes:
           '/a':
             ServiceName: serviceA
             FunctionName: functionA
           '/b':
             ServiceName: serviceB
             FunctionName: functionB

Aliyun::Serverless::Api

创建可通过 HTTPS 端点调用的阿里云 API 网关资源和方法的集合。

属性
属性名称 类型 描述
Name string API 网关 RestApi 资源的名称。
StageName string 必填。 阶段的名称,API网关用作调用统一资源标识符(URI)中的第一个路径段。
DefinitionUri string 描述 API 的 Swagger 文档地址。必须指定 DefinitionUriDefinitionBody 中的任何一个。
DefinitionBody YAML 对象 描述您的 API 的 Swagger 规范。必须指定 DefinitionUriDefinitionBody 中的任何一个。

DefinitionBody 可以参考: https://github.com/aliyun/fun/tree/master/examples/api-gateway/template.yml

示例:Aliyun::Serverless::Api
StageName: prod
DefinitionUri: swagger.yml

Aliyun::Serverless::TableStore

Aliyun::Serverless::TableStore::Table 资源创建 TableStore(OTS)的实例。

属性
属性名称 类型 描述
ClusterType string 必填。 实例规格。可选值有:HYBRID、SSD。分别表示容量性实例、高性能实例。
Description string 必填。 实例注释。
Aliyun::Serverless::TableStore::Table

Aliyun::Serverless::TableStore::Table 资源使用主键列表创建 TableStore(OTS)表。只有通过主键访问数据时才有用。

属性
属性名称 类型 描述
PrimaryKeyList 主键列表 要用作表的主键的列表项的属性名称和类型。一旦创建,无法修改。

示例:Aliyun::Serverless::TableStore

mytablestore: # tablestore name
    Type: 'Aliyun::Serverless::TableStore'
    Properties:
      ClusterType: HYBRID
      Description: just for fun test
    mytable: # table name
      Type: 'Aliyun::Serverless::TableStore::Table'
      Properties:
          PrimaryKeyList:
            - Name: uid
              Type: STRING

Aliyun::Serverless::Log

Aliyun::Serverless::Log 资源创建日志服务的 项目(Project)

属性
属性名称 类型 描述
Description string 必填。 实例注释。
Aliyun::Serverless::Log::Logstore

Aliyun::Serverless::Log::Logstore 资源用于创建项目(Project)下的 日志库(Logstore)

属性
属性名称 类型 描述
TTL integer 数据的保存时间,单位为天,范围 1~3600。
shardCount integer Shard 个数,单位为个,范围为 1~100。

示例:Aliyun::Serverless::Log

test-log-project:
  Type: 'Aliyun::Serverless::Log'
  Properties:
    Description: 'just test log'
  test-log-store:
    Type: 'Aliyun::Serverless::Log::Logstore'
    Properties:
      TTL: 10
      ShardCount: 1

Aliyun::Serverless::MNSTopic

创建消息服务 MNS 中的 topic

属性
属性名称 类型 描述
Region string 必填。 创建 topic 所在的 region。
MaximumMessageSize integer 可选。 发送到该 Topic 的消息体最大长度,单位为 Byte, 默认值为 65536
LoggingEnabled boolean 可选。 是否开启日志管理功能, 默认值为 false
示例:Aliyun::Serverless::MNSTopic
test-topic:
  Type: 'Aliyun::Serverless::MNSTopic'
  Properties:
    Region: ap-southeast-2
    MaximumMessageSize: 2048
    LoggingEnabled: false

事件源类型

Timer

描述类型为定时触发器的对象。

属性
属性名称 类型 描述
CronExpression string 必填。 函数被触发的时间,支持两种设置:@every、cron 表达式。
Payload string 代表触发器事件本身的输入内容,用户可以自定义。
Enable boolean 是否启用定时触发器。
Qualifier string 可选。 service 版本,例如: "LATEST"。
示例:Timer 事件源对象
Type: Timer
Properties:
    CronExpression: '0 0 8 * * *'
    Enable: true
    Payload: 'awesome-fc'

HTTP

描述类型为 HTTP 触发器 的对象。

属性
属性名称 类型 描述
AuthType string 必填。 鉴权类型,可选值:ANONYMOUS、FUNCTION。
Methods array 必填。 HTTP 触发器支持的访问方法。可选值为:GET、POST、PUT、DELETE、HEAD。
InvocationRole string 可选。 使用一个 RAM 角色的 ARN 为函数指定执行角色,事件源会使用该角色触发函数执行,请确保该角色有调用函数的权限。ARN 的形式如下:acs:ram::1234567890:role/fc-invoke-test
Qualifier string 可选。 service 版本,例如: "LATEST"。
示例:HTTP 事件源对象
http-trigger-test: # trigger name
    Type: HTTP # trigger type
    Properties:
        AuthType: ANONYMOUS
        Methods: ['GET', 'POST', 'PUT']

Log

描述类型为 Log 触发器 的对象。

属性
属性名称 类型 描述
SourceConfig object 必填。 数据源的 Logstore 名称。触发器会定时从该 Logstore 订阅数据到函数计算。
JobConfig object 必填。 包含两个可配置属性,一个是 MaxRetryTime,表示日志服务触发函数执行时,如果遇到错误,所允许的最大尝试次数。另一个是 TriggerInterval,表示日志服务触发函数执行的间隔。
LogConfig object 必填。 包含三个可配置属性。第一个是 Project,表示日志服务 Project 名称。第二个是 Logstore,表示触发函数执行时,产生的日志会记录到该 Logstore。第三个是可选属性 FunctionParameter,它本身也是一个 object,当事件触发时,会连同它的内容一起发送给函数。
FunctionParameter object 可选。 日志服务将该配置内容作为函数 event, 当事件触发时,会连同它的内容一起发送给函数。默认值为空({})。
Enable boolean 表示是否启用该触发器。
InvocationRole string 可选。 使用一个 RAM 角色的 ARN 为函数指定执行角色,事件源会使用该角色触发函数执行,请确保该角色有调用函数的权限。ARN 的形式如下:acs:ram::1234567890:role/fc-invoke-test
Qualifier string 可选。 service 版本,例如: "LATEST"。
示例:Log 事件源对象
Type: Log
Properties:
    SourceConfig:
        Logstore: logstore1
    JobConfig:
        MaxRetryTime: 1
        TriggerInterval: 30
    LogConfig:
        Project: testlog
        Logstore: logstore2
    Enable: true

RDS

描述类型为 RDS 触发器 的对象。

属性
属性名称 类型 描述
InstanceId string 必填。 RDS 实例 ID
SubscriptionObjects array 必填。 订阅对象,当前支持到表级别,只有这些表的更新才会触发函数执行, 比如参数为["db1.table1", "db2.table2"]
Retry string 可选。 重试次数,可选值:[0,3], 默认值为3。
Concurrency string 可选。 调用并发量,可选值:[1,5], 默认值为1
EventFormat string 可选。 event格式,可选值:json, protobuf, 默认值为 protobuf。
InvocationRole string 可选。 使用一个 RAM 角色的 ARN 为函数指定执行角色,事件源会使用该角色触发函数执行,请确保该角色有调用函数的权限。ARN 的形式如下:acs:ram::1234567890:role/fc-invoke-test
Qualifier string 可选。 service 版本,例如: "LATEST"。
示例:RDS 事件源对象
rds-trigger-test: # trigger name
    Type: RDS # trigger type
    Properties:
        InstanceId: rm-12345799xyz
        SubscriptionObjects: 
          - db1.table1
        Retry: 2
        Concurrency: 1
        EventFormat: json

MNSTopic

描述类型为 MNSTopic 触发器 的对象。

属性
属性名称 类型 描述
TopicName string 必填。 mns topic的名字
Region string 可选。 mns topic 所在的 region,如果不填,默认为和函数一样的 region
NotifyContentFormat string 可选。 推送给函数入参 event 的格式,可选值:STREAM, JSON, 默认值为: STREAM
NotifyStrategy string 可选。 调用函数的重试策略,可选值:BACKOFF_RETRY, EXPONENTIAL_DECAY_RETRY, 默认值为: BACKOFF_RETRY, 详情参考 NotifyStrategy
FilterTag string 可选。 描述了该订阅中消息过滤的标签(标签一致的消息才会被推送),不超过 16 个字符的字符串,默认不进行消息过滤,即默认不填写该字段
InvocationRole string 可选。 使用一个 RAM 角色的 ARN 为函数指定执行角色,事件源会使用该角色触发函数执行,请确保该角色有调用函数的权限。ARN 的形式如下:acs:ram::1234567890:role/fc-invoke-test
Qualifier string 可选。 service 版本,例如: "LATEST"。
示例:MNSTopic 事件源对象
mns-topic-trigger-test: # trigger name
    Type: MNSTopic # trigger type
    Properties:
        TopicName: test-topic
        Region: cn-shanghai
        NotifyContentFormat: JSON
        NotifyStrategy: BACKOFF_RETRY

TableStore

描述类型为 TableStore 触发器 的对象。

属性
属性名称 类型 描述
InstanceName string 必填。 表格存储实例的名字
TableName string 必填。 实例中的表名
InvocationRole string 可选。 使用一个 RAM 角色的 ARN 为函数指定执行角色,事件源会使用该角色触发函数执行,请确保该角色有调用函数的权限。ARN 的形式如下:acs:ram::1234567890:role/fc-invoke-test
Qualifier string 可选。 service 版本,例如: "LATEST"。
示例:TableStore 事件源对象
tablestore-trigger-test: # trigger name
    Type: TableStore # trigger type
    Properties:
        InstanceName: test-inst
        TableName: test-tbl

OSS

描述类型为 OSS 触发器 的对象。

属性
属性名称 类型 描述
Events array 必填。 为 OSS 端触发函数执行的事件,比如参数为 ["oss:ObjectCreated:PutObject", "oss:ObjectCreated:PutSymlink"] 等...
BucketName stirng 必填。 为 OSS 中对应的 bucket 名称。可参照OSS 示例
Filter object 必填。 为 OSS 对象过滤参数,满足过滤条件的 OSS 对象才可以触发函数,包含一个配置属性 key,表示过滤器支持过滤的对象键 (key)。
Key OSS Key 对象 必填。 过滤器支持过滤的对象键
InvocationRole string 可选。 使用一个 RAM 角色的 ARN 为函数指定执行角色,事件源会使用该角色触发函数执行,请确保该角色有调用函数的权限。ARN 的形式如下:acs:ram::1234567890:role/fc-invoke-test
Qualifier string 可选。 service 版本,例如: "LATEST"。
示例:OSS 事件源对象
oss-trigger-test: # trigger name
    Type: OSS # trigger type
     Properties:
      BucketName: ossBucketName # oss bucket name
      Events:
        - oss:ObjectCreated:*
        - oss:ObjectRemoved:DeleteObject
      Filter: 
        Key:
          Prefix: source/
          Suffix: .png

CDN

描述类型为 CDN 触发器 的对象。

属性
属性名称 类型 描述
EventName stirng 必填。 为 CDN 端触发函数执行的事件,一经创建不能更改
EventVersion stirng 必填。 为 CDN 端触发函数执行事件的版本,一经创建不能更改
Notes stirng 必填。 备注信息
Filter CDN Filter 对象 必填。 过滤器(至少需要一个过滤器)
InvocationRole string 可选。 使用一个 RAM 角色的 ARN 为函数指定执行角色,事件源会使用该角色触发函数执行,请确保该角色有调用函数的权限。ARN 的形式如下:acs:ram::1234567890:role/fc-invoke-test
Qualifier string 可选。 service 版本,例如: "LATEST"。
示例:CDN 事件源对象
cdn-trigger-name: # trigger name
    Type: CDN # trigger type
    Properties:
      EventName: LogFileCreated
      EventVersion: '1.0.0'
      Notes: cdn events trigger test
      Filter: 
        Domain: ['www.taobao.com','www.tmall.com']

Property 类型

事件源对象

描述触发函数的事件源的对象。

属性
属性名称 类型 描述
Type string 必填。 事件类型。 事件源类型包括 ApiTimerLog 等。有关所有类型的更多信息, 请参阅 事件源类型
Properties * 必填。 描述此事件映射属性的对象。必须符合定义的 类型 。有关所有类型的更多信息,请参阅 事件源类型
示例:事件源对象
Type: Timer
Properties:
    CronExpression: '0 0 8 * * *'
    Enable: true
    Payload: 'awesome-fc

主键列表

描述主键属性的对象列表。

属性
属性名称 类型 描述
Name string 主键的属性名称。默认为id
Type string 主键的属性类型。必须是 StringNumberBinary 中的一个。
示例:主键列表
Properties:
  PrimaryKeyList:
    - Name: id
      Type: String

预配吞吐量对象

属性
属性名称 类型 描述
ReadCapacityUnits number 在阿里云表格存储(OTS)平衡负载之前,为指定的表设置每秒所需项目的最少一致读取次数(最大大小为 4KB)。
WriteCapacityUnits number 在阿里云表格存储(OTS)平衡负载之前,为指定表设置每秒所需项目的最小一致写入次数(最大大小为 4KB)。
示例:预配吞吐量对象
Properties:
  ProvisionedThroughput:
    ReadCapacityUnits: 5
    WriteCapacityUnits: 5

Vpc 配置对象

Vpc 配置对象包含的属性包括: VpcIdVSwitchIds 以及 SecurityGroupId 属性。它们所代表的含义参考

示例:

VpcConfig:
    VpcId: 'vpc-j6cfu2g6tslzekh8grfmk'
    VSwitchIds: [ 'vsw-j6chkgsg9naj6gx49espd' ]
    SecurityGroupId: 'sg-j6ceitqs6ljyssm1apom'

Log 配置对象

Log 配置对象用来指定函数执行的日志将要存储到的日志服务。

Log 配置对象可配置的属性包括:ProjectLogstoreEnableRequestMetrics。其中 ProjectLogstore 的概念与日志服务中的概念一致。更多信息参考

示例:

LogConfig:
  Project: localtestlog
  Logstore: localteststore
  EnableRequestMetrics: true/false

Nas 配置对象

Nas 配置对象用来指定函数可以访问的 Nas 共享的文件系统。

Nas 配置对象可配置的属性包括:UserIdGroupIdMountPoints

其中 MountPoints 是个对象数组,每个对象包含了 ServerAddr 以及 MountDir 属性。它们代表的含义可以参考

示例:

NasConfig:
  UserId: 10003
  GroupId: 10003
  MountPoints:
    - ServerAddr: '012194b28f-xxxxx.cn-hangzhou.nas.aliyuncs.com:/'
      MountDir: '/mnt/test'

Nas 配置对象支持 Auto 可选值,使用该值可以简化 NasConfigVpcConfig 以及 Policies 配置。

示例:

Properties:
  Policies:
    - AliyunECSNetworkInterfaceManagementAccess
  VpcConfig:
    VpcId: 'vpc-j6cfu2g6tslzekh8grfmk'
    VSwitchIds: [ 'vsw-j6chkgsg9naj6gx49espd' ]
    SecurityGroupId: 'sg-j6ceitqs6ljyssm1apom'
  NasConfig:
    UserId: 10003
    GroupId: 10003
    MountPoints:
      - ServerAddr: '012194b28f-xxxxx.cn-hangzhou.nas.aliyuncs.com:/'
        MountDir: '/mnt/test'

以上配置可简化为:

示例:

Properties:
  NasConfig: Auto

更多信息参考

环境变量对象

环境变量可以配置一系列的键值对。

示例:

EnvironmentVariables:
    'MYSQL_USER': 'root'
    'MYSQL_PASS': 'pass'

CodeUri

CodeUri 用来指定代码存储的位置,它可以用来指定:

文件(file):CodeUri: hello.js 目录(dir):CodeUri: ./ 压缩包(zip):CodeUri: hello.zip oss 文件:CodeUri: 'oss://my-fc-testt/2018/helloworld.zip'

其中,当指定为 oss 文件时,形式为 CodeUri: 'oss://bucket-name/filepath'

RouteConfig 对象

RouteConfig 配置对象可配置的属性包括:Routes。

Routes 是 RouteConfig 对象的一个元素,表示路由表的配置,其值为 pathConfig 对象数组,用于设置自定义域名中路径与函数的映射关系。

示例:

  Routes: # pathConfig 数组
    '/a': # path
      ServiceName: serviceA
      FunctionName: functionA
      Qualifier: Prod # 版本(可选)

自定义容器配置

容器配置对象包含的属性包括: Image、Command、 Args 以及 AccelerationType 属性 示例:

CustomContainerConfig:
    Image: 'registry-vpc.cn-shenzhen.aliyuncs.com/fc-demo-90/nodejs-express:v0.2'
    Command: '["node"]'
    Args: '["server.js"]'
    AccelerationType: 'Default'
属性名称 类型 描述
Image string 必填。 镜像地址。
Command string 可选。 容器启动命令。
Args string 可选。 容器启动命令参数。
AccelerationType string 可选。 是否开启镜像加速功能,Default 表示开启,None 或不填表示关闭。

异步调用配置

异步调用配置对象包括:Destination、MaxAsyncEventAgeInSeconds、MaxAsyncRetryAttempts。

AsyncConfiguration:
    Destination:
        OnSuccess: acs:mns:::/queues/destination-demo/message
        OnFailure: acs:mns:::/queues/destination-demo/message
    MaxAsyncEventAgeInSeconds: 20
    MaxAsyncRetryAttempts: 3

扩展函数配置

扩展函数配置对象包括:PreFreeze、PreStop。

InstanceLifecycleConfig:
  PreFreeze:
    Handler: index.PreFreeze
    Timeout: 60
  PreStop:
    Handler: index.PreStop
    Timeout: 60

CertConfig

CertConfig 用于描述一组 https 证书信息。Certificate 表示证书,CertName 表示证书名称,PrivateKey 表示私钥,其中证书和私钥按照 PEM 编码格式填写。

示例 1:

CertConfig:
  CertName: 'CertName'
  PrivateKey: './certificates/privateKey.pem'
  Certificate: './certificates/certificate.pem'

示例 2:

CertConfig:
  CertName: 'CertName'
  PrivateKey: |
    -----BEGIN RSA PRIVATE KEY-----
    MIIEowIBAAKCAQEA8WR/RbokaRz77bqoQE2aNYpZ/okMud8UFUniVfi6Pt2DdZ7z
    yusWRt3flx15CiapZbs/fxOgwFI9cwaGZEvuKBnkqzVNJojV3ASHJRwmvjsm6NzO
    OFYsLDy2pfgiTlBQHyjXFWIg2k/0Ype2VnyBMOzZq31JQfYgEklNj2Yhkz5qcx9A
    uSXJ4cewiOZ0bhpqU34sqvCToQXn6VrhPsJxwk8N5R6h1u5fpmAaggZ0JsxSz/cK
    1gZYtlHjLRNcbD4oxeRnms8TeBIjgSjmr1qH9Rx6OwVZjQ42WG+XDXp7yiktP8vK
    UvuvZRPS8irTKWq2edujRBra019rJkfb4lLgkQIDAQABAoIBABB5tHoU11FZShSS
    rdMduM24sKW/wt+Yyy0cytblUAjkY4mOnMMXwoB5uj39I/q+YsdvvUi2FT2rH0iP
    hHKqAAo6ojHRRH/BzR7kLDkrL7XCIci48VZFA2TNjAXN5sGDl8RYrD1oYiekV2C3
    TBmhC8xEDiM3PN3Ep7G30RRdeyMqeHfzWtEIs0V/E/Dqkukcj3RYVGd12yVlmjyi
    cP5th29AgS0prNRfHv2+0G2L73jiM5WYqJK0tzaNg4V4nZBebyCtv+vCOQC+jjda
    4DHh0YIeRLrfLqT04+dqE1zbKIPOCo6GoiNGnB92GXiyZliJGDjWSM9hbOML4pur
    oXOKXgECgYEA+1DnI2N5Rz/rBKJTmoERPUygSAAmF66M4zvqqlIC1QUle0L/O1mo
    02tQev6vvDKYImDt5vFrYRs4NB9UVTdMeCZXXaskugrwyXhtwb/cdMJ+2/dFL9lT
    nRiKKITzApOhomx4XP3H/2uA7MsOhd53E8Zh9zTURDB7ZXDUsWMaiCECgYEA9eQ/
    KuBgFnO2ePba+U6lrH0QVEg42byEXwigtijeo9knB7E9j+w/ddxLplw6cdrPuEHs
    OmvxcyetrqdoNGvUeRn6UXKMJPI4ec2a1XQn+az9uEwckEEeiL/PwOT8m1NXu44Q
    Xr5oxrEpicqha/kVlpJdtKnnZVURXrr83CLbinECgYAZTikn+BEzKm14tvuiGBLr
    UDbnaRRs2AeZrePQKJfeaTk/8xwOFtYYC7s71z9MvO9yrr3lvjNowLvlC66LMhlC
    E+JCLURycz2Rm825b588JoVtkrVlvwVbUShAMjrh7Ime+Dsaafdkcae2sC+TLTZi
    SFx+7tPc1eDm8viHsAnw4QKBgQDgWgUYheimE6Xl8LYSyqN3IhUIEW1tnQfZ/fFE
    wz2Amd12s0zMSG4Oh5WukG/y+gaUw/FZzKtculNKDAyT597RL9apAa7E9wx4dhRT
    tcvTjvdgdHGLXR8S/o/8G/IvdneR9SkSiQDoaTTROETYU0hTPfCpqmwqlNdoa4vS
    /yr4wQKBgEQPD42mSlRDEH96DwTqEQsXQTs/BtJFvMzozxcHIPa1byxWzDQk0A41
    pc9Hyu4AtN0rTyUk6iGGllht+u20pSeUMQpGNiAc599pK93JjlGGj/h61xoO3r8/
    B7rxEVPGms9nM/Ztl0EWvr9vvAckZb8ToknxGIh+jNfLAQhykdN0
    -----END RSA PRIVATE KEY-----

  Certificate: |
    -----BEGIN CERTIFICATE-----
    MIICxjCCAa4CCQDCGoU6hDAZXjANBgkqhkiG9w0BAQsFADAlMSMwIQYJKoZIhvcN
    AQkBFhR4aWF5dWxlMTQ4QGdtYWlsLmNvbTAeFw0xOTA1MzEwMzI2NDdaFw0yOTA1
    MjgwMzI2NDdaMCUxIzAhBgkqhkiG9w0BCQEWFHhpYXl1bGUxNDhAZ21haWwuY29t
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8WR/RbokaRz77bqoQE2a
    NYpZ/okMud8UFUniVfi6Pt2DdZ7zyusWRt3flx15CiapZbs/fxOgwFI9cwaGZEvu
    KBnkqzVNJojV3ASHJRwmvjsm6NzOOFYsLDy2pfgiTlBQHyjXFWIg2k/0Ype2VnyB
    MOzZq31JQfYgEklNj2Yhkz5qcx9AuSXJ4cewiOZ0bhpqU34sqvCToQXn6VrhPsJx
    wk8N5R6h1u5fpmAaggZ0JsxSz/cK1gZYtlHjLRNcbD4oxeRnms8TeBIjgSjmr1qH
    9Rx6OwVZjQ42WG+XDXp7yiktP8vKUvuvZRPS8irTKWq2edujRBra019rJkfb4lLg
    kQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQB1rRYwP7doPVupFm985A0H2lLLJIZ8
    1bWWaN+knWpW0KgIZACGCDzqgHQG+rB95DDHBUvjF/DI/EZjUxlfaOtddh5bjibZ
    2I+A+DeIDGaD3/Bc7fAYRImPq1gN4SlusFCquEfe9nILoCbsss8rq1FdYr3tRzTZ
    JJpe9Qs2TXk6kczSfaJTft5zxjiUV5NvQyqU3K8G2dxl68c6wC7LKpeQbT3ApWw1
    VZfBb9upP/FQc2EK8OkS/M5h4aGBq9YroYxvuKnfM/FUocJRaN9uKwH08D5WfXlq
    rbocmNuL4ev/pJ0H8AFO4usquEjGrhLJLnxTblFB2/dmlc4JJOMUYbfR
    -----END CERTIFICATE-----

OSS Key 配置对象

Key 配置对象的属性包括: PrefixSuffix 属性。它们所代表的含义分别为:匹配前缀和匹配后缀。

示例:

Key:
  Prefix: source/
  Suffix: .png

CDN Filter 配置对象

Filter 配置对象为 CDN 过滤参数,满足过滤条件的才可以触发函数。Filter 对象可配置的属性目前只包括:Domain, Domain 是个字符串数组且必填,代表过滤参数值的集合。

示例:

Filter:
  Domain: ['www.taobao.com','www.tmall.com']

默认 Role

默认 role 会被生成的场景包括:指定了 policies 的时候或者服务配置了 vpc、nas 等明确需要特定权限的属性时候。

这样设计的原因是:

  1. 因为生成 role 用户需要为子用户分配一个很大的权限,非必要场景下,我们尽可能不去生成这个默认 role,尽可能避免用户的子用户权限不够情况。
  2. 一般这个 role 的使用场景是用来调用其他云服务的,即使生成了默认的 role,但是没有指定 policies 也是没有意义的,因为不会有相应的权限。
  3. ram 有角色数量的限制。