Schema
参数详情
完整的示例请参考 fc3-domain example
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
region | True | enum | 地域, 支持情况参见函数计算开服地域 |
domainName | True | string | 已在阿里云备案或接入备案的自定义域名名称 |
protocol | True | enum | 域名支持的协议类型: HTTP:仅支持HTTP协议 HTTPS:仅支持HTTPS协议 HTTP,HTTPS:支持HTTP及HTTPS协议 |
routeConfig | True | Struct | 路由表:自定义域名访问时的PATH到Function的映射 |
certConfig | False | Struct | HTTPS证书的信息 |
tlsConfig | False | Struct | TLS配置信息 |
wafConfig | False | Struct | Web应用防火墙配置信息 |
⚠️ 注意:如果域名配置为
auto
,系统会默认分配***.devsapp.net
作为临时测试域名,该域名是 CNCF SandBox 项目 Serverless Devs 社区所提供,仅供学习和测试使用,不可用于任何生产使用;社区会对该域名进行不定期地拨测,并在域名下发 30 天后进行回收,强烈建议您绑定自定义域名以获得更好的使用体验。
certConfig
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
certName | True | String | 证书名称 |
privateKey | True | String | 表示私钥,内容仅支持 PEM 格式 |
certificate | True | String | 表示证书,内容仅支持 PEM 格式 |
certId | False | Number | 域名证书 ID |
certId 和 certName/privateKey/certificate 和这三个参数互斥, 即您有如下两种方式配置 certConfig:
- 仅配置 certId,这个要求证书和函数属于同一个来源账号
- 同时配置certName/privateKey/certificate
通过配置 certConfig 获取证书内容
配置 certConfig 时,certificate 和 privateKey 的内容支持多种方式方式获取,参考案例:
直接填写文件内容
resources:
fc-domain-test:
component: fc3-domain
props:
domainName: test.com
protocol: HTTP,HTTPS
routeConfig:
routes:
- functionName: test
methods:
- GET
path: /a
qualifier: LATEST
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-----'
本地文件路径
resources:
fc-domain-test:
component: fc3-domain
props:
domainName: test.com
protocol: HTTP,HTTPS
routeConfig:
routes:
- functionName: test
methods:
- GET
path: /a
qualifier: LATEST
certConfig:
certName: certName
certificate: ./localpath/certificate.pem
privateKey: ./localpath/privateKey.pem
能公网直接访问的http 或者 https地址
resources:
fc-domain-test:
component: fc3-domain
props:
domainName: test.com
protocol: HTTP,HTTPS
routeConfig:
routes:
- functionName: test
methods:
- GET
path: /a
qualifier: LATEST
certConfig:
certName: certName
certificate: https://oss.abc.com/certificate
privateKey: http://oss.abc.com/privateKey
OSS地址,格式 oss://{region}/{bucketName}/{objectName}
, 但是需要子账号
有获取oss文件
的权限
resources:
fc-domain-test:
component: fc3-domain
props:
domainName: test.com
protocol: HTTP,HTTPS
routeConfig:
routes:
- functionName: test
methods:
- GET
path: /a
qualifier: LATEST
certConfig:
certName: certName
certificate: oss://cn-hangzhou/bucketName/certificate.pem
privateKey: oss://cn-hangzhou/bucketName/privateKey.pem
通过配置 certId 获取证书内容
当没有配置 certConfig,可以通过 certId
获取配置。当填写 certId 时,s 使用配置的 access 去调用阿里云数字证书管理服务的接口获取配置,所以需要有获取证书详情
的权限。
⚠️ 注意:使用 certId 这个参数,证书和函数必须属于同一个阿里云账号
参考案例:
resources:
fc-domain-test:
component: fc3-domain
props:
domainName: test.com
protocol: HTTP,HTTPS
routeConfig:
routes:
- functionName: test
methods:
- GET
path: /a
qualifier: LATEST
certConfig:
certId: 123456
tlsConfig
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
minVersion | True | String | TLS 协议版本,取值:TLSv1.0 、TLSv1.1 、TLSv1.2 |
maxVersion | False | String | TLS 协议版本,取值:TLSv1.0 、TLSv1.1 、TLSv1.2 、TLSv1.3 |
cipherSuites | True | List<String> | 加密套件 |
wafConfig
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
enableWAF | False | Boolean | 是否开启 Web 应用防火墙 |
routeConfig
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
routes | True | List<Struct> | 路由配置列表 |
pathConfig
参数名 | 必填 | 类型 | 参数描述 |
---|---|---|---|
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
最小权限
需要函数权限较多的原因:
domainName
为auto
时,需要创建 http 函数作为一个辅助函数完成阿里云身份认证完成测试域名派发
{
"Statement": [
{
"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"
}