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,
"ResultBodyModel": String,
"AllowSignatureMethod": String,
"WebSocketApiType": String,
"ResultDescriptions": String
}
}
属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
ApiName | String | 是 | 是 | API名称。 | 长度为4~50个字符。必须以英文字母或汉字开头。可包含英文字母、汉字、数字和下划线(_)。 说明 API分组内的API名称不允许重复。 |
GroupId | String | 是 | 否 | API分组编号。 | 无 |
RequestConfig | Map | 是 | 是 | Consumer向网关发送API请求的相关配置项。 | 更多信息,请参见RequestConfig属性。 |
ResultSample | String | 否 | 是 | 后端服务返回应答的示例。 | 无 |
ResultType | String | 否 | 是 | 后端服务返回应答的格式。 | 取值:
|
ServiceConfig | Map | 是 | 是 | 网关向后端服务发送API请求的相关配置项。 | 更多信息,请参见ServiceConfig属性。 |
Visibility | String | 是 | 是 | API是否公开。 | 取值:
|
AllowSignatureMethod | String | 否 | 是 | 当AuthType为APP认证时,需要传该值明确签名算法。 | 取值:
|
AppCodeAuthType | String | 否 | 是 | AppCode认证方式。 | AuthType取值为APP时该参数生效,取值:
|
AuthType | String | 否 | 是 | API安全认证类型。 | 取值:
|
ConstParameters | List | 否 | 是 | 指定API的常量参数。 | 更多信息,请参见ConstParameters属性。 |
Description | String | 否 | 是 | API描述信息。 | 最多支持180个字符。 |
DisableInternet | Boolean | 否 | 是 | 是否禁止公网调用API。 | 取值:
|
ErrorCodeSamples | List | 否 | 是 | 后端服务返回的错误码示例。 | 更多信息,请参见ErrorCodeSamples属性。 |
FailResultSample | String | 否 | 是 | 后端服务失败返回应答的示例。 | 无 |
ForceNonceCheck | Boolean | 否 | 是 | 请求时是否强制检查X-Ca-Nonce。 | 取值:
|
OpenIdConnectConfig | Map | 否 | 是 | 第三方账号认证OpenID Connect相关配置项。 | 更多信息,请参见OpenIdConnectConfig属性。 |
RequestParameters | List | 否 | 是 | Consumer向网关发送API请求的参数描述。 | 更多信息,请参见RequestParameters属性。 |
ResultBodyModel | String | 否 | 是 | API的返回结果。 | 无 |
ResultDescriptions | String | 否 | 是 | 结果描述。 | 无 |
ServiceParameters | List | 否 | 是 | 网关向后端服务发送API请求的参数描述。 | 更多信息,请参见ServiceParameters属性。 |
ServiceParametersMap | List | 否 | 是 | Consumer向网关发送请求的参数和网关向后端服务发送请求的参数的映射关系。 | 更多信息,请参见ServiceParametersMap属性。 |
SystemParameters | List | 否 | 是 | API的系统参数。 | 更多信息,请参见SystemParameters属性。 |
Tags | List | 否 | 是 | 标签。 | 最多支持添加20个标签。 更多信息,请参见Tags属性。 |
WebSocketApiType | String | 否 | 是 | 双向通信API类型。 | 取值:
|
Tags语法
"Tags": [
{
"Key": String,
"Value": String
}
]
Tags属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Key | String | 是 | 否 | 标签键。 | 长度为1~128个字符,不能以 |
Value | String | 否 | 否 | 标签值。 | 长度为0~128个字符,不能以 |
ErrorCodeSamples语法
"ErrorCodeSamples": [
{
"Message": String,
"Code": String,
"Description": String
}
]
ErrorCodeSamples属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Code | String | 是 | 是 | 错误码。 | 无 |
Message | 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属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
ContentTypeCatagory | String | 否 | 是 | 调用后端HTTP服务时,ContentType头的取值策略。 | 取值:
|
ContentTypeValue | String | 否 | 是 | 当后端服务是HTTP,ContentTypeCatagory取值为DEFAULT或CUSTOM时,ContentType头的取值。 | 无 |
FunctionComputeConfig | Map | 否 | 是 | 后端服务为函数计算。 | 无 更多信息,请参见FunctionComputeConfig属性。 |
Mock | String | 否 | 是 | 是否采取Mock模式。 | 取值:
|
MockHeaders | List | 否 | 是 | 启用Mock时,自定义的Mock响应头相关信息。 | 无 更多信息,请参见MockHeaders属性。 |
MockResult | String | 否 | 是 | 启用Mock模式时返回的结果。 | 无 |
MockStatusCode | Integer | 否 | 是 | 状态码。 | 以兼容HTTP 1.1 Response Status Code的格式返回。 |
ServiceAddress | String | 否 | 是 | 后端服务地址。 | 例如:后端服务完整地址为 |
ServiceHttpMethod | String | 否 | 是 | 调用后端服务HTTP协议时的方法。 | 取值:
|
ServicePath | String | 否 | 是 | 后端服务路径。 | 例如:后端服务完全地址为 |
ServiceProtocol | String | 否 | 是 | 后端服务协议类型。 | 取值:
|
ServiceTimeOut | Integer | 否 | 是 | 后端服务超时时间。 | 单位:毫秒。 |
ServiceVpcEnable | String | 否 | 是 | 是否使用专有网络。 | 取值:
|
VpcConfig | Map | 否 | 是 | 启用VPC通道时的相关配置项。 | 更多信息,请参见VpcConfig属性。 |
VpcConfig语法
"VpcConfig": {
"InstanceId": String,
"VpcId": String,
"Port": Integer
}
VpcConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
InstanceId | String | 是 | 是 | 专用网络中的实例ID。 | 目前只支持ECS实例和SLB实例。 |
Port | Integer | 是 | 是 | 实例对应的端口号。 | 无 |
VpcId | String | 是 | 是 | 专有网络ID。 | 无 |
SystemParameters语法
"SystemParameters": [
{
"DemoValue": String,
"ParameterName": String,
"ServiceParameterName": String,
"Location": String,
"Description": String
}
]
SystemParameters属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Location | String | 是 | 是 | 参数位置。 | 无 |
ParameterName | String | 是 | 是 | 系统参数名称。 | 取值:
|
ServiceParameterName | String | 是 | 是 | 后端参数名称。 | 无 |
DemoValue | String | 否 | 是 | 示例。 | 无 |
Description | String | 否 | 是 | 参数描述。 | 无 |
ServiceParameters语法
"ServiceParameters": [
{
"ParameterType": String,
"Location": String,
"ServiceParameterName": String
}
]
ServiceParameters属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
Location | String | 是 | 是 | 参数位置。 | 取值:
|
ParameterType | String | 是 | 是 | 后端参数数据类型。 | 取值:
|
ServiceParameterName | String | 是 | 是 | 后端参数名称。 | 无 |
OpenIdConnectConfig语法
"OpenIdConnectConfig": {
"OpenIdApiType": String,
"PublicKey": String,
"PublicKeyId": String,
"IdTokenParamName": String
}
OpenIdConnectConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
OpenIdApiType | String | 是 | 是 | OpenID Connect模式。 | 取值:
|
IdTokenParamName | String | 否 | 是 | Token对应的参数名称。 | 无 |
PublicKey | String | 否 | 是 | 公钥。 | 无 |
PublicKeyId | String | 否 | 是 | 公钥ID。 | 无 |
RequestConfig语法
"RequestConfig": {
"RequestMode": String,
"RequestPath": String,
"PostBodyDescription": String,
"RequestProtocol": String,
"RequestHttpMethod": String,
"BodyFormat": String
}
RequestConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
RequestHttpMethod | String | 是 | 是 | 请求方式。 | 取值:
|
RequestMode | String | 是 | 是 | 请求模式。 | 取值:
|
RequestPath | String | 是 | 是 | 请求地址。 | 例如:API的完全地址为 |
RequestProtocol | String | 是 | 是 | API支持的协议类型。 | 取值:
多个协议类型以半角逗号(,)隔开,例如: |
BodyFormat | String | 否 | 是 | POST、PUT或PATCH请求时,表示数据以何种方式传递给服务器。 | 取值:
当RequestMode值为MAPPING时,该参数有效。 |
PostBodyDescription | String | 否 | 是 | 请求体的描述。 | 无 |
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属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
ApiParameterName | String | 是 | 是 | 参数名称。 | 无 |
Location | String | 是 | 是 | 参数位置。 | 取值:
|
ParameterType | String | 是 | 否 | 参数类型。 | 取值:
|
Required | String | 是 | 是 | 是否必填。 | 取值:
|
DefaultValue | String | 否 | 是 | 默认值。 | 无 |
DemoValue | String | 否 | 是 | 示例值。 | 无 |
Description | String | 否 | 是 | 参数描述。 | 无 |
DocOrder | Integer | 否 | 是 | 文档中的顺序。 | 无 |
DocShow | String | 否 | 是 | API网关生成的SDK或文档是否可见。 | 取值:
|
EnumValue | String | 否 | 是 | 当ParameterType为Int、Long、Float、Double或String时,允许输入的散列值。 | 不同的值用半角逗号(,)分隔,例如: |
JsonScheme | String | 否 | 是 | 当ParameterType为String时,该参数进行JSON验证。 | 无 |
MaxLength | Integer | 否 | 是 | 当ParameterType为 String时,参数的最大长度限定。 | 无 |
MaxValue | Integer | 否 | 是 | 当ParameterType为Int、Long、Float、Double 时,参数的最大值限定。 | 无 |
MinLength | Integer | 否 | 是 | 当ParameterType为String时,参数的最小长度限定。 | 无 |
MinValue | Integer | 否 | 是 | 当ParameterType为 Int、Long、Float、Double 时,参数的最小值限定。 | 无 |
RegularExpression | String | 否 | 是 | 当ParameterType为String时,该参数通过正则表达式进行验证。 | 无 |
ConstParameters语法
"ConstParameters": [
{
"ConstValue": String,
"ServiceParameterName": String,
"Description": String,
"Location": String
}
]
ConstParameters属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
ConstValue | String | 是 | 是 | 参数值。 | 无 |
Location | 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,
"FcVersion": String
}
FunctionComputeConfig属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
ContentTypeCatagory | String | 否 | 是 | 调用后端服务HTTP服务时,ContentType头的取值策略。 | 取值:
|
FcVersion | String | 否 | 否 | 支持函数计算的版本。 | 取值:
|
ContentTypeValue | String | 否 | 是 | 调用后端HTTP服务,ContentTypeCatagory的值为DEFAULT或者CUSTOM时,ContentType头的取值。 | 无 |
FcBaseUrl | String | 否 | 是 | 触发器地址。 | 以 |
FcRegionId | String | 否 | 是 | 函数计算所在地域ID。 | 无 |
FcType | String | 否 | 是 | 函数类型。 | 取值:
|
FunctionName | String | 否 | 是 | 函数计算定义的FunctionName。 | 无 |
Method | String | 否 | 是 | HTTP请求方式。 | 取值:
|
OnlyBusinessPath | Boolean | 否 | 是 | 是否只传递自定义的后端请求路径给后端。 | 取值:
|
Path | String | 否 | 是 | 后端请求路径。 | 参数必须放在方括号中,例如: |
Qualifier | String | 否 | 是 | 函数计算的别名。 | 无 |
RoleArn | String | 否 | 是 | RAM授权给API网关访问函数计算的ARN。 | 无 |
ServiceName | String | 否 | 是 | 函数计算定义的ServiceName。 | 无 |
MockHeaders语法
"MockHeaders": [
{
"HeaderValue": String,
"HeaderName": String
}
]
MockHeaders属性
属性名称 | 类型 | 必须 | 允许更新 | 描述 | 约束 |
HeaderName | String | 是 | 是 | 响应头名称。 | 无 |
HeaderValue | String | 是 | 是 | 响应头值。 | 无 |
返回值
Fn::GetAtt
ApiId:API ID。
示例
请您按照实际情况更改下列脱敏的参数取值,例如InstanceId。
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-***
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-***",
"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": {
}
}