O recurso ALIYUN::ApiGateway::Api cria uma API no API Gateway.
Sintaxe
{
"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
}
}
Propriedades
Nome da propriedade | Tipo | Obrigatório | Atualização permitida | Descrição | Restrições |
ApiName | String | Sim | Sim | Nome da API. | O valor deve ter de 4 a 50 caracteres. Deve começar com uma letra ou caractere chinês e pode conter apenas letras, caracteres chineses, dígitos e sublinhados (_). Nota Os nomes de API devem ser exclusivos dentro de um grupo de APIs. |
GroupId | String | Sim | Não | ID do grupo de APIs. | Nenhuma |
RequestConfig | Map | Sim | Sim | Configuração das requisições de API enviadas pelos consumidores ao API Gateway. | |
ResultSample | String | Não | Sim | Exemplo de resposta do service de backend. | Nenhuma |
ResultType | String | Não | Sim | Formato da resposta do service de backend. | Valores válidos:
|
ServiceConfig | Map | Sim | Sim | Configuração das requisições de API enviadas pelo API Gateway ao service de backend. | |
Visibility | String | Sim | Sim | Indica se a API é pública. | Valores válidos:
|
AllowSignatureMethod | String | Não | Sim | Obrigatório quando AuthType é APP. Define o algoritmo de assinatura. | Valores válidos:
|
AppCodeAuthType | String | Não | Sim | Tipo de autenticação AppCode. | Válido apenas se AuthType estiver definido como APP. Valores válidos:
|
AuthType | String | Não | Sim | Tipo de autenticação de segurança da API. | Valores válidos:
|
ConstParameters | List | Não | Sim | Parâmetros constantes da API. | |
Description | String | Não | Sim | Descrição da API. | A descrição pode ter até 180 caracteres. |
DisableInternet | Boolean | Não | Sim | Indica se as chamadas pela rede pública devem ser desativadas. | Valores válidos:
|
ErrorCodeSamples | List | Não | Sim | Exemplos de códigos de erro retornados pelo service de backend. | |
FailResultSample | String | Não | Sim | Exemplo de resposta de falha na requisição do service de backend. | Nenhuma |
ForceNonceCheck | Boolean | Não | Sim | Indica se a verificação de X-Ca-Nonce deve ser forçada. | Valores válidos:
|
OpenIdConnectConfig | Map | Não | Sim | Configuração de autenticação OpenID Connect. | |
RequestParameters | List | Não | Sim | Parâmetros das requisições de API enviadas pelos consumidores ao API Gateway. | |
ResultBodyModel | String | Não | Sim | Resultado retornado pela API. | Nenhuma |
ResultDescriptions | String | Não | Sim | Descrição do resultado. | Nenhuma |
ServiceParameters | List | Não | Sim | Parâmetros das requisições de API enviadas pelo API Gateway ao service de backend. | |
ServiceParametersMap | List | Não | Sim | Mapeamentos entre os parâmetros de requisição consumidor-gateway e gateway-backend. | |
SystemParameters | List | Não | Sim | Parâmetros de sistema da API. | |
Tags | List | Não | Sim | As tags. | É possível adicionar até 20 tags. |
WebSocketApiType | String | Não | Sim | Tipo da API de comunicação bidirecional. | Valores válidos:
|
Sintaxe de Tags
"Tags": [
{
"Key": String,
"Value": String
}
]
Propriedades de Tags
|
Nome da propriedade |
Tipo |
Obrigatório |
Atualização permitida |
Descrição |
Restrições |
|
Key |
String |
Sim |
Não |
Chave da tag. |
A chave da tag pode ter de 1 a 128 caracteres. Não pode começar com |
|
Value |
String |
Não |
Não |
Valor da tag. |
O valor da tag pode ter de 0 a 128 caracteres. Não pode começar com |
Sintaxe de ErrorCodeSamples
"ErrorCodeSamples": [
{
"Message": String,
"Code": String,
"Description": String
}
]
Propriedades de ErrorCodeSamples
|
Nome da propriedade |
Tipo |
Obrigatório |
Atualização permitida |
Descrição |
Restrições |
|
Code |
String |
Sim |
Sim |
Código de erro. |
Nenhuma |
|
Message |
String |
Sim |
Sim |
Mensagem de erro. |
Nenhuma |
|
Description |
String |
Não |
Sim |
Descrição do erro. |
Nenhuma |
Sintaxe 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
}
Propriedades de ServiceConfig
Nome da propriedade | Tipo | Obrigatório | Atualização permitida | Descrição | Restrições |
ContentTypeCatagory | String | Não | Sim | Política para definir o valor do cabeçalho Content-Type ao chamar o service HTTP de backend. | Valores válidos:
|
ContentTypeValue | String | Não | Sim | Valor do cabeçalho Content-Type quando o service de backend é um service HTTP e ContentTypeCatagory está definido como DEFAULT ou CUSTOM. | Nenhuma |
FunctionComputeConfig | Map | Não | Sim | O service de backend é o Function Compute. | Nenhuma |
Mock | String | Não | Sim | Indica se o modo mock deve ser ativado. | Valores válidos:
|
MockHeaders | List | Não | Sim | Cabeçalhos de resposta mock personalizados. Este parâmetro é válido apenas quando o modo mock está ativado. | Nenhuma |
MockResult | String | Não | Sim | Resultado retornado no modo mock. | Nenhuma |
MockStatusCode | Integer | Não | Sim | Código de status. | O código de status deve ser compatível com os códigos de status de resposta HTTP 1.1. |
ServiceAddress | String | Não | Sim | Endpoint do service de backend. | Por exemplo, se o endereço completo do service de backend for |
ServiceHttpMethod | String | Não | Sim | Método HTTP usado para chamar o service de backend. | Valores válidos:
|
ServicePath | String | Não | Sim | Caminho do service de backend. | Por exemplo, se o endereço completo do service de backend for |
ServiceProtocol | String | Não | Sim | Protocolo do service de backend. | Valores válidos:
|
ServiceTimeOut | Integer | Não | Sim | Tempo limite do service de backend. | Unidade: milissegundos. |
ServiceVpcEnable | String | Não | Sim | Indica se uma VPC deve ser usada. | Valores válidos:
|
VpcConfig | Map | Não | Sim | Configurações do canal VPC. |
Sintaxe de VpcConfig
"VpcConfig": {
"InstanceId": String,
"VpcId": String,
"Port": Integer
}
Propriedades de VpcConfig
|
Nome da propriedade |
Tipo |
Obrigatório |
Atualização permitida |
Descrição |
Restrições |
|
InstanceId |
String |
Sim |
Sim |
ID da instância na VPC. |
Apenas instâncias ECS e SLB são suportadas. |
|
Port |
Integer |
Sim |
Sim |
Número da porta da instância. |
Nenhuma |
|
VpcId |
String |
Sim |
Sim |
ID da VPC. |
Nenhuma |
Sintaxe de SystemParameters
"SystemParameters": [
{
"DemoValue": String,
"ParameterName": String,
"ServiceParameterName": String,
"Location": String,
"Description": String
}
]
Propriedades de SystemParameters
Nome da propriedade | Tipo | Obrigatório | Atualização permitida | Descrição | Restrições |
Location | String | Sim | Sim | Localização do parâmetro. | Nenhuma |
ParameterName | String | Sim | Sim | Nome do parâmetro de sistema. | Valores válidos:
|
ServiceParameterName | String | Sim | Sim | Nome do parâmetro de backend. | Nenhuma |
DemoValue | String | Não | Sim | Exemplo. | Nenhuma |
Description | String | Não | Sim | Descrição do parâmetro. | Nenhuma |
Sintaxe de ServiceParameters
"ServiceParameters": [
{
"ParameterType": String,
"Location": String,
"ServiceParameterName": String
}
]
Propriedades de ServiceParameters
Nome da propriedade | Tipo | Obrigatório | Atualização permitida | Descrição | Restrições |
Location | String | Sim | Sim | Localização do parâmetro. | Valores válidos:
|
ParameterType | String | Sim | Sim | Tipo de dados do parâmetro de backend. | Valores válidos:
|
ServiceParameterName | String | Sim | Sim | Nome do parâmetro de backend. | Nenhuma |
Sintaxe de OpenIdConnectConfig
"OpenIdConnectConfig": {
"OpenIdApiType": String,
"PublicKey": String,
"PublicKeyId": String,
"IdTokenParamName": String
}
Propriedades de OpenIdConnectConfig
Nome da propriedade | Tipo | Obrigatório | Atualização permitida | Descrição | Restrições |
OpenIdApiType | String | Sim | Sim | Modo OpenID Connect. | Valores válidos:
|
IdTokenParamName | String | Não | Sim | Nome do parâmetro correspondente ao token. | Nenhuma |
PublicKey | String | Não | Sim | Chave pública. | Nenhuma |
PublicKeyId | String | Não | Sim | ID da chave pública. | Nenhuma |
Sintaxe de RequestConfig
"RequestConfig": {
"RequestMode": String,
"RequestPath": String,
"PostBodyDescription": String,
"RequestProtocol": String,
"RequestHttpMethod": String,
"BodyFormat": String
}
Propriedades de RequestConfig
Nome da propriedade | Tipo | Obrigatório | Atualização permitida | Descrição | Restrições |
RequestHttpMethod | String | Sim | Sim | Método de requisição. | Valores válidos:
|
RequestMode | String | Sim | Sim | Modo de requisição. | Valores válidos:
|
RequestPath | String | Sim | Sim | URI da requisição. | Por exemplo, se a URI completa da API for |
RequestProtocol | String | Sim | Sim | Tipos de protocolo suportados pela API. | Valores válidos:
Separe vários protocolos com vírgulas (,), por exemplo, |
BodyFormat | String | Não | Sim | Para requisições POST, PUT ou PATCH, especifica como os dados são passados ao servidor. | Valores válidos:
Válido apenas se RequestMode estiver definido como MAPPING. |
PostBodyDescription | String | Não | Sim | Descrição do corpo da requisição. | Nenhuma |
Sintaxe de ServiceParametersMap
"ServiceParametersMap": [
{
"RequestParameterName": String,
"ServiceParameterName": String
}
]
Propriedades de ServiceParametersMap
|
Nome da propriedade |
Tipo |
Obrigatório |
Atualização permitida |
Descrição |
Restrições |
|
RequestParameterName |
String |
Sim |
Sim |
Nome do parâmetro frontend. |
O valor deste parâmetro deve existir em RequestParameters. Deve corresponder a ApiParameterName em RequestParameters. |
|
ServiceParameterName |
String |
Sim |
Sim |
Nome do parâmetro de backend. |
Nenhuma |
Sintaxe 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
}
]
Propriedades de RequestParameters
Nome da propriedade | Tipo | Obrigatório | Atualização permitida | Descrição | Restrições |
ApiParameterName | String | Sim | Sim | Nome do parâmetro. | Nenhuma |
Location | String | Sim | Sim | Localização do parâmetro. | Valores válidos:
|
ParameterType | String | Sim | Não | Tipo do parâmetro. | Valores válidos:
|
Required | String | Sim | Sim | Indica se o parâmetro é obrigatório. | Valores válidos:
|
DefaultValue | String | Não | Sim | Valor padrão. | Nenhuma |
DemoValue | String | Não | Sim | Valor de exemplo. | Nenhuma |
Description | String | Não | Sim | Descrição do parâmetro. | Nenhuma |
DocOrder | Integer | Não | Sim | Ordem dentro do documento. | Nenhuma |
DocShow | String | Não | Sim | Indica se o SDK ou documentos gerados pelo API Gateway são visíveis. | Valores válidos:
|
EnumValue | String | Não | Sim | Valores válidos do parâmetro quando ParameterType está definido como Int, Long, Float, Double ou String. | Separe vários valores com vírgulas (,), por exemplo, |
JsonScheme | String | Não | Sim | Se ParameterType estiver definido como String, o parâmetro é verificado com base no esquema JSON. | Nenhuma |
MaxLength | Integer | Não | Sim | Comprimento máximo do parâmetro. Válido apenas se ParameterType estiver definido como String. | Nenhuma |
MaxValue | Integer | Não | Sim | Valor máximo do parâmetro. Válido apenas se ParameterType estiver definido como Int, Long, Float ou Double. | Nenhuma |
MinLength | Integer | Não | Sim | Comprimento mínimo do parâmetro. Válido apenas se ParameterType estiver definido como String. | Nenhuma |
MinValue | Integer | Não | Sim | Valor mínimo do parâmetro. Válido apenas se ParameterType estiver definido como Int, Long, Float ou Double. | Nenhuma |
RegularExpression | String | Não | Sim | Se ParameterType estiver definido como String, o parâmetro é verificado com base na expressão regular. | Nenhuma |
Sintaxe de ConstParameters
"ConstParameters": [
{
"ConstValue": String,
"ServiceParameterName": String,
"Description": String,
"Location": String
}
]
Propriedades de ConstParameters
Nome da propriedade | Tipo | Obrigatório | Atualização permitida | Descrição | Restrições |
ConstValue | String | Sim | Sim | Valor do parâmetro. | Nenhuma |
Location | String | Sim | Sim | Localização do parâmetro. | Valores válidos:
|
ServiceParameterName | String | Sim | Sim | Nome do parâmetro de backend. | Nenhuma |
Description | String | Não | Sim | Descrição do parâmetro. | Nenhuma |
Sintaxe 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
}
Propriedades de FunctionComputeConfig
Nome da propriedade | Tipo | Obrigatório | Atualização permitida | Descrição | Restrições |
ContentTypeCatagory | String | Não | Sim | Política para definir o valor do cabeçalho Content-Type ao chamar o service HTTP de backend. | Valores válidos:
|
FcVersion | String | Não | Não | Versão do Function Compute. | Valores válidos:
|
ContentTypeValue | String | Não | Sim | Valor do cabeçalho Content-Type ao chamar o service HTTP de backend com ContentTypeCatagory definido como DEFAULT ou CUSTOM. | Nenhuma |
FcBaseUrl | String | Não | Sim | Endpoint do gatilho. | O endpoint deve começar com |
FcRegionId | String | Não | Sim | ID da região onde o Function Compute está implantado. | Nenhuma |
FcType | String | Não | Sim | Tipo da função. | Valores válidos:
|
FunctionName | String | Não | Sim | Nome da função no Function Compute. | Nenhuma |
Method | String | Não | Sim | Método de requisição HTTP. | Valores válidos:
|
OnlyBusinessPath | Boolean | Não | Sim | Indica se apenas o caminho de requisição de backend personalizado deve ser passado ao service de backend. | Valores válidos:
|
Path | String | Não | Sim | Caminho da requisição de backend. | O parâmetro deve estar entre colchetes ([]), por exemplo, |
Qualifier | String | Não | Sim | Alias da função no Function Compute. | Nenhuma |
RoleArn | String | Não | Sim | ARN da função RAM assumida pelo API Gateway para acessar o Function Compute. | Nenhuma |
ServiceName | String | Não | Sim | Nome do service no Function Compute. | Nenhuma |
Sintaxe de MockHeaders
"MockHeaders": [
{
"HeaderValue": String,
"HeaderName": String
}
]
Propriedades de MockHeaders
|
Nome da propriedade |
Tipo |
Obrigatório |
Atualização permitida |
Descrição |
Restrições |
|
HeaderName |
String |
Sim |
Sim |
Nome do cabeçalho de resposta. |
Nenhuma |
|
HeaderValue |
String |
Sim |
Sim |
Valor do cabeçalho de resposta. |
Nenhuma |
Valores de retorno
Fn::GetAtt
ApiId: ID da API.
ARN significa Alibaba Cloud Resource Name.
Exemplos
Altere os valores dos parâmetros nos exemplos a seguir conforme suas necessidades. Por exemplo, altere o 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": {
}
}