Tous les produits
Search
Centre de documentation

Resource Orchestration Service:ALIYUN::ApiGateway::Api

Dernière mise à jour :Aug 10, 2026

Le type ALIYUN::ApiGateway::Api crée 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 longueur doit être comprise entre 4 et 50 caractères. Le nom doit commencer par une lettre latine ou un caractère chinois et ne peut contenir que des lettres latines, 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 vers API Gateway.

Propriétés de 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 vers le service backend.

Propriétés de 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 AuthType est défini sur APP. Valeurs valides :

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

  • 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'authentifie pas l'appelant et ne peut pas définir de politiques de limitation 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 de 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 de 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 systématiquement X-Ca-Nonce.

Valeurs valides :

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

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

OpenIdConnectConfig

Map

Non

Oui

Configuration de l'authentification OpenID Connect.

Propriétés de OpenIdConnectConfig.

RequestParameters

List

Non

Oui

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

Propriétés de RequestParameters.

ResultBodyModel

String

Non

Oui

Résultat renvoyé par 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 vers le service backend.

Propriétés de ServiceParameters.

ServiceParametersMap

List

Non

Oui

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

Propriétés de ServiceParametersMap.

SystemParameters

List

Non

Oui

Paramètres système de l'API.

Propriétés de SystemParameters.

Tags

List

Non

Oui

Tags.

Vous pouvez ajouter jusqu'à 20 tags.

Propriétés de Tags.

WebSocketApiType

String

Non

Oui

Type de l'API de communication bidirectionnelle.

Valeurs valides :

  • COMMON : une API courante.

  • 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 peut comporter de 1 à 128 caractères. Elle ne peut pas commencer par aliyun ou acs: et ne peut pas contenir http:// ou https://.

Value

String

Non

Non

Valeur du tag.

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

Syntaxe de ErrorCodeSamples

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

Propriétés de 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 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
}

Propriétés de ServiceConfig

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

ContentTypeCatagory

String

Non

Oui

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 : la valeur par défaut d'API Gateway est utilisée.

  • CUSTOM : une valeur personnalisée est utilisée.

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

ContentTypeValue

String

Non

Oui

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

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

Résultat renvoyé en mode mock.

Aucune

MockStatusCode

Integer

Non

Oui

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

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

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

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

Protocole du service backend.

Valeurs valides :

  • HTTP

  • HTTPS

  • FunctionCompute

ServiceTimeOut

Integer

Non

Oui

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

Configurations du canal VPC.

Propriétés de VpcConfig.

Syntaxe de VpcConfig

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

Propriétés de 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 de SystemParameters

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

Propriétés de 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 de ServiceParameters

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

Propriétés de 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 : une chaîne.

  • NUMBER : un nombre.

  • BOOLEAN : une valeur booléenne.

ServiceParameterName

String

Oui

Oui

Nom du paramètre backend.

Aucune

Syntaxe de OpenIdConnectConfig

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

Propriétés de OpenIdConnectConfig

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

OpenIdApiType

String

Oui

Oui

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

Nom du paramètre correspondant au jeton.

Aucune

PublicKey

String

Non

Oui

Clé publique.

Aucune

PublicKeyId

String

Non

Oui

ID de la clé publique.

Aucune

Syntaxe de RequestConfig

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

Propriétés de RequestConfig

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

RequestHttpMethod

String

Oui

Oui

Méthode de requête.

Valeurs valides :

  • GET (par défaut)

  • POST

  • DELETE

  • PUT

  • HEADER

  • TRACE

  • PATCH

  • OPTIONS

RequestMode

String

Oui

Oui

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

URI de la requête.

Par exemple, si l'URI complet 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

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 de ServiceParametersMap

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

Propriétés de ServiceParametersMap

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

RequestParameterName

String

Oui

Oui

Nom du paramètre frontend.

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

ServiceParameterName

String

Oui

Oui

Nom du paramètre backend.

Aucune

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

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 : une séquence de caractères.

  • Int : un entier.

  • Long : un entier long.

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

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

  • Boolean : une 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 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
}

Propriétés de FunctionComputeConfig

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

ContentTypeCatagory

String

Non

Oui

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 : la valeur par défaut d'API Gateway est utilisée.

  • CUSTOM : une valeur personnalisée est utilisée.

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

FcVersion

String

Non

Non

Version de Function Compute.

Valeurs valides :

  • 2.0

  • 3.0

ContentTypeValue

String

Non

Oui

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

Aucune

FcBaseUrl

String

Non

Oui

Endpoint du déclencheur.

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

FcRegionId

String

Non

Oui

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

Aucune

FcType

String

Non

Oui

Type de fonction.

Valeurs valides :

  • FCEvent (par défaut).

  • HttpTrigger.

FunctionName

String

Non

Oui

Nom de la fonction dans Function Compute.

Aucune

Method

String

Non

Oui

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

Chemin de la requête backend.

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

Qualifier

String

Non

Oui

Alias de la fonction dans Function Compute.

Aucune

RoleArn

String

Non

Oui

ARN du rôle RAM assumé par API Gateway pour accéder à Function Compute.

Aucune

ServiceName

String

Non

Oui

Nom du service dans Function Compute.

Aucune

Syntaxe de MockHeaders

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

Propriétés de MockHeaders

Nom de la propriété

Type

Obligatoire

Mise à jour autorisée

Description

Contraintes

HeaderName

String

Oui

Oui

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

Aucune

HeaderValue

String

Oui

Oui

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

Aucune

Valeurs de retour

Fn::GetAtt

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