Tous les produits
Search
Centre de documentation

Resource Orchestration Service:ALIYUN::ApiGateway::Api

Dernière mise à jour :Sep 07, 2026

La ressource ALIYUN::ApiGateway::Api permet de créer une API dans API Gateway.

Syntaxe

{
  "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
  }
}

Propriétés

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

ApiName

String

Oui

Oui

Nom de l'API.

La valeur doit comporter entre 4 et 50 caractères. Elle doit commencer par une lettre anglaise ou un caractère chinois et ne peut contenir que des lettres anglaises, des caractères chinois, des chiffres et des traits de soulignement (_).

Remarque

Les noms d'API doivent être uniques au sein d'un groupe d'API.

GroupId

String

Oui

Non

ID du groupe d'API.

Aucune

RequestConfig

Map

Oui

Oui

Configuration des requêtes API envoyées par les consommateurs à API Gateway.

Propriétés RequestConfig.

ResultSample

String

Non

Oui

Exemple de réponse du service backend.

Aucune

ResultType

String

Non

Oui

Format de la réponse du service backend.

Valeurs valides :

  • JSON (par défaut)

  • TEXT

  • BINARY

  • XML

  • PASSTHROUGH

ServiceConfig

Map

Oui

Oui

Configuration des requêtes API envoyées par API Gateway au service backend.

Propriétés ServiceConfig.

Visibility

String

Oui

Oui

Indique si l'API est publique.

Valeurs valides :

  • Public

  • PRIVATE : la ressource n'est pas publique.

AllowSignatureMethod

String

Non

Oui

Requis lorsque AuthType est défini sur APP. Définit l'algorithme de signature.

Valeurs valides :

  • HmacSHA256 (par défaut)

  • HmacSHA1

AppCodeAuthType

String

Non

Oui

Type d'authentification AppCode.

Valide uniquement si vous définissez AuthType sur APP. Valeurs valides :

  • DEFAULT (par défaut) : le paramètre du groupe d'API est utilisé.

  • DISABLE : l'opération n'est pas autorisée.

  • HEADER : l'authentification AppCode est autorisée uniquement pour les requêtes incluant l'en-tête AppCode.

  • HEADER_QUERY : l'authentification AppCode est autorisée pour les requêtes incluant l'en-tête AppCode ou le paramètre de requête AppCode.

AuthType

String

Non

Oui

Type d'authentification de sécurité de l'API.

Valeurs valides :

  • APP : seules les applications autorisées peuvent appeler l'API.

  • ANONYMOUS : les appels anonymes sont autorisés. API Gateway n'effectue pas d'authentification de l'identité de l'appelant et ne peut pas définir de politiques de limitation du débit pour celui-ci. Si le groupe d'API auquel appartient l'API doit être répertorié sur Alibaba Cloud Marketplace, déplacez l'API vers un autre groupe, définissez l'API comme privée ou utilisez l'authentification d'application Alibaba Cloud.

  • APPOPENID : OpenID Connect est utilisé pour l'authentification d'identité tierce et seules les applications autorisées peuvent appeler l'API. Si vous définissez AuthType sur cette valeur, vous devez spécifier OpenIdConnectConfig.

ConstParameters

List

Non

Oui

Paramètres constants de l'API.

Propriétés ConstParameters.

Description

String

Non

Oui

Description de l'API.

La description peut comporter jusqu'à 180 caractères.

DisableInternet

Boolean

Non

Oui

Indique s'il faut désactiver les appels via le réseau public.

Valeurs valides :

  • true : interdit.

  • false : l'opération est autorisée.

ErrorCodeSamples

List

Non

Oui

Exemples de codes d'erreur renvoyés par le service backend.

Propriétés ErrorCodeSamples.

FailResultSample

String

Non

Oui

Exemple de réponse en cas d'échec de la requête provenant du service backend.

Aucune

ForceNonceCheck

Boolean

Non

Oui

Indique s'il faut vérifier de force X-Ca-Nonce.

Valeurs valides :

  • true : une vérification est forcée.

  • false : aucune vérification obligatoire n'est effectuée.

OpenIdConnectConfig

Map

Non

Oui

Configuration de l'authentification OpenID Connect.

Propriétés OpenIdConnectConfig.

RequestParameters

List

Non

Oui

Paramètres des requêtes API envoyées par les consommateurs à API Gateway.

Propriétés RequestParameters.

ResultBodyModel

String

Non

Oui

Résultat de retour de l'API.

Aucune

ResultDescriptions

String

Non

Oui

Description du résultat.

Aucune

ServiceParameters

List

Non

Oui

Paramètres des requêtes API envoyées par API Gateway au service backend.

Propriétés ServiceParameters.

ServiceParametersMap

List

Non

Oui

Mappages entre les paramètres de requête consommateur-vers-passerelle et passerelle-vers-backend.

Propriétés ServiceParametersMap.

SystemParameters

List

Non

Oui

Paramètres système de l'API.

Propriétés SystemParameters.

Tags

List

Non

Oui

Tags.

Vous pouvez ajouter jusqu'à 20 tags.

Propriétés Tags.

WebSocketApiType

String

Non

Oui

Type d'API de communication bidirectionnelle.

Valeurs valides :

  • COMMON : une API commune.

  • REGISTER : une API d'enregistrement.

  • UNREGISTER : une API de désenregistrement.

  • NOTIFY : une notification descendante.

Syntaxe des tags

"Tags": [
  {
    "Key": String,
    "Value": String
  }
]  

Propriétés des tags

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

Key

String

Oui

Non

Clé du tag.

La clé du tag doit comporter entre 1 et 128 caractères. Elle ne peut pas commencer par aliyun ou acs: et ne peut pas contenir http:// ni https://.

Value

String

Non

Non

Valeur du tag.

La valeur du tag peut comporter entre 0 et 128 caractères. Elle ne peut pas commencer par aliyun ou acs: et ne peut pas contenir http:// ni https://.

Syntaxe ErrorCodeSamples

"ErrorCodeSamples": [
  {
    "Message": String,
    "Code": String,
    "Description": String
  }
]

Propriétés ErrorCodeSamples

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

Code

String

Oui

Oui

Code d'erreur.

Aucune

Message

String

Oui

Oui

Message d'erreur.

Aucune

Description

String

Non

Oui

Description de l'erreur.

Aucune

Syntaxe 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
}

Propriétés de ServiceConfig

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

ContentTypeCatagory

String

Non

Oui

La politique de définition de la valeur de l'en-tête Content-Type lors de l'appel du service HTTP backend.

Valeurs valides :

  • DEFAULT : utilise la valeur par défaut d'API Gateway.

  • CUSTOM : utilise une valeur personnalisée.

  • CLIENT (par défaut) : utilise l'en-tête Content-Type de la requête client.

ContentTypeValue

String

Non

Oui

La valeur de l'en-tête Content-Type lorsque le service backend est un service HTTP et que ContentTypeCatagory est défini sur DEFAULT ou CUSTOM.

Aucune

FunctionComputeConfig

Map

Non

Oui

Le service backend est Function Compute.

Aucune

Propriétés de FunctionComputeConfig.

Mock

String

Non

Oui

Indique s'il faut activer le mode mock.

Valeurs valides :

  • TRUE : active le mode mock.

  • FALSE (par défaut) : n'active pas le mode mock.

MockHeaders

List

Non

Oui

Les en-têtes de réponse mock personnalisés. Ce paramètre n'est valide que lorsque le mode mock est activé.

Aucune

Propriétés de MockHeaders.

MockResult

String

Non

Oui

Le résultat renvoyé en mode mock.

Aucune

MockStatusCode

Integer

Non

Oui

Le code d'état.

Le code d'état doit être compatible avec les codes d'état de réponse HTTP 1.1.

ServiceAddress

String

Non

Oui

L'endpoint du service backend.

Par exemple, si l'adresse complète du service backend est http://example.com:8080/object/add?key1=value1&key2=value2, l'endpoint du service backend est http://example.com:8080.

ServiceHttpMethod

String

Non

Oui

La méthode HTTP utilisée pour appeler le service backend.

Valeurs valides :

  • GET (par défaut)

  • POST

  • DELETE

  • PUT

  • HEAD

  • TRACE

  • PATCH

  • CONNECT

  • OPTIONS

  • ANY

ServicePath

String

Non

Oui

Le chemin du service backend.

Par exemple, si l'adresse complète du service backend est http://example.com:8080/object/add?key1=value1&key2=value2, le chemin du service backend est /object/add.

ServiceProtocol

String

Non

Oui

Le protocole du service backend.

Valeurs valides :

  • HTTP

  • HTTPS

  • FunctionCompute

ServiceTimeOut

Integer

Non

Oui

Le délai d'expiration du service backend.

Unité : millisecondes.

ServiceVpcEnable

String

Non

Oui

Indique s'il faut utiliser un VPC.

Valeurs valides :

  • TRUE : activé.

  • FALSE (par défaut) : désactivé.

VpcConfig

Map

Non

Oui

Les configurations du canal VPC.

Propriétés de VpcConfig.

Syntaxe de VpcConfig

"VpcConfig": {
  "InstanceId": String,
  "VpcId": String,
  "Port": Integer
}

Propriétés VpcConfig

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

InstanceId

String

Oui

Oui

ID de l'instance dans le VPC.

Seules les instances ECS et SLB sont prises en charge.

Port

Integer

Oui

Oui

Numéro de port de l'instance.

Aucune

VpcId

String

Oui

Oui

ID du VPC.

Aucune

Syntaxe SystemParameters

"SystemParameters": [
  {
    "DemoValue": String,
    "ParameterName": String,
    "ServiceParameterName": String,
    "Location": String,
    "Description": String
  }
]

Propriétés SystemParameters

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

Location

String

Oui

Oui

Emplacement du paramètre.

Aucune

ParameterName

String

Oui

Oui

Nom du paramètre système.

Valeurs valides :

  • CaClientIp

  • CaDomain

  • CaRequestHandleTime

  • CaAppId

  • CaRequestId

  • CaHttpSchema

  • CaProxy

ServiceParameterName

String

Oui

Oui

Nom du paramètre backend.

Aucune

DemoValue

String

Non

Oui

Exemple.

Aucune

Description

String

Non

Oui

Description du paramètre.

Aucune

Syntaxe ServiceParameters

"ServiceParameters": [
  {
    "ParameterType": String,
    "Location": String,
    "ServiceParameterName": String
  }
]

Propriétés ServiceParameters

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

Location

String

Oui

Oui

Emplacement du paramètre.

Valeurs valides :

  • BODY

  • HEAD

  • QUERY

  • PATH

ParameterType

String

Oui

Oui

Type de données du paramètre backend.

Valeurs valides :

  • STRING : chaîne de caractères.

  • NUMBER : nombre.

  • BOOLEAN : valeur booléenne.

ServiceParameterName

String

Oui

Oui

Nom du paramètre backend.

Aucune

Syntaxe OpenIdConnectConfig

"OpenIdConnectConfig": {
  "OpenIdApiType": String,
  "PublicKey": String,
  "PublicKeyId": String,
  "IdTokenParamName": String
}

Propriétés OpenIdConnectConfig

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

OpenIdApiType

String

Oui

Oui

Le mode OpenID Connect.

Valeurs valides :

  • IDTOKEN : l'API est une API d'autorisation utilisée pour obtenir un jeton. Si vous définissez OpenIdApiType sur cette valeur, vous devez spécifier PublicKeyId et PublicKey.

  • BUSINESS : obtient l'API métier et effectue une authentification par jeton. Cette option nécessite de spécifier le paramètre IdTokenParamName.

IdTokenParamName

String

Non

Oui

Le nom du paramètre correspondant au jeton.

Aucune

PublicKey

String

Non

Oui

La clé publique.

Aucune

PublicKeyId

String

Non

Oui

L'ID de la clé publique.

Aucune

Syntaxe RequestConfig

"RequestConfig": {
  "RequestMode": String,
  "RequestPath": String,
  "PostBodyDescription": String,
  "RequestProtocol": String,
  "RequestHttpMethod": String,
  "BodyFormat": String
}

Propriétés RequestConfig

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

RequestHttpMethod

String

Oui

Oui

La méthode de requête.

Valeurs valides :

  • GET (par défaut)

  • POST

  • DELETE

  • PUT

  • HEADER

  • TRACE

  • PATCH

  • OPTIONS

RequestMode

String

Oui

Oui

Le mode de requête.

Valeurs valides :

  • MAPPING (par défaut) : les paramètres sont mappés.

  • PASSTHROUGH : les paramètres sont transmis tels quels.

RequestPath

String

Oui

Oui

L'URI de la requête.

Par exemple, si l'URI complète de l'API est http://example.com:8080/object/add?key1=value1&key2=value2, l'URI de la requête est /object/add.

RequestProtocol

String

Oui

Oui

Les types de protocoles pris en charge par l'API.

Valeurs valides :

  • HTTP

  • HTTPS

Séparez plusieurs protocoles par des virgules (,), par exemple HTTP,HTTPS.

BodyFormat

String

Non

Oui

Pour les requêtes POST, PUT ou PATCH, spécifie comment les données sont transmises au serveur.

Valeurs valides :

  • FORM : les données sont transmises sous forme de formulaire.

  • STREAM : les données sont transmises sous forme de flux d'octets.

Valide uniquement si RequestMode est défini sur MAPPING.

PostBodyDescription

String

Non

Oui

Description du corps de la requête.

Aucune

Syntaxe ServiceParametersMap

"ServiceParametersMap": [
  {
    "RequestParameterName": String,
    "ServiceParameterName": String
  }
]

Propriétés ServiceParametersMap

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

RequestParameterName

String

Oui

Oui

Le nom du paramètre frontal.

La valeur de ce paramètre doit exister dans RequestParameters. Doit correspondre à ApiParameterName dans RequestParameters.

ServiceParameterName

String

Oui

Oui

Le nom du paramètre backend.

Aucune

Syntaxe 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
  }
]

Propriétés de RequestParameters

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

ApiParameterName

String

Oui

Oui

Nom du paramètre.

Aucune

Location

String

Oui

Oui

Emplacement du paramètre.

Valeurs valides :

  • BODY

  • HEAD

  • QUERY

  • PATH

ParameterType

String

Oui

Non

Type du paramètre.

Valeurs valides :

  • String : séquence de caractères.

  • Int : entier.

  • Long : entier long.

  • Float : nombre à virgule flottante en simple précision.

  • Double : nombre à virgule flottante en double précision.

  • Boolean : valeur booléenne.

Required

String

Oui

Oui

Indique si le paramètre est obligatoire.

Valeurs valides :

  • REQUIRED : le paramètre est obligatoire.

  • OPTIONAL : le paramètre est facultatif.

DefaultValue

String

Non

Oui

Valeur par défaut.

Aucune

DemoValue

String

Non

Oui

Valeur d'exemple.

Aucune

Description

String

Non

Oui

Description du paramètre.

Aucune

DocOrder

Integer

Non

Oui

Ordre dans le document.

Aucune

DocShow

String

Non

Oui

Indique si le SDK ou les documents générés par API Gateway sont visibles.

Valeurs valides :

  • PUBLIC

  • PRIVATE

EnumValue

String

Non

Oui

Valeurs valides du paramètre lorsque ParameterType est défini sur Int, Long, Float, Double ou String.

Séparez plusieurs valeurs par des virgules (,), par exemple 1,2,3,4,9 ou A,B,C,E,F.

JsonScheme

String

Non

Oui

Si ParameterType est défini sur String, le paramètre est vérifié selon le schéma JSON.

Aucune

MaxLength

Integer

Non

Oui

Longueur maximale du paramètre. Valide uniquement si ParameterType est défini sur String.

Aucune

MaxValue

Integer

Non

Oui

Valeur maximale du paramètre. Valide uniquement si ParameterType est défini sur Int, Long, Float ou Double.

Aucune

MinLength

Integer

Non

Oui

Longueur minimale du paramètre. Valide uniquement si ParameterType est défini sur String.

Aucune

MinValue

Integer

Non

Oui

Valeur minimale du paramètre. Valide uniquement si ParameterType est défini sur Int, Long, Float ou Double.

Aucune

RegularExpression

String

Non

Oui

Si ParameterType est défini sur String, le paramètre est vérifié selon l'expression régulière.

Aucune

Syntaxe de ConstParameters

"ConstParameters": [
  {
    "ConstValue": String,
    "ServiceParameterName": String,
    "Description": String,
    "Location": String
  }
]

Propriétés de ConstParameters

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

ConstValue

String

Oui

Oui

Valeur du paramètre.

Aucune

Location

String

Oui

Oui

Emplacement du paramètre.

Valeurs valides :

  • BODY

  • HEAD (par défaut)

ServiceParameterName

String

Oui

Oui

Nom du paramètre backend.

Aucune

Description

String

Non

Oui

Description du paramètre.

Aucune

Syntaxe 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
}

Propriétés FunctionComputeConfig

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

ContentTypeCatagory

String

Non

Oui

La stratégie de définition de la valeur de l'en-tête Content-Type lors de l'appel du service HTTP backend.

Valeurs valides :

  • DEFAULT : utilise la valeur par défaut d'API Gateway.

  • CUSTOM : utilise une valeur personnalisée.

  • CLIENT (par défaut) : utilise l'en-tête Content-Type de la requête client.

FcVersion

String

Non

Non

La version de Function Compute.

Valeurs valides :

  • 2.0

  • 3.0

ContentTypeValue

String

Non

Oui

La valeur de l'en-tête Content-Type lors de l'appel du service HTTP backend lorsque ContentTypeCatagory est défini sur DEFAULT ou CUSTOM.

Aucune

FcBaseUrl

String

Non

Oui

L'endpoint du déclencheur.

L'endpoint doit commencer par http:// ou https://.

FcRegionId

String

Non

Oui

L'ID de la région où Function Compute est déployé.

Aucune

FcType

String

Non

Oui

Le type de fonction.

Valeurs valides :

  • FCEvent (par défaut).

  • HttpTrigger.

FunctionName

String

Non

Oui

Le nom de la fonction dans Function Compute.

Aucune

Method

String

Non

Oui

La méthode de requête HTTP.

Valeurs valides :

  • GET (par défaut)

  • POST

  • DELETE

  • PUT

  • HEAD

  • PATCH

  • OPTIONS

  • ANY

OnlyBusinessPath

Boolean

Non

Oui

Indique s'il faut transmettre uniquement le chemin de requête backend personnalisé au service backend.

Valeurs valides :

  • true

  • false

Path

String

Non

Oui

Le chemin de la requête backend.

Le paramètre doit être placé entre crochets ([]), par exemple /getUserInfo/[userId].

Qualifier

String

Non

Oui

L'alias de la fonction dans Function Compute.

Aucune

RoleArn

String

Non

Oui

L'ARN du rôle RAM qu'API Gateway assume pour accéder à Function Compute.

Aucune

ServiceName

String

Non

Oui

Le nom du service dans Function Compute.

Aucune

Syntaxe MockHeaders

"MockHeaders": [
  {
    "HeaderValue": String,
    "HeaderName": String
  }
]    

Propriétés MockHeaders

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

HeaderName

String

Oui

Oui

Le nom de l'en-tête de réponse.

Aucune

HeaderValue

String

Oui

Oui

La valeur de l'en-tête de réponse.

Aucune

Valeurs de retour

Fn::GetAtt

  • ApiId : l'ID de l'API.

  • ARN signifie Alibaba Cloud Resource Name.

Exemples

Remarque

Modifiez les valeurs des paramètres dans les exemples suivants en fonction de vos besoins. Par exemple, vous devez modifier la valeur de InstanceId.

Format 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: {}

Format 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": {
  }
}