すべてのプロダクト
Search
ドキュメントセンター

Resource Orchestration Service:ALIYUN::ApiGateway::Api

最終更新日:Apr 10, 2025

ALIYUN::ApiGateway::Api は、API を作成するために使用されます。

構文

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

プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

ApiName

String

はい

はい

API 名。

名前は 4 ~ 50 文字で、文字、数字、およびアンダースコア(_)を含めることができます。名前は文字で始まる必要があります。

説明

名前は API グループ内で一意である必要があります。

GroupId

String

はい

いいえ

API グループの ID。

なし。

RequestConfig

Map

はい

はい

コンシューマーから API Gateway に送信される API リクエストの構成。

詳細については、「RequestConfig プロパティ」をご参照ください。

ResultSample

String

いいえ

はい

バックエンド サービスからのサンプルレスポンス。

なし。

ResultType

String

いいえ

はい

バックエンド サービスからのレスポンスの形式。

有効な値:

  • JSON (デフォルト)

  • TEXT

  • BINARY

  • XML

  • PASSTHROUGH

ServiceConfig

Map

はい

はい

API Gateway からバックエンド サービスに送信される API リクエストの構成。

詳細については、「ServiceConfig プロパティ」をご参照ください。

Visibility

String

はい

はい

API が公開されているかどうかを指定します。

有効な値:

  • PUBLIC

  • PRIVATE

AllowSignatureMethod

String

いいえ

はい

AuthType が APP に設定されている場合に使用される署名アルゴリズム。

有効な値:

  • HmacSHA256 (デフォルト)

  • HmacSHA1

AppCodeAuthType

String

いいえ

はい

AppCode 認証方式。

このプロパティは、AuthType を APP に設定した場合にのみ有効になります。有効な値:

  • DEFAULT (デフォルト): AppCode 認証は API グループで構成されます。

  • DISABLE: AppCode 認証は無効になります。

  • HEADER: AppCode をヘッダーに配置して認証できます。

  • HEADER_QUERY: AppCode をヘッダーまたはクエリに配置して認証できます。

AuthType

String

いいえ

はい

API のセキュリティ認証方式。

有効な値:

  • APP: API は、承認されたアプリケーションからのみ呼び出すことができます。

  • ANONYMOUS: API は匿名で呼び出すことができます。API Gateway は呼び出し元を認証せず、ユーザー固有のスロットリング ポリシーを設定できません。Alibaba Cloud Marketplace でこのような API を含む API グループを公開する前に、API を別の API グループに移動するか、Visibility を PRIVATE に設定するか、AuthType を APP に設定することをお勧めします。

  • APPOPENID: API は、OpenID Connect によって承認されたアプリケーションからのみ呼び出すことができます。このプロパティを APPOPENID に設定した場合、OpenIdConnectConfig が必須です。

ConstParameters

List

いいえ

はい

API の定数パラメータ。

詳細については、「ConstParameters プロパティ」をご参照ください。

Description

String

いいえ

はい

API の説明。

説明は 180 文字以内にすることができます。

DisableInternet

Boolean

いいえ

はい

API でインターネット ベースの呼び出しをブロックするかどうかを指定します。

有効な値:

  • true

  • false

ErrorCodeSamples

List

いいえ

はい

バックエンド サービスから返されるサンプル エラーコード。

詳細については、「ErrorCodeSamples プロパティ」をご参照ください。

FailResultSample

String

いいえ

はい

バックエンド サービスからのサンプル エラーレスポンス。

なし。

ForceNonceCheck

Boolean

いいえ

はい

リクエストの送信時に X-Ca-Nonce を強制的にチェックするかどうかを指定します。

有効な値:

  • true

  • false

OpenIdConnectConfig

Map

いいえ

はい

サードパーティの OpenID Connect 認証方式の構成。

詳細については、「OpenIdConnectConfig プロパティ」をご参照ください。

RequestParameters

List

いいえ

はい

コンシューマーから API Gateway に送信される API リクエストのパラメータ。

詳細については、「RequestParameters プロパティ」をご参照ください。

ResultBodyModel

String

いいえ

はい

API のレスポンス。

なし。

ResultDescriptions

String

いいえ

はい

レスポンスの説明。

なし。

ServiceParameters

List

いいえ

はい

API Gateway からバックエンド サービスに送信される API リクエストのパラメータ。

詳細については、「ServiceParameters プロパティ」をご参照ください。

ServiceParametersMap

List

いいえ

はい

コンシューマーから API Gateway に送信されるリクエストのパラメータと、API Gateway からバックエンド サービスに送信されるリクエストのパラメータ間のマッピング。

詳細については、「ServiceParametersMap プロパティ」をご参照ください。

SystemParameters

List

いいえ

はい

API のシステム パラメータ。

詳細については、「SystemParameters プロパティ」をご参照ください。

Tags

List

いいえ

はい

API のタグ。

API には最大 20 個のタグを追加できます。

詳細については、「Tags プロパティ」をご参照ください。

WebSocketApiType

String

いいえ

はい

双方向通信 API のタイプ。

有効な値:

  • COMMON: 共通 API

  • REGISTER: 登録済み API

  • UNREGISTER: 登録解除済み API

  • NOTIFY: ダウンストリーム通知 API

タグの構文

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

タグのプロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Key

String

はい

いいえ

タグキー。

タグキーは 1 ~ 128 文字で、http:// または https:// を含めることはできません。タグキーは aliyun または acs: で始めることはできません。

Value

String

いいえ

いいえ

タグ値。

タグ値は 128 文字以内にすることができ、http:// または https:// を含めることはできません。タグ値は aliyun または acs: で始めることはできません。

ErrorCodeSamples 構文

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

ErrorCodeSamples プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Code

String

はい

はい

エラーコード。

なし。

Message

String

はい

はい

エラーメッセージ。

なし。

Description

String

いいえ

はい

エラーの説明。

なし。

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
}

ServiceConfig プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

ContentTypeCatagory

String

いいえ

はい

HTTP 経由でバックエンド サービスを呼び出すときに使用される ContentType ヘッダーのタイプ。

有効な値:

  • DEFAULT: API Gateway のデフォルト ヘッダー

  • CUSTOM: カスタム ヘッダー

  • CLIENT (デフォルト): クライアントの ContentType ヘッダー

ContentTypeValue

String

いいえ

はい

ServiceProtocol が HTTP に設定され、ContentTypeCatagory が DEFAULT または CUSTOM に設定されている場合の ContentType ヘッダーの値。

なし。

FunctionComputeConfig

Map

いいえ

はい

バックエンド サービスとして使用される Function Compute の構成。

なし。

詳細については、「FunctionComputeConfig プロパティ」をご参照ください。

Mock

String

いいえ

はい

モックモードを使用するかどうかを指定します。

有効な値:

  • TRUE

  • FALSE (デフォルト)

MockHeaders

List

いいえ

はい

モックモードが有効になっているときに定義されるモック レスポンス ヘッダー。

なし。

詳細については、「MockHeaders プロパティ」をご参照ください。

MockResult

String

いいえ

はい

モックモードが使用されているときに返される結果。

なし。

MockStatusCode

Integer

いいえ

はい

状態コード。

状態コードは、HTTP/1.1 と互換性のある形式で返されます。

ServiceAddress

String

いいえ

はい

バックエンド サービスの URL。

バックエンド サービスの完全な URL が http://example.com:8080/object/add?key1=value1&key2=value2 の場合、バックエンド サービスの URL は http://example.com:8080 です。

ServiceHttpMethod

String

いいえ

はい

バックエンド サービスの呼び出しに使用される HTTP メソッド。

有効な値:

  • GET (デフォルト)

  • POST

  • DELETE

  • PUT

  • HEAD

  • TRACE

  • PATCH

  • CONNECT

  • OPTIONS

  • ANY

ServicePath

String

いいえ

はい

バックエンド サービスのパス。

バックエンド サービスの完全な URL が http://example.com:8080/object/add?key1=value1&key2=value2 の場合、バックエンド サービスのパスは /object/add です。

ServiceProtocol

String

いいえ

はい

バックエンド サービスのプロトコル。

有効な値:

  • HTTP

  • HTTPS

  • FunctionCompute

ServiceTimeOut

Integer

いいえ

はい

バックエンド サービスのタイムアウト期間。

単位: ミリ秒。

ServiceVpcEnable

String

いいえ

はい

Virtual Private Cloud (VPC) サービスを有効にするかどうかを指定します。

有効な値:

  • TRUE

  • FALSE (デフォルト)

VpcConfig

Map

いいえ

はい

VPC チャネルが有効になっている場合の構成。

詳細については、「VpcConfig プロパティ」をご参照ください。

VpcConfig 構文

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

VpcConfig プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

InstanceId

String

はい

はい

VPC 内のインスタンスの ID。

Elastic Compute Service (ECS) インスタンスと Server Load Balancer (SLB) インスタンスのみがサポートされています。

Port

Integer

はい

はい

インスタンスのポート番号。

なし。

VpcId

String

はい

はい

VPC ID。

なし。

SystemParameters 構文

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

SystemParameters プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Location

String

はい

はい

システム パラメータの場所。

なし。

ParameterName

String

はい

はい

システム パラメータの名前。

有効な値:

  • CaClientIp

  • CaDomain

  • CaRequestHandleTime

  • CaAppId

  • CaRequestId

  • CaHttpSchema

  • CaProxy

ServiceParameterName

String

はい

はい

バックエンド パラメータの名前。

なし。

DemoValue

String

いいえ

はい

システム パラメータのサンプル値。

なし。

Description

String

いいえ

はい

システム パラメータの説明。

なし。

ServiceParameters 構文

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

ServiceParameters プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

Location

String

はい

はい

バックエンド パラメータの場所。

有効な値:

  • BODY

  • HEAD

  • QUERY

  • PATH

ParameterType

String

はい

はい

バックエンド パラメータのデータ型。

有効な値:

  • STRING

  • NUMBER

  • BOOLEAN

ServiceParameterName

String

はい

はい

バックエンド パラメータの名前。

なし。

OpenIdConnectConfig 構文

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

OpenIdConnectConfig プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

OpenIdApiType

String

はい

はい

OpenID Connect API の認証タイプ。

有効な値:

  • IDTOKEN: トークンを発行する前に認証 API を取得します。このプロパティを IDTOKEN に設定した場合、PublicKeyId と PublicKey が必須です。

  • BUSINESS: トークンを検証する前にビジネス API を取得します。このプロパティを BUSINESS に設定した場合、IdTokenParamName が必須です。

IdTokenParamName

String

いいえ

はい

トークンに対応するパラメータの名前。

なし。

PublicKey

String

いいえ

はい

公開鍵。

なし。

PublicKeyId

String

いいえ

はい

公開鍵の ID。

なし。

RequestConfig 構文

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

RequestConfig プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

RequestHttpMethod

String

はい

はい

API リクエスト メソッド。

有効な値:

  • GET (デフォルト)

  • POST

  • DELETE

  • PUT

  • HEADER

  • TRACE

  • PATCH

  • OPTIONS

RequestMode

String

はい

はい

リクエスト モード。

有効な値:

  • MAPPING (デフォルト): リクエスト パラメータ マッピング

  • PASSTHROUGH: リクエスト パラメータ パススルー

RequestPath

String

はい

はい

リクエスト パス。

API の完全な URL が http://example.com:8080/object/add?key1=value1&key2=value2 の場合、リクエスト パスは /object/add です。

RequestProtocol

String

はい

はい

API でサポートされているプロトコル タイプ。

有効な値:

  • HTTP

  • HTTPS

複数のプロトコル タイプはコンマ (,) で区切ります。例: HTTP,HTTPS

BodyFormat

String

いいえ

はい

POST、PUT、または PATCH リクエストでサーバーにデータを送信する形式。

有効な値:

  • FORM

  • STREAM

このプロパティは、RequestMode パラメータが MAPPING に設定されている場合にのみ有効になります。

PostBodyDescription

String

いいえ

はい

リクエスト本文の説明。

なし。

ServiceParametersMap 構文

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

ServiceParametersMap プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

RequestParameterName

String

はい

はい

フロントエンド パラメータの名前。

このプロパティの値は RequestParameters に含まれている必要があり、RequestParameters の ApiParameterName の値と一致している必要があります。

ServiceParameterName

String

はい

はい

バックエンド パラメータの名前。

なし。

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

RequestParameters プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

ApiParameterName

String

はい

はい

パラメータ名。

なし。

Location

String

はい

はい

パラメータの場所。

有効な値:

  • BODY

  • HEAD

  • QUERY

  • PATH

ParameterType

String

はい

いいえ

パラメータ タイプ。

有効な値:

  • String

  • Int

  • Long

  • Float

  • Double

  • Boolean

Required

String

はい

はい

パラメータが必須かどうかを指定します。

有効な値:

  • REQUIRED

  • OPTIONAL

DefaultValue

String

いいえ

はい

パラメータのデフォルト値。

なし。

DemoValue

String

いいえ

はい

パラメータのサンプル値。

なし。

Description

String

いいえ

はい

パラメータの説明。

なし。

DocOrder

Integer

いいえ

はい

ドキュメント内のパラメータのシーケンス。

なし。

DocShow

String

いいえ

はい

パラメータが API Gateway の SDK またはドキュメントで公開されるかどうかを指定します。

有効な値:

  • PUBLIC

  • PRIVATE

EnumValue

String

いいえ

はい

ParameterType が Int、Long、Float、Double、または String に設定されている場合に指定できるハッシュ値。

複数の値はコンマ (,) で区切ります。例: 1,2,3,4,9A,B,C,E,F

JsonScheme

String

いいえ

はい

ParameterType が String に設定されている場合にパラメータを検証するために使用される JSON スキーマ。

なし。

MaxLength

Integer

いいえ

はい

ParameterType が String に設定されている場合のパラメータの最大長。

なし。

MaxValue

Integer

いいえ

はい

ParameterType が Int、Long、Float、または Double に設定されている場合のパラメータの最大値。

なし。

MinLength

Integer

いいえ

はい

ParameterType が String に設定されている場合のパラメータの最小長。

なし。

MinValue

Integer

いいえ

はい

ParameterType が Int、Long、Float、または Double に設定されている場合のパラメータの最小値。

なし。

RegularExpression

String

いいえ

はい

ParameterType が String に設定されている場合にパラメータを検証するために使用される正規表現。

なし。

ConstParameters 構文

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

ConstParameters プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

ConstValue

String

はい

はい

定数パラメータの値。

なし。

Location

String

はい

はい

定数パラメータの場所。

有効な値:

  • BODY

  • HEAD (デフォルト)

ServiceParameterName

String

はい

はい

定数パラメータに対応するバックエンド パラメータの名前。

なし。

Description

String

いいえ

はい

定数パラメータの説明。

なし。

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
}

FunctionComputeConfig プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

ContentTypeCatagory

String

いいえ

はい

HTTP 経由でバックエンド サービスを呼び出すときに使用される ContentType ヘッダー タイプ。

有効な値:

  • DEFAULT: API Gateway のデフォルト ヘッダー

  • CUSTOM: カスタム ヘッダー

  • CLIENT (デフォルト): クライアントの ContentType ヘッダー

FcVersion

String

いいえ

いいえ

サポートされている Function Compute バージョン。

有効な値:

  • 2.0

  • 3.0

ContentTypeValue

String

いいえ

はい

ServiceProtocol が HTTP に設定され、ContentTypeCatagory が DEFAULT または CUSTOM に設定されている場合の ContentType ヘッダーの値。

なし。

FcBaseUrl

String

いいえ

はい

トリガーの URL。

URL は http:// または https:// で始まる必要があります。

FcRegionId

String

いいえ

はい

Function Compute が存在するリージョンの ID。

なし。

FcType

String

いいえ

はい

関数タイプ。

有効な値:

  • FCEvent (デフォルト)

  • HttpTrigger

FunctionName

String

いいえ

はい

Function Compute で定義されている関数の名前。

なし。

Method

String

いいえ

はい

HTTP リクエスト メソッド。

有効な値:

  • GET (デフォルト)

  • POST

  • DELETE

  • PUT

  • HEAD

  • PATCH

  • OPTIONS

  • ANY

OnlyBusinessPath

Boolean

いいえ

はい

カスタム バックエンド リクエスト パスのみをバックエンドに渡すかどうかを指定します。

有効な値:

  • true

  • false

Path

String

いいえ

はい

バックエンド リクエスト パス。

パラメータは角かっこ [] で囲む必要があります。例: / getUserInfo / [userId]

Qualifier

String

いいえ

はい

Function Compute 関数のエイリアス。

なし。

RoleArn

String

いいえ

はい

API Gateway が Function Compute にアクセスするために割り当てられている Resource Access Management (RAM) ロールの ARN (Alibaba Cloud Resource Name)。

なし。

ServiceName

String

いいえ

はい

Function Compute で定義されているサービスの名前。

なし。

MockHeaders 構文

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

MockHeaders プロパティ

プロパティ

タイプ

必須

編集可能

説明

制約

HeaderName

String

はい

はい

レスポンス ヘッダーの名前。

なし。

HeaderValue

String

はい

はい

レスポンス ヘッダーの値。

なし。

戻り値

Fn::GetAtt

  • ApiId: API ID。

  • Arn: ARN。

説明

InstanceId などのマスクされたパラメータの値は、ビジネス要件に基づいて変更してください。

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

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