ALIYUN::ApiGateway::Api类型用于创建API。
语法
{
"Type": "ALIYUN::ApiGateway::Api",
"Properties": {
"ErrorCodeSamples": List,
"Description": String,
"ServiceConfig": Map,
"SystemParameters": List,
"ServiceParameters": List,
"OpenIdConnectConfig": Map,
"RequestConfig": Map,
"AuthType": String,
"Visibility": String,
"Tags": List,
"ResultSample": String,
"ResultType": String,
"ApiName": String,
"FailResultSample": String,
"DisableInternet": Boolean,
"ForceNonceCheck": Boolean,
"ConstParameters": List,
"GroupId": String,
"ServiceParametersMap": List,
"RequestParameters": List,
"AppCodeAuthType": String
}
}
属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
ServiceConfig |
Map |
是 |
是 |
网关向后端服务发送API请求的相关配置项。 |
更多信息,请参见ServiceConfig属性。 |
RequestConfig |
Map |
是 |
是 |
Consumer向网关发送API请求的相关配置项。 |
更多信息,请参见RequestConfig属性。 |
Visibility |
String |
是 |
是 |
API是否公开。 |
取值:
|
ResultSample |
String |
是 |
是 |
后端服务返回应答的示例。 |
无 |
ResultType |
String |
是 |
是 |
后端服务返回应答的格式。 |
取值:
- JSON(默认值)
- TEXT
- BINARY
- XML
- PASSTHROUGH
|
ApiName |
String |
是 |
是 |
API名称。 |
长度为4~50个字符。必须以英文字母或汉字开头。可包含英文字母、汉字、数字和下划线(_)。
|
GroupId |
String |
是 |
否 |
API分组编号。 |
无 |
ErrorCodeSamples |
List |
否 |
是 |
后端服务返回的错误码示例。 |
更多信息,请参见ErrorCodeSamples属性。 |
Description |
String |
否 |
是 |
API描述信息。 |
最多支持180个字符。 |
DisableInternet |
Boolean |
否 |
是 |
是否禁止公网调用API。 |
取值:
|
ForceNonceCheck |
Boolean |
否 |
是 |
请求时是否强制检查X-Ca-Nonce。 |
取值:
|
Tags |
List |
否 |
是 |
标签。 |
最多支持添加20个标签。 更多信息,请参见Tags属性。 |
SystemParameters |
List |
否 |
是 |
API的系统参数。 |
更多信息,请参见SystemParameters属性。 |
ServiceParameters |
List |
否 |
是 |
网关向后端服务发送API请求的参数描述。 |
更多信息,请参见ServiceParameters属性。 |
OpenIdConnectConfig |
Map |
否 |
是 |
第三方账号认证OpenID Connect相关配置项。 |
更多信息,请参见OpenIdConnectConfig属性。 |
AuthType |
String |
否 |
是 |
API安全认证类型。 |
取值:
- APP:只允许已授权的App调用。
- ANONYMOUS:允许匿名调用,网关不会对调用者做身份认证,也无法根据用户需求设置流量控制。若所在分组要上架云市场,建议将该API转移至其他分组,或将类型设置为私有,或选择阿里云App认证方式。
- APPOPENID:支持第三方账号认证OpenID Connect,而且只允许已授权的App调用。当设置此项时,参数OpenIdConnectConfig必须指定。
|
ServiceParametersMap |
List |
否 |
是 |
Consumer向网关发送请求的参数和网关向后端服务发送请求的参数的映射关系。 |
更多信息,请参见ServiceParametersMap属性。 |
FailResultSample |
String |
否 |
是 |
后端服务失败返回应答的示例。 |
无 |
RequestParameters |
List |
否 |
是 |
Consumer向网关发送API请求的参数描述。 |
更多信息,请参见RequestParameters属性。 |
ConstParameters |
List |
否 |
是 |
指定API的常量参数。 |
更多信息,请参见ConstParameters属性。 |
AppCodeAuthType |
String |
否 |
是 |
AppCode认证方式。 |
AuthType取值为APP时该参数生效,取值:
- DEFAULT(默认值):随分组设置。
- DISABLE:不允许。
- HEADER:允许AppCode的Header认证。
- HEADER_QUERY:允许AppCode的Header及Query认证。
|
Tags语法
"Tags": [
{
"Key": String,
"Value": String
}
]
Tags属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
Key |
String |
是 |
否 |
标签键。 |
长度为1~128个字符,不能以aliyun 和acs: 开头,不能包含http:// 或者https:// 。 |
Value |
String |
否 |
否 |
标签值。 |
长度为0~128个字符,不能以aliyun 和acs: 开头,不能包含http:// 或者https:// 。 |
ErrorCodeSamples语法
"ErrorCodeSamples": [
{
"Message": String,
"Code": String,
"Description": String
}
]
ErrorCodeSamples属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
Message |
String |
是 |
是 |
错误信息。 |
无 |
Code |
String |
是 |
是 |
错误码。 |
无 |
Description |
String |
否 |
是 |
错误描述。 |
无 |
ServiceConfig语法
"ServiceConfig": {
"ServiceTimeOut": Integer,
"FunctionComputeConfig": Map,
"VpcConfig": Map,
"MockResult": String,
"MockStatusCode": Integer,
"ServiceHttpMethod": String,
"ServiceProtocol": String,
"ServiceVpcEnable": String,
"ServiceAddress": String,
"ContentTypeValue": String,
"MockHeaders": List,
"ContentTypeCatagory": String,
"ServicePath": String,
"Mock": String
}
ServiceConfig属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
FunctionComputeConfig |
Map |
否 |
是 |
后端服务为函数计算。 |
无 更多信息,请参见FunctionComputeConfig属性。 |
MockStatusCode |
Integer |
否 |
是 |
状态码。 |
以兼容HTTP 1.1 Response Status Code的格式返回。 |
MockHeaders |
List |
否 |
是 |
启用Mock时,自定义的Mock响应头相关信息。 |
无 更多信息,请参见MockHeaders属性。 |
ServiceTimeOut |
Integer |
否 |
是 |
后端服务超时时间。 |
单位:毫秒。 |
ServiceAddress |
String |
否 |
是 |
后端服务地址。 |
例如:后端服务完整地址为http://example.com:8080/object/add?key1=value1&key2=value2 ,后端服务地址指http://example.com:8080 。 |
ServicePath |
String |
否 |
是 |
后端服务路径。 |
例如:后端服务完全地址为 http://example.com:8080/object/add?key1=value1&key2=value2 , 后端服务路径指/object/add 。 |
ServiceProtocol |
String |
否 |
是 |
后端服务协议类型。 |
取值:
- HTTP
- HTTPS
- FunctionCompute
|
ServiceVpcEnable |
String |
否 |
是 |
是否使用专有网络。 |
取值:
|
ServiceHttpMethod |
String |
否 |
是 |
调用后端服务HTTP协议时的方法。 |
取值:
- GET(默认值)
- POST
- DELETE
- PUT
- HEAD
- TRACE
- PATCH
- CONNECT
- OPTIONS
- ANY
|
ContentTypeCatagory |
String |
否 |
是 |
调用后端HTTP服务时,ContentType头的取值策略。 |
取值:
- DEFAULT:使用API网关默认值。
- CUSTOM:自定义。
- CLIENT(默认值):使用客户端上行的ContentType头。
|
ContentTypeValue |
String |
否 |
是 |
当后端服务是HTTP,ContentTypeCatagory取值为DEFAULT或CUSTOM时,ContentType头的取值。 |
无 |
Mock |
String |
否 |
是 |
是否采取Mock模式。 |
取值:
- TRUE:采取Mock模式。
- FALSE(默认值):不采取Mock模式。
|
MockResult |
String |
否 |
是 |
启用Mock模式时返回的结果。 |
无 |
VpcConfig |
Map |
否 |
是 |
启用VPC通道时的相关配置项。 |
更多信息,请参见VpcConfig属性。 |
VpcConfig语法
"VpcConfig": {
"InstanceId": String,
"VpcId": String,
"Port": Integer
}
VpcConfig属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
InstanceId |
String |
是 |
是 |
专用网络中的实例ID。 |
目前只支持ECS实例和SLB实例。 |
VpcId |
String |
是 |
是 |
专有网络ID。 |
无 |
Port |
Integer |
是 |
是 |
实例对应的端口号。 |
无 |
SystemParameters语法
"SystemParameters": [
{
"DemoValue": String,
"ParameterName": String,
"ServiceParameterName": String,
"Location": String,
"Description": String
}
]
SystemParameters属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
Location |
String |
是 |
是 |
参数位置。 |
无 |
ParameterName |
String |
是 |
是 |
系统参数名称。 |
取值:
- CaClientIp
- CaDomain
- CaRequestHandleTime
- CaAppId
- CaRequestId
- CaHttpSchema
- CaProxy
|
ServiceParameterName |
String |
是 |
是 |
后端参数名称。 |
无 |
Description |
String |
否 |
是 |
参数描述。 |
无 |
DemoValue |
String |
否 |
是 |
示例。 |
无 |
ServiceParameters语法
"ServiceParameters": [
{
"ParameterType": String,
"Location": String,
"ServiceParameterName": String
}
]
ServiceParameters属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
ParameterType |
String |
是 |
是 |
后端参数数据类型。 |
取值:
- STRING:字符。
- NUMBER:数值。
- BOOLEAN:布尔。
|
Location |
String |
是 |
是 |
参数位置。 |
取值:
|
ServiceParameterName |
String |
是 |
是 |
后端参数名称。 |
无 |
OpenIdConnectConfig语法
"OpenIdConnectConfig": {
"OpenIdApiType": String,
"PublicKey": String,
"PublicKeyId": String,
"IdTokenParamName": String
}
OpenIdConnectConfig属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
OpenIdApiType |
String |
是 |
是 |
OpenID Connect模式。 |
取值:
- IDTOKEN:先获取授权API,再颁发Token。当设置此项时,参数PublicKeyId和PublicKey必须指定。
- BUSINESS:先获取业务API,再进行Token验证。当设置此项时,参数IdTokenParamName必须指定。
|
PublicKey |
String |
否 |
是 |
公钥。 |
无 |
PublicKeyId |
String |
否 |
是 |
公钥ID。 |
无 |
IdTokenParamName |
String |
否 |
是 |
Token对应的参数名称。 |
无 |
RequestConfig语法
"RequestConfig": {
"RequestMode": String,
"RequestPath": String,
"PostBodyDescription": String,
"RequestProtocol": String,
"RequestHttpMethod": String,
"BodyFormat": String
}
RequestConfig属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
RequestMode |
String |
是 |
是 |
请求模式。 |
取值:
- MAPPING(默认值):入参映射。
- PASSTHROUGH:入参透传。
|
RequestPath |
String |
是 |
是 |
请求地址。 |
例如:API的完全地址为http://example.com:8080/object/add?key1=value1&key2=value2 ,请求地址指/object/add 。 |
RequestProtocol |
String |
是 |
是 |
API支持的协议类型。 |
取值:
多个协议类型以半角逗号(,)隔开,例如:HTTP,HTTPS 。 |
RequestHttpMethod |
String |
是 |
是 |
请求方式。 |
取值:
- GET(默认值)
- POST
- DELETE
- PUT
- HEADER
- TRACE
- PATCH
- OPTIONS
|
PostBodyDescription |
String |
否 |
是 |
请求体的描述。 |
无 |
BodyFormat |
String |
否 |
是 |
POST、PUT或PATCH请求时,表示数据以何种方式传递给服务器。 |
取值:
当RequestMode值为MAPPING时,该参数有效。 |
ServiceParametersMap语法
"ServiceParametersMap": [
{
"RequestParameterName": String,
"ServiceParameterName": String
}
]
ServiceParametersMap属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
RequestParameterName |
String |
是 |
是 |
前端参数名称。 |
该参数取值必须存在于RequestParameters中,即RequestParameters.ApiParameterName。 |
ServiceParameterName |
String |
是 |
是 |
后端参数名称。 |
无 |
RequestParameters语法
"RequestParameters": [
{
"ParameterType": String,
"Required": String,
"Description": String,
"DemoValue": String,
"MinLength": Integer,
"DefaultValue": String,
"RegularExpression": String,
"MaxValue": Integer,
"MinValue": Integer,
"JsonScheme": String,
"ApiParameterName": String,
"Location": String,
"DocShow": String,
"MaxLength": Integer,
"EnumValue": String,
"DocOrder": Integer
}
]
RequestParameters属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
ParameterType |
String |
是 |
否 |
参数类型。 |
取值:
- String:字符。
- Int:整型。
- Long:长整型。
- Float:单精度浮点型。
- Double:双精度浮点型。
- Boolean:布尔。
|
Required |
String |
是 |
是 |
是否必填。 |
取值:
- REQUIRED:必填。
- OPTIONAL:选填。
|
ApiParameterName |
String |
是 |
是 |
参数名称。 |
无 |
Location |
String |
是 |
是 |
参数位置。 |
取值:
|
RegularExpression |
String |
否 |
是 |
当ParameterType为String时,该参数通过正则表达式进行验证。 |
无 |
Description |
String |
否 |
是 |
参数描述。 |
无 |
DefaultValue |
String |
否 |
是 |
默认值。 |
无 |
MaxLength |
Integer |
否 |
是 |
当ParameterType为 String时,参数的最大长度限定。 |
无 |
MinLength |
Integer |
否 |
是 |
当ParameterType为String时,参数的最小长度限定。 |
无 |
MaxValue |
Integer |
否 |
是 |
当ParameterType为Int、Long、Float、Double 时,参数的最大值限定。 |
无 |
MinValue |
Integer |
否 |
是 |
当ParameterType为 Int、Long、Float、Double 时,参数的最小值限定。 |
无 |
EnumValue |
String |
否 |
是 |
当ParameterType为Int、Long、Float、Double或String时,允许输入的散列值。 |
不同的值用半角逗号(,)分隔,例如:1,2,3,4,9 或A,B,C,E,F 。 |
JsonScheme |
String |
否 |
是 |
当ParameterType为String时,该参数进行JSON验证。 |
无 |
DocOrder |
Integer |
否 |
是 |
文档中的顺序。 |
无 |
DocShow |
String |
否 |
是 |
API网关生成的SDK或文档是否可见。 |
取值:
|
DemoValue |
String |
否 |
是 |
示例值。 |
无 |
ConstParameters语法
"ConstParameters": [
{
"ConstValue": String,
"ServiceParameterName": String,
"Description": String,
"Location": String
}
]
ConstParameters属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
Location |
String |
是 |
是 |
参数位置。 |
取值:
|
ConstValue |
String |
是 |
是 |
参数值。 |
无 |
ServiceParameterName |
String |
是 |
是 |
后端参数名称。 |
无 |
Description |
String |
否 |
是 |
参数描述。 |
无 |
FunctionComputeConfig语法
"FunctionComputeConfig": {
"FcRegionId": String,
"RoleArn": String,
"ServiceName": String,
"FunctionName": String,
"Qualifier": String,
"ContentTypeValue": String,
"ContentTypeCatagory": String,
"FcBaseUrl": String,
"FcType": String,
"Method": String,
"OnlyBusinessPath": Boolean,
"Path": String
}
FunctionComputeConfig属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
FcRegionId |
String |
否 |
是 |
函数计算所在地域ID。 |
无 |
RoleArn |
String |
否 |
是 |
RAM授权给API网关访问函数计算的ARN。 |
无 |
ServiceName |
String |
否 |
是 |
函数计算定义的ServiceName。 |
无 |
FunctionName |
String |
否 |
是 |
函数计算定义的FunctionName。 |
无 |
Qualifier |
String |
否 |
是 |
函数计算的别名。 |
无 |
ContentTypeCatagory |
String |
否 |
是 |
调用后端服务HTTP服务时,ContentType头的取值策略。 |
取值:
- DEFAULT:使用API网关默认的值。
- CUSTOM:自定义。
- CLIENT(默认值):使用客户端上行的ContentType的头。
|
ContentTypeValue |
String |
否 |
是 |
调用后端HTTP服务,ContentTypeCatagory的值为DEFAULT或者CUSTOM时,ContentType头的取值。 |
无 |
FcBaseUrl |
String |
否 |
是 |
触发器地址。 |
以http:// 或https:// 开头。 |
FcType |
String |
否 |
是 |
函数类型。 |
取值:
- FCEvent(默认值)。
- HttpTrigger。
|
Method |
String |
否 |
是 |
HTTP请求方式。 |
取值:
- GET(默认值)
- POST
- DELETE
- PUT
- HEAD
- PATCH
- OPTIONS
- ANY
|
OnlyBusinessPath |
Boolean |
否 |
是 |
是否只传递自定义的后端请求路径给后端。 |
取值:
|
Path |
String |
否 |
是 |
后端请求路径。 |
参数必须放在方括号中,例如:/ getUserInfo / [userId] 。 |
MockHeaders语法
"MockHeaders": [
{
"HeaderValue": String,
"HeaderName": String
}
]
MockHeaders属性
属性名称 |
类型 |
必须 |
允许更新 |
描述 |
约束 |
HeaderName |
String |
是 |
是 |
响应头名称。 |
无 |
HeaderValue |
String |
是 |
是 |
响应头值。 |
无 |
返回值
Fn::GetAtt
ApiId:API ID。
示例
YAML
格式
ROSTemplateFormatVersion: '2015-09-01'
Description: Test ApiGateway Api
Parameters: {}
Resources:
RamRole:
Type: ALIYUN::RAM::Role
Properties:
RoleName: TestRole
Policies:
- PolicyName: TestPolicy
PolicyDocument:
Version: '1'
Statement:
- Action:
- fc:InvokeFunction
Resource:
- '*'
Effect: Allow
AssumeRolePolicyDocument:
Version: '1'
Statement:
- Action: sts:AssumeRole
Effect: Allow
Principal:
Service:
- apigateway.aliyuncs.com
FCService:
Type: ALIYUN::FC::Service
Properties:
ServiceName: TestService
InternetAccess: true
Function:
Type: ALIYUN::FC::Function
DependsOn: FCService
Properties:
Handler: index.handler
Runtime: python3
Code:
SourceCode: "def handler(event, context):\n\treturn {'isBase64Encode': False, 'statusCode': 200, 'body': 'Hello World!', 'headers': {'Content-type': 'aplication/json'}}\n"
FunctionName: mytest
ServiceName:
Fn::GetAtt:
- FCService
- ServiceName
MemorySize: 128
Group:
Type: ALIYUN::ApiGateway::Group
Properties:
InstanceId: api-shared-vpc-001
GroupName: TestGroup
Api:
DependsOn:
- RamRole
- Group
Type: ALIYUN::ApiGateway::Api
Properties:
AppCodeAuthType: HEADER_QUERY
AuthType: APP
ServiceConfig:
FunctionComputeConfig:
fcRegionId:
Ref: ALIYUN::Region
qualifier: LATEST
roleArn:
Fn::GetAtt:
- RamRole
- Arn
serviceName:
Fn::GetAtt:
- FCService
- ServiceName
functionName:
Fn::GetAtt:
- Function
- FunctionName
ServiceProtocol: FunctionCompute
ContentTypeCatagory: CLIENT
RequestConfig:
RequestMode: MAPPING
RequestHttpMethod: POST
RequestProtocol: HTTP,HTTPS
RequestPath: /test
BodyFormat: FORM
ResultSample: ''
Visibility: PRIVATE
ResultType: JSON
ApiName: TestApi
GroupId:
Fn::GetAtt:
- Group
- GroupId
App:
Type: ALIYUN::ApiGateway::App
Properties:
Description: Test Create App
AppName: TestApp
Outputs: {}
JSON
格式
{
"ROSTemplateFormatVersion": "2015-09-01",
"Description": "Test ApiGateway Api",
"Parameters": {
},
"Resources": {
"RamRole": {
"Type": "ALIYUN::RAM::Role",
"Properties": {
"RoleName": "TestRole",
"Policies": [
{
"PolicyName": "TestPolicy",
"PolicyDocument": {
"Version": "1",
"Statement": [
{
"Action": [
"fc:InvokeFunction"
],
"Resource": [
"*"
],
"Effect": "Allow"
}
]
}
}
],
"AssumeRolePolicyDocument": {
"Version": "1",
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"apigateway.aliyuncs.com"
]
}
}
]
}
}
},
"FCService": {
"Type": "ALIYUN::FC::Service",
"Properties": {
"ServiceName": "TestService",
"InternetAccess": true
}
},
"Function": {
"Type": "ALIYUN::FC::Function",
"DependsOn": "FCService",
"Properties": {
"Handler": "index.handler",
"Runtime": "python3",
"Code": {
"SourceCode": "def handler(event, context):\n\treturn {'isBase64Encode': False, 'statusCode': 200, 'body': 'Hello World!', 'headers': {'Content-type': 'aplication/json'}}\n"
},
"FunctionName": "mytest",
"ServiceName": {
"Fn::GetAtt": [
"FCService",
"ServiceName"
]
},
"MemorySize": 128
}
},
"Group": {
"Type": "ALIYUN::ApiGateway::Group",
"Properties": {
"InstanceId": "api-shared-vpc-001",
"GroupName": "TestGroup"
}
},
"Api": {
"DependsOn": [
"RamRole",
"Group"
],
"Type": "ALIYUN::ApiGateway::Api",
"Properties": {
"AppCodeAuthType": "HEADER_QUERY",
"AuthType": "APP",
"ServiceConfig": {
"FunctionComputeConfig": {
"fcRegionId": {
"Ref": "ALIYUN::Region"
},
"qualifier": "LATEST",
"roleArn": {
"Fn::GetAtt": [
"RamRole",
"Arn"
]
},
"serviceName": {
"Fn::GetAtt": [
"FCService",
"ServiceName"
]
},
"functionName": {
"Fn::GetAtt": [
"Function",
"FunctionName"
]
}
},
"ServiceProtocol": "FunctionCompute",
"ContentTypeCatagory": "CLIENT"
},
"RequestConfig": {
"RequestMode": "MAPPING",
"RequestHttpMethod": "POST",
"RequestProtocol": "HTTP,HTTPS",
"RequestPath": "/test",
"BodyFormat": "FORM"
},
"ResultSample": "",
"Visibility": "PRIVATE",
"ResultType": "JSON",
"ApiName": "TestApi",
"GroupId": {
"Fn::GetAtt": [
"Group",
"GroupId"
]
}
}
},
"App": {
"Type": "ALIYUN::ApiGateway::App",
"Properties": {
"Description": "Test Create App",
"AppName": "TestApp"
}
}
},
"Outputs": {
}
}
更多示例,请参见创建API、创建应用、为API授权应用的访问权限、发布API或快速切换API版本、创建后端签名密钥、绑定API与后端签名密钥、创建用户自定义的流控策略和为API绑定用户自定义流控的组合示例:JSON示例和YAML示例。