ALIYUN::ApiGateway::Api crea una API en API Gateway.
Sintaxis
{
"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
}
}
Propiedades
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricciones |
ApiName | String | Sí | Sí | El nombre de la API. | El valor debe tener entre 4 y 50 caracteres. Debe comenzar con una letra o un carácter chino y solo puede contener letras, caracteres chinos, dígitos y guiones bajos (_). Nota Los nombres de las API deben ser únicos dentro de un grupo de API. |
GroupId | String | Sí | No | El ID del grupo de API. | Ninguna |
RequestConfig | Map | Sí | Sí | La configuración de las solicitudes de API que los consumidores envían a API Gateway. | |
ResultSample | String | No | Sí | Ejemplo de respuesta del servicio de backend. | Ninguna |
ResultType | String | No | Sí | El formato de la respuesta del servicio de backend. | Valores válidos:
|
ServiceConfig | Map | Sí | Sí | La configuración de las solicitudes de API que API Gateway envía al servicio de backend. | |
Visibility | String | Sí | Sí | Indica si la API es pública. | Valores válidos:
|
AllowSignatureMethod | String | No | Sí | Obligatorio cuando AuthType es APP. Establezca el algoritmo de firma. | Valores válidos:
|
AppCodeAuthType | String | No | Sí | El tipo de autenticación AppCode. | Válido únicamente si establece AuthType como APP. Valores válidos:
|
AuthType | String | No | Sí | El tipo de autenticación de seguridad de la API. | Valores válidos:
|
ConstParameters | List | No | Sí | Los parámetros constantes de la API. | |
Description | String | No | Sí | La descripción de la API. | La descripción puede tener hasta 180 caracteres de longitud. |
DisableInternet | Boolean | No | Sí | Indica si se deshabilitan las llamadas a través de la red pública. | Valores válidos:
|
ErrorCodeSamples | List | No | Sí | Ejemplos de códigos de error que devuelve el servicio de backend. | |
FailResultSample | String | No | Sí | Ejemplo de respuesta del servicio de backend para una solicitud con errores. | Ninguna |
ForceNonceCheck | Boolean | No | Sí | Indica si se comprueba X-Ca-Nonce de forma obligatoria. | Valores válidos:
|
OpenIdConnectConfig | Map | No | Sí | La configuración de autenticación de OpenID Connect. | |
RequestParameters | List | No | Sí | Los parámetros de las solicitudes de API que los consumidores envían a API Gateway. | |
ResultBodyModel | String | No | Sí | El resultado que devuelve la API. | Ninguna |
ResultDescriptions | String | No | Sí | La descripción del resultado. | Ninguna |
ServiceParameters | List | No | Sí | Los parámetros de las solicitudes de API que API Gateway envía al servicio de backend. | |
ServiceParametersMap | List | No | Sí | Las asignaciones entre los parámetros de solicitud de consumidor a puerta de enlace y de puerta de enlace a backend. | |
SystemParameters | List | No | Sí | Los parámetros del sistema de la API. | |
Tags | List | No | Sí | Las etiquetas. | Puede agregar hasta 20 etiquetas. |
WebSocketApiType | String | No | Sí | El tipo de la API de comunicación bidireccional. | Valores válidos:
|
Sintaxis de Tags
"Tags": [
{
"Key": String,
"Value": String
}
]
Propiedades de Tags
|
Nombre de la propiedad |
Tipo |
Obligatorio |
Actualización permitida |
Descripción |
Restricciones |
|
Key |
String |
Sí |
No |
La clave de la etiqueta. |
La clave de la etiqueta puede tener entre 1 y 128 caracteres de longitud. No puede comenzar con |
|
Value |
String |
No |
No |
El valor de la etiqueta. |
El valor de la etiqueta puede tener entre 0 y 128 caracteres de longitud. No puede comenzar con |
Sintaxis de ErrorCodeSamples
"ErrorCodeSamples": [
{
"Message": String,
"Code": String,
"Description": String
}
]
Propiedades de ErrorCodeSamples
|
Nombre de la propiedad |
Tipo |
Obligatorio |
Actualización permitida |
Descripción |
Restricciones |
|
Code |
String |
Sí |
Sí |
El código de error. |
Ninguna |
|
Message |
String |
Sí |
Sí |
El mensaje de error. |
Ninguna |
|
Description |
String |
No |
Sí |
La descripción del error. |
Ninguna |
Sintaxis de 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
}
Propiedades de ServiceConfig
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricciones |
ContentTypeCatagory | String | No | Sí | La directiva para establecer el valor del encabezado Content-Type al invocar el servicio HTTP de backend. | Valores válidos:
|
ContentTypeValue | String | No | Sí | El valor del encabezado Content-Type cuando el servicio de backend es un servicio HTTP y ContentTypeCatagory se establece como DEFAULT o CUSTOM. | Ninguna |
FunctionComputeConfig | Map | No | Sí | El servicio de backend es Function Compute. | Ninguna |
Mock | String | No | Sí | Indica si se habilita el modo mock. | Valores válidos:
|
MockHeaders | List | No | Sí | Los encabezados personalizados de la respuesta mock. Este parámetro solo es válido cuando el modo mock está habilitado. | Ninguna |
MockResult | String | No | Sí | El resultado que se devuelve en el modo mock. | Ninguna |
MockStatusCode | Integer | No | Sí | El código de estado. | El código de estado debe ser compatible con los códigos de estado de respuesta de HTTP 1.1. |
ServiceAddress | String | No | Sí | El endpoint del servicio de backend. | Por ejemplo, si la dirección completa del servicio de backend es |
ServiceHttpMethod | String | No | Sí | El método HTTP utilizado para invocar el servicio de backend. | Valores válidos:
|
ServicePath | String | No | Sí | La ruta del servicio de backend. | Por ejemplo, si la dirección completa del servicio de backend es |
ServiceProtocol | String | No | Sí | El protocolo del servicio de backend. | Valores válidos:
|
ServiceTimeOut | Integer | No | Sí | El periodo de tiempo de espera del servicio de backend. | Unidad: milisegundos. |
ServiceVpcEnable | String | No | Sí | Indica si se utiliza una VPC. | Valores válidos:
|
VpcConfig | Map | No | Sí | La configuración del canal de VPC. |
Sintaxis de VpcConfig
"VpcConfig": {
"InstanceId": String,
"VpcId": String,
"Port": Integer
}
Propiedades de VpcConfig
|
Nombre de la propiedad |
Tipo |
Obligatorio |
Actualización permitida |
Descripción |
Restricciones |
|
InstanceId |
String |
Sí |
Sí |
El ID de la instancia en la VPC. |
Solo son compatibles las instancias de ECS y SLB. |
|
Port |
Integer |
Sí |
Sí |
El número de puerto de la instancia. |
Ninguna |
|
VpcId |
String |
Sí |
Sí |
El ID de la VPC. |
Ninguna |
Sintaxis de SystemParameters
"SystemParameters": [
{
"DemoValue": String,
"ParameterName": String,
"ServiceParameterName": String,
"Location": String,
"Description": String
}
]
Propiedades de SystemParameters
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricciones |
Location | String | Sí | Sí | La ubicación del parámetro. | Ninguna |
ParameterName | String | Sí | Sí | El nombre del parámetro del sistema. | Valores válidos:
|
ServiceParameterName | String | Sí | Sí | El nombre del parámetro de backend. | Ninguna |
DemoValue | String | No | Sí | Ejemplo. | Ninguna |
Description | String | No | Sí | La descripción del parámetro. | Ninguna |
Sintaxis de ServiceParameters
"ServiceParameters": [
{
"ParameterType": String,
"Location": String,
"ServiceParameterName": String
}
]
Propiedades de ServiceParameters
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricciones |
Location | String | Sí | Sí | La ubicación del parámetro. | Valores válidos:
|
ParameterType | String | Sí | Sí | El tipo de datos del parámetro de backend. | Valores válidos:
|
ServiceParameterName | String | Sí | Sí | El nombre del parámetro de backend. | Ninguna |
Sintaxis de OpenIdConnectConfig
"OpenIdConnectConfig": {
"OpenIdApiType": String,
"PublicKey": String,
"PublicKeyId": String,
"IdTokenParamName": String
}
Propiedades de OpenIdConnectConfig
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricciones |
OpenIdApiType | String | Sí | Sí | Modo de OpenID Connect. | Valores válidos:
|
IdTokenParamName | String | No | Sí | Nombre del parámetro que corresponde al token. | Ninguna |
PublicKey | String | No | Sí | Clave pública. | Ninguna |
PublicKeyId | String | No | Sí | Identificador de la clave pública. | Ninguna |
Sintaxis de RequestConfig
"RequestConfig": {
"RequestMode": String,
"RequestPath": String,
"PostBodyDescription": String,
"RequestProtocol": String,
"RequestHttpMethod": String,
"BodyFormat": String
}
Propiedades de RequestConfig
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricciones |
RequestHttpMethod | String | Sí | Sí | Método de la solicitud. | Valores válidos:
|
RequestMode | String | Sí | Sí | Modo de la solicitud. | Valores válidos:
|
RequestPath | String | Sí | Sí | URI de la solicitud. | Por ejemplo, si el URI completo de la API es |
RequestProtocol | String | Sí | Sí | Tipos de protocolo compatibles con la API. | Valores válidos:
Separe varios protocolos con comas (,). Por ejemplo, |
BodyFormat | String | No | Sí | Para solicitudes POST, PUT o PATCH, define cómo se transmiten los datos al servidor. | Valores válidos:
Válido solo si RequestMode se establece en MAPPING. |
PostBodyDescription | String | No | Sí | Descripción del cuerpo de la solicitud. | Ninguna |
Sintaxis de ServiceParametersMap
"ServiceParametersMap": [
{
"RequestParameterName": String,
"ServiceParameterName": String
}
]
Propiedades de ServiceParametersMap
|
Nombre de la propiedad |
Tipo |
Obligatorio |
Actualización permitida |
Descripción |
Restricciones |
|
RequestParameterName |
String |
Sí |
Sí |
Nombre del parámetro del frontend. |
El valor de este parámetro debe existir en RequestParameters. Debe coincidir con ApiParameterName en RequestParameters. |
|
ServiceParameterName |
String |
Sí |
Sí |
Nombre del parámetro del backend. |
Ninguna |
Sintaxis de 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
}
]
Propiedades de RequestParameters
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricciones |
ApiParameterName | String | Sí | Sí | Nombre del parámetro. | Ninguna |
Location | String | Sí | Sí | Ubicación del parámetro. | Valores válidos:
|
ParameterType | String | Sí | No | Tipo del parámetro. | Valores válidos:
|
Required | String | Sí | Sí | Indica si el parámetro es obligatorio. | Valores válidos:
|
DefaultValue | String | No | Sí | Valor predeterminado. | Ninguna |
DemoValue | String | No | Sí | Valor de ejemplo. | Ninguna |
Description | String | No | Sí | Descripción del parámetro. | Ninguna |
DocOrder | Integer | No | Sí | Orden dentro del documento. | Ninguna |
DocShow | String | No | Sí | Indica si el SDK o los documentos generados por API Gateway son visibles. | Valores válidos:
|
EnumValue | String | No | Sí | Valores válidos del parámetro cuando ParameterType se establece en Int, Long, Float, Double o String. | Separe varios valores con comas (,). Por ejemplo, |
JsonScheme | String | No | Sí | Si ParameterType se establece en String, el parámetro se valida según el esquema JSON. | Ninguna |
MaxLength | Integer | No | Sí | Longitud máxima del parámetro. Válido solo si ParameterType se establece en String. | Ninguna |
MaxValue | Integer | No | Sí | Valor máximo del parámetro. Válido solo si ParameterType se establece en Int, Long, Float o Double. | Ninguna |
MinLength | Integer | No | Sí | Longitud mínima del parámetro. Válido solo si ParameterType se establece en String. | Ninguna |
MinValue | Integer | No | Sí | Valor mínimo del parámetro. Válido solo si ParameterType se establece en Int, Long, Float o Double. | Ninguna |
RegularExpression | String | No | Sí | Si ParameterType se establece en String, el parámetro se valida según la expresión regular. | Ninguna |
Sintaxis de ConstParameters
"ConstParameters": [
{
"ConstValue": String,
"ServiceParameterName": String,
"Description": String,
"Location": String
}
]
Propiedades de ConstParameters
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricciones |
ConstValue | String | Sí | Sí | Valor del parámetro. | Ninguna |
Location | String | Sí | Sí | Ubicación del parámetro. | Valores válidos:
|
ServiceParameterName | String | Sí | Sí | Nombre del parámetro del backend. | Ninguna |
Description | String | No | Sí | Descripción del parámetro. | Ninguna |
Sintaxis de 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
}
Propiedades de FunctionComputeConfig
Nombre de la propiedad | Tipo | Obligatorio | Actualización permitida | Descripción | Restricciones |
ContentTypeCatagory | String | No | Sí | Directiva para establecer el valor del encabezado Content-Type cuando se llama al servicio HTTP del backend. | Valores válidos:
|
FcVersion | String | No | No | Versión de Function Compute. | Valores válidos:
|
ContentTypeValue | String | No | Sí | Valor del encabezado Content-Type cuando se llama al servicio HTTP del backend y ContentTypeCatagory se establece en DEFAULT o CUSTOM. | Ninguna |
FcBaseUrl | String | No | Sí | Endpoint del disparador. | El endpoint debe comenzar con |
FcRegionId | String | No | Sí | Identificador de la región donde se despliega Function Compute. | Ninguna |
FcType | String | No | Sí | Tipo de la función. | Valores válidos:
|
FunctionName | String | No | Sí | Nombre de la función en Function Compute. | Ninguna |
Method | String | No | Sí | Método de la solicitud HTTP. | Valores válidos:
|
OnlyBusinessPath | Boolean | No | Sí | Indica si se transmite únicamente la ruta de solicitud personalizada del backend al servicio del backend. | Valores válidos:
|
Path | String | No | Sí | Ruta de la solicitud del backend. | El parámetro debe encerrarse entre corchetes ([]). Por ejemplo, |
Qualifier | String | No | Sí | Alias de la función en Function Compute. | Ninguna |
RoleArn | String | No | Sí | ARN del rol de RAM que asume API Gateway para acceder a Function Compute. | Ninguna |
ServiceName | String | No | Sí | Nombre del servicio en Function Compute. | Ninguna |
Sintaxis de MockHeaders
"MockHeaders": [
{
"HeaderValue": String,
"HeaderName": String
}
]
Propiedades de MockHeaders
|
Nombre de la propiedad |
Tipo |
Obligatorio |
Actualización permitida |
Descripción |
Restricciones |
|
HeaderName |
String |
Sí |
Sí |
Nombre del encabezado de respuesta. |
Ninguna |
|
HeaderValue |
String |
Sí |
Sí |
Valor del encabezado de respuesta. |
Ninguna |
Valores de retorno
Fn::GetAtt
ApiId: identificador de la API.
ARN significa Alibaba Cloud Resource Name.
Ejemplos
Modifique los valores de los parámetros en los siguientes ejemplos según sus necesidades. Por ejemplo, debe cambiar el valor de InstanceId.
Formato 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: {}
Formato 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": {
}
}