All Products
Search
Document Center

Resource Orchestration Service:ALIYUN::ApiGateway::Api

Last Updated:Jun 04, 2026

ALIYUN::ApiGateway::Api digunakan untuk membuat API di API Gateway.

Sintaksis

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

Properti

Nama properti

Tipe

Wajib

Pembaruan diizinkan

Deskripsi

Batasan

ApiName

String

Ya

Ya

Nama API.

Nilai harus terdiri dari 4 hingga 50 karakter. Harus dimulai dengan huruf Inggris atau karakter Tionghoa dan hanya boleh berisi huruf Inggris, karakter Tionghoa, angka, dan garis bawah (_).

Catatan

Nama API harus unik dalam satu grup API.

GroupId

String

Ya

Tidak

ID grup API.

Tidak ada

RequestConfig

Map

Ya

Ya

Konfigurasi untuk permintaan API yang dikirim oleh konsumen ke API Gateway.

Properti RequestConfig.

ResultSample

String

Tidak

Ya

Contoh respons layanan backend.

Tidak ada

ResultType

String

Tidak

Ya

Format respons layanan backend.

Nilai valid:

  • JSON (default)

  • TEXT

  • BINARY

  • XML

  • PASSTHROUGH

ServiceConfig

Map

Ya

Ya

Konfigurasi untuk permintaan API yang dikirim oleh API Gateway ke layanan backend.

Properti ServiceConfig.

Visibility

String

Ya

Ya

Apakah API bersifat publik.

Nilai valid:

  • Public

  • PRIVATE: Sumber daya tidak bersifat publik.

AllowSignatureMethod

String

Tidak

Ya

Diperlukan ketika AuthType adalah APP. Menetapkan algoritma signature.

Nilai valid:

  • HmacSHA256 (default)

  • HmacSHA1

AppCodeAuthType

String

Tidak

Ya

Jenis autentikasi AppCode.

Hanya berlaku jika Anda menetapkan AuthType ke APP. Nilai valid:

  • DEFAULT (default): Menggunakan pengaturan grup API.

  • DISABLE: Operasi tidak diizinkan.

  • HEADER: Autentikasi AppCode hanya diizinkan untuk permintaan yang menyertakan header AppCode.

  • HEADER_QUERY: Autentikasi AppCode diizinkan untuk permintaan yang menyertakan header AppCode atau parameter kueri AppCode.

AuthType

String

Tidak

Ya

Jenis otentikasi keamanan API.

Nilai valid:

  • APP: Hanya aplikasi yang telah diberi otorisasi yang dapat memanggil API.

  • ANONYMOUS: Panggilan anonim diizinkan. API Gateway tidak melakukan otentikasi identitas terhadap pemanggil dan tidak dapat menetapkan kebijakan pembatasan kecepatan untuk pemanggil. Jika grup API tempat API ini berada akan didaftarkan di Alibaba Cloud Marketplace, pindahkan API ke grup lain, atur API menjadi privat, atau gunakan autentikasi aplikasi Alibaba Cloud.

  • APPOPENID: OpenID Connect digunakan untuk otentikasi identitas pihak ketiga, dan hanya aplikasi yang telah diberi otorisasi yang dapat memanggil API. Jika Anda menetapkan AuthType ke nilai ini, Anda harus menentukan OpenIdConnectConfig.

ConstParameters

List

Tidak

Ya

Parameter konstan API.

Properti ConstParameters.

Description

String

Tidak

Ya

Deskripsi API.

Deskripsi dapat memiliki panjang maksimal 180 karakter.

DisableInternet

Boolean

Tidak

Ya

Apakah panggilan melalui jaringan publik dinonaktifkan.

Nilai valid:

  • true: Dilarang.

  • false: Operasi diizinkan.

ErrorCodeSamples

List

Tidak

Ya

Contoh kode kesalahan yang dikembalikan oleh layanan backend.

Properti ErrorCodeSamples.

FailResultSample

String

Tidak

Ya

Contoh respons permintaan gagal dari layanan backend.

Tidak ada

ForceNonceCheck

Boolean

Tidak

Ya

Apakah pemeriksaan X-Ca-Nonce dilakukan secara paksa.

Nilai valid:

  • true: Pemeriksaan dilakukan secara paksa.

  • false: Pemeriksaan wajib tidak dilakukan.

OpenIdConnectConfig

Map

Tidak

Ya

Konfigurasi otentikasi OpenID Connect.

Properti OpenIdConnectConfig.

RequestParameters

List

Tidak

Ya

Parameter untuk permintaan API yang dikirim oleh konsumen ke API Gateway.

Properti RequestParameters.

ResultBodyModel

String

Tidak

Ya

Hasil pengembalian API.

Tidak ada

ResultDescriptions

String

Tidak

Ya

Deskripsi hasil.

Tidak ada

ServiceParameters

List

Tidak

Ya

Parameter untuk permintaan API yang dikirim oleh API Gateway ke layanan backend.

Properti ServiceParameters.

ServiceParametersMap

List

Tidak

Ya

Pemetaan antara parameter permintaan dari konsumen ke gateway dan dari gateway ke backend.

Properti ServiceParametersMap.

SystemParameters

List

Tidak

Ya

Parameter sistem API.

Properti SystemParameters.

Tags

List

Tidak

Ya

Tag.

Anda dapat menambahkan hingga 20 tag.

Properti Tags.

WebSocketApiType

String

Tidak

Ya

Jenis API komunikasi dua arah.

Nilai valid:

  • COMMON: API umum.

  • REGISTER: API registrasi.

  • UNREGISTER: API deregistrasi.

  • NOTIFY: notifikasi downlink.

Sintaksis Tags

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

Properti Tags

Nama properti

Tipe

Wajib

Pembaruan diizinkan

Deskripsi

Batasan

Key

String

Ya

Tidak

Kunci tag.

Kunci tag dapat terdiri dari 1 hingga 128 karakter. Tidak boleh diawali dengan aliyun atau acs: dan tidak boleh mengandung http:// atau https://.

Value

String

Tidak

Tidak

Nilai tag.

Nilai tag dapat terdiri dari 0 hingga 128 karakter. Tidak boleh diawali dengan aliyun atau acs: dan tidak boleh mengandung http:// atau https://.

Sintaksis ErrorCodeSamples

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

Properti ErrorCodeSamples

Nama properti

Type

Wajib

Pembaruan diizinkan

Deskripsi

Batasan

Code

String

Ya

Ya

Kode kesalahan.

Tidak ada

Message

String

Ya

Ya

Pesan kesalahan.

Tidak ada

Description

String

Tidak

Ya

Deskripsi kesalahan.

Tidak ada

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

Properti ServiceConfig

Nama properti

Tipe

Wajib

Pembaruan diizinkan

Deskripsi

Batasan

ContentTypeCatagory

String

Tidak

Ya

Kebijakan untuk menetapkan nilai header Content-Type saat memanggil layanan HTTP backend.

Nilai valid:

  • DEFAULT: Menggunakan nilai default API Gateway.

  • CUSTOM: Menggunakan nilai kustom.

  • CLIENT (default): Menggunakan header Content-Type dari permintaan klien.

ContentTypeValue

String

Tidak

Ya

Nilai header Content-Type ketika layanan backend adalah layanan HTTP dan ContentTypeCatagory diatur ke DEFAULT atau CUSTOM.

Tidak ada

FunctionComputeConfig

Map

Tidak

Ya

Layanan backend adalah Function Compute.

Tidak ada

Properti FunctionComputeConfig.

Mock

String

Tidak

Ya

Apakah mode mock diaktifkan.

Nilai valid:

  • TRUE: mengaktifkan mode mock.

  • FALSE (default): tidak mengaktifkan mode mock.

MockHeaders

List

Tidak

Ya

Header respons mock kustom. Parameter ini hanya berlaku ketika mode mock diaktifkan.

Tidak ada

Properti MockHeaders.

MockResult

String

Tidak

Ya

Hasil yang dikembalikan dalam mode mock.

Tidak ada

MockStatusCode

Integer

Tidak

Ya

Kode status.

Kode status harus kompatibel dengan kode status respons HTTP 1.1.

ServiceAddress

String

Tidak

Ya

Titik akhir layanan backend.

Misalnya, jika alamat lengkap layanan backend adalah http://example.com:8080/object/add?key1=value1&key2=value2, titik akhir layanan backend adalah http://example.com:8080.

ServiceHttpMethod

String

Tidak

Ya

Metode HTTP yang digunakan untuk memanggil layanan backend.

Nilai valid:

  • GET (default)

  • POST

  • DELETE

  • PUT

  • HEAD

  • TRACE

  • PATCH

  • CONNECT

  • OPTIONS

  • ANY

ServicePath

String

Tidak

Ya

Jalur layanan backend.

Misalnya, jika alamat lengkap layanan backend adalah http://example.com:8080/object/add?key1=value1&key2=value2, jalur layanan backend adalah /object/add.

ServiceProtocol

String

Tidak

Ya

Protokol layanan backend.

Nilai valid:

  • HTTP

  • HTTPS

  • FunctionCompute

ServiceTimeOut

Integer

Tidak

Ya

Periode timeout layanan backend.

Unit: milidetik.

ServiceVpcEnable

String

Tidak

Ya

Apakah menggunakan VPC.

Nilai valid:

  • TRUE: Diaktifkan.

  • FALSE (default): Dinonaktifkan.

VpcConfig

Map

Tidak

Ya

Konfigurasi saluran VPC.

Properti VpcConfig.

Sintaksis VpcConfig

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

Properti VpcConfig

Nama properti

Tipe

Wajib

Pembaruan diizinkan

Deskripsi

Batasan

InstanceId

String

Ya

Ya

ID instans di VPC.

Hanya instans ECS dan SLB yang didukung.

Port

Integer

Ya

Ya

Nomor port instans.

Tidak ada

VpcId

String

Ya

Ya

ID VPC.

Tidak ada

Sintaksis SystemParameters

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

Properti SystemParameters

Nama properti

Tipe

Wajib

Pembaruan diizinkan

Deskripsi

Batasan

Location

String

Ya

Ya

Lokasi parameter.

Tidak ada

ParameterName

String

Ya

Ya

Nama parameter sistem.

Nilai valid:

  • CaClientIp

  • CaDomain

  • CaRequestHandleTime

  • CaAppId

  • CaRequestId

  • CaHttpSchema

  • CaProxy

ServiceParameterName

String

Ya

Ya

Nama parameter backend.

Tidak ada

DemoValue

String

Tidak

Ya

Contoh.

Tidak ada

Description

String

Tidak

Ya

Deskripsi parameter.

Tidak ada

Sintaksis ServiceParameters

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

Properti ServiceParameters

Nama properti

Tipe

Wajib

Pembaruan diizinkan

Deskripsi

Batasan

Location

String

Ya

Ya

Lokasi parameter.

Nilai valid:

  • BODY

  • HEAD

  • QUERY

  • PATH

ParameterType

String

Ya

Ya

Tipe data parameter backend.

Nilai valid:

  • STRING: string.

  • NUMBER: angka.

  • BOOLEAN: Nilai Boolean.

ServiceParameterName

String

Ya

Ya

Nama parameter backend.

Tidak ada

Sintaksis OpenIdConnectConfig

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

Properti OpenIdConnectConfig

Nama properti

Tipe

Wajib

Pembaruan diizinkan

Deskripsi

Batasan

OpenIdApiType

String

Ya

Ya

Mode OpenID Connect.

Nilai valid:

  • IDTOKEN: API adalah API otorisasi yang digunakan untuk mendapatkan token. Jika Anda menetapkan OpenIdApiType ke nilai ini, Anda harus menentukan PublicKeyId dan PublicKey.

  • BUSINESS: Mendapatkan API bisnis dan melakukan autentikasi token. Opsi ini mengharuskan Anda menentukan parameter IdTokenParamName.

IdTokenParamName

String

Tidak

Ya

Nama parameter yang sesuai dengan token.

Tidak ada

PublicKey

String

Tidak

Ya

Kunci publik.

Tidak ada

PublicKeyId

String

Tidak

Ya

ID kunci publik.

Tidak ada

Sintaksis RequestConfig

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

Properti RequestConfig

Nama properti

Tipe

Wajib

Pembaruan diizinkan

Deskripsi

Batasan

RequestHttpMethod

String

Ya

Ya

Metode permintaan.

Nilai valid:

  • GET (default)

  • POST

  • DELETE

  • PUT

  • HEADER

  • TRACE

  • PATCH

  • OPTIONS

RequestMode

String

Ya

Ya

Mode permintaan.

Nilai valid:

  • MAPPING (default): Parameter dipetakan.

  • PASSTHROUGH: Parameter dilewatkan.

RequestPath

String

Ya

Ya

URI permintaan.

Misalnya, jika URI lengkap API adalah http://example.com:8080/object/add?key1=value1&key2=value2, URI permintaan adalah /object/add.

RequestProtocol

String

Ya

Ya

Jenis protokol yang didukung oleh API.

Nilai valid:

  • HTTP

  • HTTPS

Pisahkan beberapa protokol dengan koma (,), misalnya, HTTP,HTTPS.

BodyFormat

String

Tidak

Ya

Untuk permintaan POST, PUT, atau PATCH, menentukan cara data dikirim ke server.

Nilai valid:

  • FORM: Data dikirim sebagai formulir.

  • STREAM: Data dikirim sebagai aliran byte.

Hanya berlaku jika RequestMode diatur ke MAPPING.

PostBodyDescription

String

Tidak

Ya

Deskripsi isi permintaan.

Tidak ada

Sintaksis ServiceParametersMap

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

Properti ServiceParametersMap

Nama properti

Type

Wajib

Pembaruan diizinkan

Deskripsi

Batasan

RequestParameterName

String

Ya

Ya

Nama parameter antarmuka depan.

Nilai parameter ini harus ada di RequestParameters. Harus sesuai dengan ApiParameterName di RequestParameters.

ServiceParameterName

String

Ya

Ya

Nama parameter backend.

Tidak ada

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

Properti RequestParameters

Nama properti

Tipe

Wajib

Pembaruan diizinkan

Deskripsi

Batasan

ApiParameterName

String

Ya

Ya

Nama parameter.

Tidak ada

Location

String

Ya

Ya

Lokasi parameter.

Nilai valid:

  • BODY

  • HEAD

  • QUERY

  • PATH

ParameterType

String

Ya

Tidak

Jenis parameter.

Nilai valid:

  • String: Urutan karakter.

  • Int: bilangan bulat.

  • Long: bilangan bulat panjang.

  • Float: bilangan titik mengambang presisi tunggal.

  • Double: bilangan titik mengambang presisi ganda.

  • Boolean: Nilai Boolean.

Required

String

Ya

Ya

Apakah parameter wajib.

Nilai valid:

  • REQUIRED: Parameter wajib.

  • OPTIONAL: Parameter opsional.

DefaultValue

String

Tidak

Ya

Nilai default.

Tidak ada

DemoValue

String

Tidak

Ya

Nilai contoh.

Tidak ada

Description

String

Tidak

Ya

Deskripsi parameter.

Tidak ada

DocOrder

Integer

Tidak

Ya

Urutan dalam dokumen.

Tidak ada

DocShow

String

Tidak

Ya

Apakah SDK atau dokumen yang dihasilkan oleh API Gateway terlihat.

Nilai valid:

  • PUBLIC

  • PRIVATE

EnumValue

String

Tidak

Ya

Nilai valid parameter ketika ParameterType diatur ke Int, Long, Float, Double, atau String.

Pisahkan beberapa nilai dengan koma (,), misalnya, 1,2,3,4,9 atau A,B,C,E,F.

JsonScheme

String

Tidak

Ya

Jika ParameterType diatur ke String, parameter diverifikasi berdasarkan skema JSON.

Tidak ada

MaxLength

Integer

Tidak

Ya

Panjang maksimum parameter. Hanya berlaku jika ParameterType diatur ke String.

Tidak ada

MaxValue

Integer

Tidak

Ya

Nilai maksimum parameter. Hanya berlaku jika ParameterType diatur ke Int, Long, Float, atau Double.

Tidak ada

MinLength

Integer

Tidak

Ya

Panjang minimum parameter. Hanya berlaku jika ParameterType diatur ke String.

Tidak ada

MinValue

Integer

Tidak

Ya

Nilai minimum parameter. Hanya berlaku jika ParameterType diatur ke Int, Long, Float, atau Double.

Tidak ada

RegularExpression

String

Tidak

Ya

Jika ParameterType diatur ke String, parameter diverifikasi berdasarkan ekspresi reguler.

Tidak ada

Sintaksis ConstParameters

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

Properti ConstParameters

Nama properti

Tipe

Wajib

Pembaruan diizinkan

Deskripsi

Batasan

ConstValue

String

Ya

Ya

Nilai parameter.

Tidak ada

Location

String

Ya

Ya

Lokasi parameter.

Nilai valid:

  • BODY

  • HEAD (default)

ServiceParameterName

String

Ya

Ya

Nama parameter backend.

Tidak ada

Description

String

Tidak

Ya

Deskripsi parameter.

Tidak ada

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

Properti FunctionComputeConfig

Nama properti

Type

Wajib

Pembaruan diizinkan

Deskripsi

Batasan

ContentTypeCatagory

String

Tidak

Ya

Kebijakan untuk menetapkan nilai header Content-Type saat memanggil layanan HTTP backend.

Nilai valid:

  • DEFAULT: Menggunakan nilai default API Gateway.

  • CUSTOM: Menggunakan nilai kustom.

  • CLIENT (default): Menggunakan header Content-Type dari permintaan klien.

FcVersion

String

Tidak

Tidak

Versi Function Compute.

Nilai valid:

  • 2.0

  • 3.0

ContentTypeValue

String

Tidak

Ya

Nilai header Content-Type saat memanggil layanan HTTP backend dan ContentTypeCatagory diatur ke DEFAULT atau CUSTOM.

Tidak ada

FcBaseUrl

String

Tidak

Ya

Titik akhir pemicu.

Titik akhir harus diawali dengan http:// atau https://.

FcRegionId

String

Tidak

Ya

ID wilayah tempat Function Compute ditempatkan.

Tidak ada

FcType

String

Tidak

Ya

Jenis fungsi.

Nilai valid:

  • FCEvent (default).

  • HttpTrigger.

FunctionName

String

Tidak

Ya

Nama fungsi di Function Compute.

Tidak ada

Method

String

Tidak

Ya

Metode permintaan HTTP.

Nilai valid:

  • GET (default)

  • POST

  • DELETE

  • PUT

  • HEAD

  • PATCH

  • OPTIONS

  • ANY

OnlyBusinessPath

Boolean

Tidak

Ya

Apakah hanya melewatkan jalur permintaan backend kustom ke layanan backend.

Nilai valid:

  • true

  • false

Path

String

Tidak

Ya

Jalur permintaan backend.

Parameter harus diapit tanda kurung siku ([]), misalnya, /getUserInfo/[userId].

Qualifier

String

Tidak

Ya

Alias fungsi di Function Compute.

Tidak ada

RoleArn

String

Tidak

Ya

ARN peran RAM yang diasumsikan oleh API Gateway untuk mengakses Function Compute.

Tidak ada

ServiceName

String

Tidak

Ya

Nama layanan di Function Compute.

Tidak ada

Sintaksis MockHeaders

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

Properti MockHeaders

Nama properti

Tipe

Wajib

Pembaruan diizinkan

Deskripsi

Batasan

HeaderName

String

Ya

Ya

Nama header respons.

Tidak ada

HeaderValue

String

Ya

Ya

Nilai header respons.

Tidak ada

Nilai kembalian

Fn::GetAtt

  • ApiId: ID API.

  • ARN adalah singkatan dari Nama Sumber Daya Alibaba Cloud.

Contoh

Catatan

Ubah nilai parameter pada contoh berikut sesuai kebutuhan Anda. Misalnya, Anda harus mengubah nilai InstanceId.

YAML format

ROSTemplateFormatVersion: '2015-09-01'
Description: Test ApiGateway Api
Parameters: {}
Resources:
  RamRole:
    Type: ALIYUN::RAM::Role
    Properties:
      RoleName: TestRole
      Policies:
        - PolicyName: TestPolicy
          PolicyDocument:
            Version: '1'
            Statement:
              - Action:
                  - fc:InvokeFunction
                Resource:
                  - '*'
                Effect: Allow
      AssumeRolePolicyDocument:
        Version: '1'
        Statement:
          - Action: sts:AssumeRole
            Effect: Allow
            Principal:
              Service:
                - apigateway.aliyuncs.com
  FCService:
    Type: ALIYUN::FC::Service
    Properties:
      ServiceName: TestService
      InternetAccess: true
  Function:
    Type: ALIYUN::FC::Function
    DependsOn: FCService
    Properties:
      Handler: index.handler
      Runtime: python3
      Code:
        SourceCode: "def handler(event, context):\n\treturn {'isBase64Encode': False, 'statusCode': 200, 'body': 'Hello World!', 'headers': {'Content-type': 'aplication/json'}}\n"
      FunctionName: mytest
      ServiceName:
        Fn::GetAtt:
          - FCService
          - ServiceName
      MemorySize: 128
  Group:
    Type: ALIYUN::ApiGateway::Group
    Properties:
      InstanceId: api-shared-vpc-***
      GroupName: TestGroup
  Api:
    DependsOn:
      - RamRole
      - Group
    Type: ALIYUN::ApiGateway::Api
    Properties:
      AppCodeAuthType: HEADER_QUERY
      AuthType: APP
      ServiceConfig:
        FunctionComputeConfig:
          fcRegionId:
            Ref: ALIYUN::Region
          qualifier: LATEST
          roleArn:
            Fn::GetAtt:
              - RamRole
              - Arn
          serviceName:
            Fn::GetAtt:
              - FCService
              - ServiceName
          functionName:
            Fn::GetAtt:
              - Function
              - FunctionName
        ServiceProtocol: FunctionCompute
        ContentTypeCatagory: CLIENT
      RequestConfig:
        RequestMode: MAPPING
        RequestHttpMethod: POST
        RequestProtocol: HTTP,HTTPS
        RequestPath: /test
        BodyFormat: FORM
      ResultSample: ''
      Visibility: PRIVATE
      ResultType: JSON
      ApiName: TestApi
      GroupId:
        Fn::GetAtt:
          - Group
          - GroupId
  App:
    Type: ALIYUN::ApiGateway::App
    Properties:
      Description: Test Create App
      AppName: TestApp
Outputs: {}

JSON format

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