全部产品
Search
文档中心

Resource Orchestration Service:ALIYUN::ApiGateway::Api

更新时间:Jun 26, 2025

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

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

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Kendala

ApiName

String

Ya

Ya

Nama API.

Nama harus memiliki panjang 4 hingga 50 karakter dan dapat berisi huruf, angka, serta garis bawah (_). Nama harus dimulai dengan huruf.

Catatan

Nama harus unik dalam grup API.

GroupId

String

Ya

Tidak

ID dari grup API.

Tidak ada.

RequestConfig

Map

Ya

Ya

Konfigurasi permintaan API yang dikirimkan dari konsumen ke API Gateway.

Untuk informasi lebih lanjut, lihat Properti RequestConfig.

ResultSample

String

Tidak

Ya

Contoh respons dari layanan backend.

Tidak ada.

ResultType

String

Tidak

Ya

Format respons dari layanan backend.

Nilai valid:

  • JSON (default)

  • TEXT

  • BINARY

  • XML

  • PASSTHROUGH

ServiceConfig

Map

Ya

Ya

Konfigurasi permintaan API yang dikirimkan dari API Gateway ke layanan backend.

Untuk informasi lebih lanjut, lihat Properti ServiceConfig.

Visibility

String

Ya

Ya

Menentukan apakah API bersifat publik.

Nilai valid:

  • PUBLIC

  • PRIVATE

AllowSignatureMethod

String

Tidak

Ya

Algoritma tanda tangan yang digunakan ketika AuthType diatur ke APP.

Nilai valid:

  • HmacSHA256 (default)

  • HmacSHA1

AppCodeAuthType

String

Tidak

Ya

Metode otentikasi AppCode.

Properti ini hanya berlaku jika Anda mengatur AuthType ke APP. Nilai valid:

  • DEFAULT (default): Otentikasi AppCode dikonfigurasikan dengan grup API.

  • DISABLE: Otentikasi AppCode dinonaktifkan.

  • HEADER: AppCode dapat ditempatkan di Header untuk otentikasi.

  • HEADER_QUERY: AppCode dapat ditempatkan di Header atau Query untuk otentikasi.

AuthType

String

Tidak

Ya

Metode otentikasi keamanan API.

Nilai valid:

  • APP: API hanya dapat dipanggil oleh aplikasi yang berwenang.

  • ANONYMOUS: API dapat dipanggil secara anonim. API Gateway tidak mengotentikasi pemanggil dan tidak dapat menetapkan kebijakan throttling spesifik pengguna. Sebelum Anda mempublikasikan grup API yang berisi API semacam itu di Alibaba Cloud Marketplace, kami sarankan Anda memindahkan API tersebut ke grup API lain, mengatur Visibility ke PRIVATE, atau mengatur AuthType ke APP.

  • APPOPENID: API hanya dapat dipanggil oleh aplikasi yang berwenang oleh OpenID Connect. Jika Anda mengatur properti ini ke APPOPENID, OpenIdConnectConfig diperlukan.

ConstParameters

List

Tidak

Ya

Parameter konstan dari API.

Untuk informasi lebih lanjut, lihat Properti ConstParameters.

Description

String

Tidak

Ya

Deskripsi API.

Deskripsi dapat memiliki panjang hingga 180 karakter.

DisableInternet

Boolean

Tidak

Ya

Menentukan apakah akan memblokir panggilan berbasis Internet pada API.

Nilai valid:

  • true

  • false

ErrorCodeSamples

List

Tidak

Ya

Contoh kode kesalahan yang dikembalikan dari layanan backend.

Untuk informasi lebih lanjut, lihat Properti ErrorCodeSamples.

FailResultSample

String

Tidak

Ya

Contoh respons kesalahan dari layanan backend.

Tidak ada.

ForceNonceCheck

Boolean

Tidak

Ya

Menentukan apakah akan memeriksa X-Ca-Nonce secara paksa saat permintaan dikirim.

Nilai valid:

  • true

  • false

OpenIdConnectConfig

Map

Tidak

Ya

Konfigurasi metode otentikasi OpenID Connect pihak ketiga.

Untuk informasi lebih lanjut, lihat Properti OpenIdConnectConfig.

RequestParameters

List

Tidak

Ya

Parameter permintaan API yang dikirimkan dari konsumen ke API Gateway.

Untuk informasi lebih lanjut, lihat Properti RequestParameters.

ResultBodyModel

String

Tidak

Ya

Respons API.

Tidak ada.

ResultDescriptions

String

Tidak

Ya

Deskripsi respons.

Tidak ada.

ServiceParameters

List

Tidak

Ya

Parameter permintaan API yang dikirimkan dari API Gateway ke layanan backend.

Untuk informasi lebih lanjut, lihat Properti ServiceParameters.

ServiceParametersMap

List

Tidak

Ya

Pemetaan antara parameter permintaan yang dikirimkan dari konsumen ke API Gateway dan parameter permintaan yang dikirimkan dari API Gateway ke layanan backend.

Untuk informasi lebih lanjut, lihat Properti ServiceParametersMap.

SystemParameters

List

Tidak

Ya

Parameter sistem API.

Untuk informasi lebih lanjut, lihat Properti SystemParameters.

Tags

List

Tidak

Ya

Tag API.

Anda dapat menambahkan hingga 20 tag ke API.

Untuk informasi lebih lanjut, lihat Properti Tags.

WebSocketApiType

String

Tidak

Ya

Jenis API komunikasi dua arah.

Nilai valid:

  • COMMON: API umum

  • REGISTER: API terdaftar

  • UNREGISTER: API tidak terdaftar

  • NOTIFY: API notifikasi downstream

Sintaksis Tags

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

Properti Tags

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Kendala

Key

String

Ya

Tidak

Kunci tag.

Kunci tag harus memiliki panjang 1 hingga 128 karakter dan tidak boleh mengandung http:// atau https://. Kunci tag tidak boleh dimulai dengan aliyun atau acs:.

Value

String

Tidak

Tidak

Nilai tag.

Nilai tag dapat memiliki panjang hingga 128 karakter dan tidak boleh mengandung http:// atau https://. Nilai tag tidak boleh dimulai dengan aliyun atau acs:.

Sintaksis ErrorCodeSamples

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

Properti ErrorCodeSamples

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Kendala

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

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Kendala

ContentTypeCatagory

String

Tidak

Ya

Jenis header ContentType yang digunakan saat memanggil layanan backend melalui HTTP.

Nilai valid:

  • DEFAULT: header default di API Gateway

  • CUSTOM: header kustom

  • CLIENT (default): header ContentType dari klien

ContentTypeValue

String

Tidak

Ya

Nilai header ContentType ketika ServiceProtocol diatur ke HTTP dan ContentTypeCatagory diatur ke DEFAULT atau CUSTOM.

Tidak ada.

FunctionComputeConfig

Map

Tidak

Ya

Konfigurasi Function Compute yang digunakan sebagai layanan backend.

Tidak ada.

Untuk informasi lebih lanjut, lihat Properti FunctionComputeConfig.

Mock

String

Tidak

Ya

Menentukan apakah akan menggunakan mode mock.

Nilai valid:

  • TRUE

  • FALSE (default)

MockHeaders

List

Tidak

Ya

Header respons mock yang didefinisikan saat mode mock diaktifkan.

Tidak ada.

Untuk informasi lebih lanjut, lihat Properti MockHeaders.

MockResult

String

Tidak

Ya

Hasil yang dikembalikan saat menggunakan mode mock.

Tidak ada.

MockStatusCode

Integer

Tidak

Ya

Kode status.

Kode status dikembalikan dalam format yang kompatibel dengan HTTP/1.1.

ServiceAddress

String

Tidak

Ya

URL layanan backend.

Jika URL lengkap layanan backend adalah http://example.com:8080/object/add?key1=value1&key2=value2, maka URL 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

Path layanan backend.

Jika URL lengkap layanan backend adalah http://example.com:8080/object/add?key1=value1&key2=value2, maka path 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.

Satuan: milidetik.

ServiceVpcEnable

String

Tidak

Ya

Menentukan apakah akan mengaktifkan layanan Virtual Private Cloud (VPC).

Nilai valid:

  • TRUE

  • FALSE (default)

VpcConfig

Map

Tidak

Ya

Konfigurasi saat saluran VPC diaktifkan.

Untuk informasi lebih lanjut, lihat Properti VpcConfig.

Sintaksis VpcConfig

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

Properti VpcConfig

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Kendala

InstanceId

String

Ya

Ya

ID instance dalam VPC.

Hanya instance Elastic Compute Service (ECS) dan Server Load Balancer(SLB) yang didukung.

Port

Integer

Ya

Ya

Nomor port instance.

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

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Kendala

Lokasi

String

Ya

Ya

Lokasi parameter sistem.

Tidak ada.

Nama Parameter

String

Ya

Ya

Nama parameter sistem.

Nilai valid:

  • CaClientIp

  • CaDomain

  • CaRequestHandleTime

  • CaAppId

  • CaRequestId

  • CaHttpSchema

  • CaProxy

Nama Parameter Layanan

String

Ya

Ya

Nama parameter backend.

Tidak ada.

Nilai Demo

String

Tidak

Ya

Contoh nilai parameter sistem.

Tidak ada.

Deskripsi

String

Tidak

Ya

Deskripsi parameter sistem.

Tidak ada.

Sintaksis ServiceParameters

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

Properti ServiceParameters

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Kendala

Lokasi

String

Ya

Ya

Lokasi parameter backend.

Nilai valid:

  • BODY

  • HEAD

  • QUERY

  • PATH

Tipe Parameter

String

Ya

Ya

Tipe data parameter backend.

Nilai valid:

  • STRING

  • NUMBER

  • BOOLEAN

Nama Parameter Layanan

String

Ya

Ya

Nama parameter backend.

Tidak ada.

Sintaksis OpenIdConnectConfig

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

Properti OpenIdConnectConfig

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Kendala

OpenIdApiType

String

Ya

Ya

Jenis otorisasi API OpenID Connect.

Nilai valid:

  • IDTOKEN: mendapatkan API otorisasi sebelum menerbitkan token. Jika Anda mengatur properti ini ke IDTOKEN, PublicKeyId dan PublicKey diperlukan.

  • BUSINESS: mendapatkan API bisnis sebelum memverifikasi token. Jika Anda mengatur properti ini ke BUSINESS, IdTokenParamName diperlukan.

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

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Kendala

RequestHttpMethod

String

Ya

Ya

Metode permintaan API.

Nilai valid:

  • GET (default)

  • POST

  • DELETE

  • PUT

  • HEADER

  • TRACE

  • PATCH

  • OPTIONS

RequestMode

String

Ya

Ya

Mode permintaan.

Nilai valid:

  • MAPPING (default): pemetaan parameter permintaan

  • PASSTHROUGH: bypass parameter permintaan

RequestPath

String

Ya

Ya

Path permintaan.

Jika URL lengkap API adalah http://example.com:8080/object/add?key1=value1&key2=value2, maka path permintaannya adalah /object/add.

RequestProtocol

String

Ya

Ya

Tipe protokol yang didukung oleh API.

Nilai valid:

  • HTTP

  • HTTPS

Pisahkan beberapa tipe protokol dengan koma (,). Contoh: HTTP,HTTPS.

BodyFormat

String

Tidak

Ya

Format dalam mengirimkan data ke server untuk permintaan POST, PUT, atau PATCH.

Nilai valid:

  • FORM

  • STREAM

Properti ini berlaku hanya jika parameter RequestMode diatur ke MAPPING.

PostBodyDescription

String

Tidak

Ya

Deskripsi badan permintaan.

Tidak ada.

Sintaksis ServiceParametersMap

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

Properti ServiceParametersMap

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Kendala

Nama Parameter Permintaan

String

Ya

Ya

Nama parameter frontend.

Nilai properti ini harus disertakan dalam RequestParameters dan harus cocok dengan nilai ApiParameterName dalam RequestParameters.

Nama Parameter Layanan

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

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Kendala

ApiParameterName

String

Ya

Ya

Nama parameter.

Tidak ada.

Lokasi

String

Ya

Ya

Lokasi parameter.

Nilai valid:

  • BODY

  • HEAD

  • QUERY

  • PATH

Tipe Parameter

String

Ya

Tidak

Tipe parameter.

Nilai valid:

  • String

  • Int

  • Long

  • Float

  • Double

  • Boolean

Diperlukan

String

Ya

Ya

Menentukan apakah parameter tersebut diperlukan.

Nilai valid:

  • REQUIRED

  • OPTIONAL

Nilai Default

String

Tidak

Ya

Nilai default dari parameter.

Tidak ada.

Nilai Demo

String

Tidak

Ya

Contoh nilai parameter.

Tidak ada.

Deskripsi

String

Tidak

Ya

Deskripsi parameter.

Tidak ada.

Urutan Dokumen

Integer

Tidak

Ya

Urutan parameter dalam dokumen.

Tidak ada.

DocShow

String

Tidak

Ya

Menentukan apakah parameter bersifat publik di SDK atau dokumen API Gateway.

Nilai valid:

  • PUBLIC

  • PRIVATE

EnumValue

String

Tidak

Ya

Nilai hash yang dapat ditentukan ketika ParameterType diatur ke Int, Long, Float, Double, atau String.

Pisahkan beberapa nilai dengan koma (,). Contoh: 1,2,3,4,9 dan A,B,C,E,F.

JsonScheme

String

Tidak

Ya

Skema JSON yang digunakan untuk memvalidasi parameter ketika ParameterType diatur ke String.

Tidak ada.

MaxLength

Integer

Tidak

Ya

Panjang maksimum parameter ketika ParameterType diatur ke String.

Tidak ada.

MaxValue

Integer

Tidak

Ya

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

Tidak ada.

MinLength

Integer

Tidak

Ya

Panjang minimum parameter ketika ParameterType diatur ke String.

Tidak ada.

MinValue

Integer

Tidak

Ya

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

Tidak ada.

RegularExpression

String

Tidak

Ya

Ekspresi reguler yang digunakan untuk memvalidasi parameter ketika ParameterType diatur ke String.

Tidak ada.

Sintaksis ConstParameters

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

Properti ConstParameters

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Kendala

ConstValue

String

Ya

Ya

Nilai parameter konstan.

Tidak ada.

Lokasi

String

Ya

Ya

Lokasi parameter konstan.

Nilai valid:

  • BODY

  • HEAD (default)

Nama Parameter Layanan

String

Ya

Ya

Nama parameter backend yang sesuai dengan parameter konstan.

Tidak ada.

Deskripsi

String

Tidak

Ya

Deskripsi parameter konstan.

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

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Kendala

ContentTypeCatagory

String

Tidak

Ya

Jenis header ContentType yang digunakan saat memanggil layanan backend melalui HTTP.

Nilai valid:

  • DEFAULT: header default di API Gateway

  • CUSTOM: header kustom

  • CLIENT (default): header ContentType dari klien

FcVersion

String

Tidak

Tidak

Versi Function Compute yang didukung.

Nilai valid:

  • 2.0

  • 3.0

ContentTypeValue

String

Tidak

Ya

Nilai header ContentType ketika ServiceProtocol diatur ke HTTP dan ContentTypeCatagory diatur ke DEFAULT atau CUSTOM.

Tidak ada.

FcBaseUrl

String

Tidak

Ya

URL pemicu.

URL harus dimulai dengan http:// atau https://.

FcRegionId

String

Tidak

Ya

ID wilayah tempat Function Compute berada.

Tidak ada.

FcType

String

Tidak

Ya

Tipe fungsi.

Nilai valid:

  • FCEvent (default)

  • HttpTrigger

FunctionName

String

Tidak

Ya

Nama fungsi yang didefinisikan dalam 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

Menentukan apakah hanya path permintaan backend kustom yang akan diteruskan ke backend.

Nilai valid:

  • true

  • false

Path

String

Tidak

Ya

Path permintaan backend.

Parameter harus diapit tanda kurung [ ]. Contoh: / getUserInfo / [userId].

Qualifier

String

Tidak

Ya

Alias fungsi Function Compute.

Tidak ada.

RoleArn

String

Tidak

Ya

Alibaba Cloud Resource Name (ARN) dari peran Resource Access Management (RAM) yang ditetapkan ke API Gateway untuk mengakses Function Compute.

Tidak ada.

ServiceName

String

Tidak

Ya

Nama layanan yang didefinisikan dalam Function Compute.

Tidak ada.

Sintaksis MockHeaders

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

Properti MockHeaders

Properti

Tipe

Diperlukan

Dapat Diedit

Deskripsi

Kendala

Nama Header

String

Ya

Ya

Nama header respons.

Tidak ada.

Nilai Header

String

Ya

Ya

Nilai header respons.

Tidak ada.

Nilai Pengembalian

Fn::GetAtt

  • ApiId: ID API.

  • Arn: ARN.

Contoh

Catatan

Ubah nilai parameter yang disembunyikan, seperti InstanceId, sesuai dengan kebutuhan bisnis Anda.

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