Skip to content

customDomains 字段

参数名 必填 类型 参数描述
domainName True String 域名,如果是 auto 取值,系统则会默认分配域名
protocol True String 协议,取值:HTTP, HTTP,HTTPS
routeConfigs True List<Struct> 路由
certConfig False Struct 域名证书
certId False Number 域名证书 ID
tlsConfig False Struct TLS 协议, 注:目前仅支持配置和修改,不支持删除此配置
wafConfig False Struct Web 应用防火墙配置信息

参考案例:

customDomains:
  - domainName: auto
    protocol: HTTP
    wafConfig:
      enableWAF: true
    routeConfigs:
      - path: /*
        serviceName: unit-deploy-service
        functionName: event-function
        qualifier: LATEST
        rewriteConfig:
          equalRules:
            - match: /equalRules
              replacement: /xxxx
          regexRules:
            - match: ^/old/[a-z]+/
              replacement: /xxxx
          wildcardRules:
            - match: /api/*
              replacement: /$1

⚠️ 注意:如果域名配置为auto,系统会默认分配测试域名,该域名仅供测试使用,不对其稳定性等做保证,Serverless Devs FC 组件在日后有权对该域名进行回收等处理,如是线上业务,生产需求业务,强烈建议绑定自己的自定义域名。

certConfig

参数名 必填 类型 参数描述
certName True String 证书名称
privateKey True String 表示私钥,内容仅支持 PEM 格式
certificate True String 表示证书,内容仅支持 PEM 格式

通过配置 certId 获取证书内容

当没有配置 certConfig,可以通过 certId 获取配置。当填写 certId 时,会调用阿里云数字证书管理服务的接口获取配置,所以需要有获取证书详情的权限。 参考案例:

customDomains:
    - domainName: test.com
      protocol: HTTP,HTTPS
      certId: 123456
      routeConfigs:
        - path: /*

通过配置 certConfig 获取证书内容

配置 certConfig 时,certificate 和 privateKey 的内容支持多种方式方式获取,参考案例:

直接填写文件内容

customDomains:
  - domainName: test.com
    protocol: HTTP,HTTPS
    routeConfigs:
      - path: /*
    certConfig:
      certName: certName
      certificate: '-----BEGIN CERTIFICATE----\n certificate content \n----END CERTIFICATE-----'
      privateKey: '-----BEGIN RSA PRIVATE KEY----\n privateKey content \n----END RSA PRIVATE KEY-----'

本地文件路径

customDomains:
  - domainName: test.com
    protocol: HTTP,HTTPS
    routeConfigs:
      - path: /*
    certConfig:
      certName: certName
      certificate: ./localpath/certificate.pem
      privateKey: ./localpath/privateKey.pem

能公网直接访问的http 或者 https地址

customDomains:
  - domainName: test.com
    protocol: HTTP,HTTPS
    routeConfigs:
      - path: /*
    certConfig:
      certName: certName
      certificate: https://oss.abc.com/certificate
      privateKey: http://oss.abc.com/privateKey

OSS地址,格式 oss://{region}/{bucketName}/{objectName}, 但是需要子账号获取oss文件的权限

customDomains:
  - domainName: test.com
    protocol: HTTP,HTTPS
    routeConfigs:
      - path: /*
    certConfig:
      certName: certName
      certificate: oss://cn-hangzhou/bucketName/certificate.pem
      privateKey: oss://cn-hangzhou/bucketName/privateKey.pem

tlsConfig

参数名 必填 类型 参数描述
minVersion True String TLS 协议版本,取值:TLSv1.0TLSv1.1TLSv1.2
maxVersion False String TLS 协议版本,取值:TLSv1.0TLSv1.1TLSv1.2
cipherSuites True List<String> 加密套件

wafConfig

参数名 必填 类型 参数描述
enableWAF False Boolean 是否开启 Web 应用防火墙

routeConfigs

参数名 必填 类型 参数描述
path True String 路径
serviceName False String 服务名
functionName False String 函数名
qualifier False String 服务的版本
rewriteConfig False Struct URI 重写配置
methods False List<String> 支持的请求方法列表,支持:HEAD、DELETE、POST、GET、OPTIONS、PUT、PATCH。默认支持GET、POST、PUT、DELETE

rewriteConfig

参数名 必填 类型 参数描述
equalRules False List<Struct> 完全匹配规则
wildcardRules False List<Struct> 通配符匹配规则
regexRules False List<Struct> 正则匹配规则
rewriteConfigRules
参数名 必填 类型 参数描述
match True String 匹配规则
replacement True String 替换规则

权限配置相关

子账号需要的权限

最大权限

系统策略:AliyunFCFullAccess

最小权限

服务和函数权限较多的原因:domainNameauto,需要创建 http 函数作为一个辅助函数,使用完之后会进行删除

{
  'Statement':
    [
      {
        'Action': ['fc:DeleteService', 'fc:UpdateService', 'fc:CreateService'],
        'Effect': 'Allow',
        'Resource': 'acs:fc:<region>:<account-id>:services/*',
      },
      {
        'Action': ['fc:DeleteFunction', 'fc:CreateFunction', 'fc:UpdateFunction'],
        'Effect': 'Allow',
        'Resource': 'acs:fc:<region>:<account-id>:services/*/functions/*',
      },
      {
        'Action': ['fc:DeleteTrigger', 'fc:UpdateTrigger', 'fc:CreateTrigger'],
        'Effect': 'Allow',
        'Resource': 'acs:fc:<region>:<account-id>:services/*/functions/*/triggers/*',
      },
      { 'Action': 'ram:PassRole', 'Effect': 'Allow', 'Resource': '*' },
      {
        'Action': ['fc:GetCustomDomain', 'fc:UpdateCustomDomain', 'fc:CreateCustomDomain'],
        'Resource': 'acs:fc:<region>:<account-id>:custom-domains/*',
        'Effect': 'Allow',
      },
    ],
  'Version': '1',
}