全部產品
Search
文件中心

Resource Orchestration Service:ALIYUN::ApiGateway::Api

更新時間:Nov 19, 2024

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分組內的API名稱不允許重複。

GroupId

String

API分組編號。

RequestConfig

Map

Consumer向網關發送API請求的相關配置項。

更多資訊,請參見RequestConfig屬性

ResultSample

String

後端服務返回應答的樣本。

ResultType

String

後端服務返回應答的格式。

取值:

  • JSON(預設值)

  • TEXT

  • BINARY

  • XML

  • PASSTHROUGH

ServiceConfig

Map

網關向後端服務發送API請求的相關配置項。

更多資訊,請參見ServiceConfig屬性

Visibility

String

API是否公開。

取值:

  • PUBLIC:公開。

  • PRIVATE:不公開。

AllowSignatureMethod

String

當AuthType為APP認證時,需要傳該值明確簽名演算法。

取值:

  • HmacSHA256(預設值)

  • HmacSHA1

AppCodeAuthType

String

AppCode認證方式。

AuthType取值為APP時該參數生效,取值:

  • DEFAULT(預設值):隨分組設定。

  • DISABLE:不允許。

  • HEADER:允許AppCode的Header認證。

  • HEADER_QUERY:允許AppCode的Header及Query認證。

AuthType

String

API安全認證類型。

取值:

  • APP:只允許已授權的App調用。

  • ANONYMOUS:允許匿名調用,網關不會對調用者做身份認證,也無法根據使用者需求設定流量控制。若所在分組要上架雲市場,建議將該API轉移至其他分組,或將類型設定為私人,或選擇阿里雲App認證方式。

  • APPOPENID:支援第三方帳號認證OpenID Connect,而且只允許已授權的App調用。當設定此項時,參數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

Consumer向網關發送API請求的參數描述。

更多資訊,請參見RequestParameters屬性

ResultBodyModel

String

API的返回結果。

ResultDescriptions

String

結果描述。

ServiceParameters

List

網關向後端服務發送API請求的參數描述。

更多資訊,請參見ServiceParameters屬性

ServiceParametersMap

List

Consumer向網關發送請求的參數和網關向後端服務發送請求的參數的映射關係。

更多資訊,請參見ServiceParametersMap屬性

SystemParameters

List

API的系統參數。

更多資訊,請參見SystemParameters屬性

Tags

List

標籤。

最多支援添加20個標籤。

更多資訊,請參見Tags屬性

WebSocketApiType

String

雙向通訊API類型。

取值:

  • COMMON:普通API。

  • REGISTER:註冊API。

  • UNREGISTER:登出API。

  • NOTIFY:下行通知。

Tags文法

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

Tags屬性

屬性名稱

類型

必須

允許更新

描述

約束

Key

String

標籤鍵。

長度為1~128個字元,不能以aliyunacs:開頭,不能包含http://或者https://

Value

String

標籤值。

長度為0~128個字元,不能以aliyunacs:開頭,不能包含http://或者https://

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

當後端服務是HTTP,ContentTypeCatagory取值為DEFAULT或CUSTOM時,ContentType頭的取值。

FunctionComputeConfig

Map

後端服務為Function Compute。

更多資訊,請參見FunctionComputeConfig屬性

Mock

String

是否採取Mock模式。

取值:

  • TRUE:採取Mock模式。

  • FALSE(預設值):不採取Mock模式。

MockHeaders

List

啟用Mock時,自訂的Mock回應標頭相關資訊。

更多資訊,請參見MockHeaders屬性

MockResult

String

啟用Mock模式時返回的結果。

MockStatusCode

Integer

狀態代碼。

以相容HTTP 1.1 Response Status Code的格式返回。

ServiceAddress

String

後端服務地址。

例如:後端服務完整地址為http://example.com:8080/object/add?key1=value1&key2=value2,後端服務地址指http://example.com:8080

ServiceHttpMethod

String

調用後端服務HTTP協議時的方法。

取值:

  • GET(預設值)

  • POST

  • DELETE

  • PUT

  • HEAD

  • TRACE

  • PATCH

  • CONNECT

  • OPTIONS

  • ANY

ServicePath

String

後端服務路徑。

例如:後端服務完全地址為http://example.com:8080/object/add?key1=value1&key2=value2, 後端服務路徑指/object/add

ServiceProtocol

String

後端服務合約類型。

取值:

  • HTTP

  • HTTPS

  • FunctionCompute

ServiceTimeOut

Integer

後端服務逾時時間。

單位:毫秒。

ServiceVpcEnable

String

是否使用專用網路。

取值:

  • TRUE:使用。

  • FALSE(預設值):不使用。

VpcConfig

Map

啟用VPC通道時的相關配置項。

更多資訊,請參見VpcConfig屬性

VpcConfig文法

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

VpcConfig屬性

屬性名稱

類型

必須

允許更新

描述

約束

InstanceId

String

專用網路中的執行個體ID。

目前只支援ECS執行個體和SLB執行個體。

Port

Integer

執行個體對應的連接埠號碼。

VpcId

String

專用網路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模式。

取值:

  • IDTOKEN:先擷取授權API,再頒發Token。當設定此項時,參數PublicKeyId和PublicKey必須指定。

  • BUSINESS:先擷取業務API,再進行Token驗證。當設定此項時,參數IdTokenParamName必須指定。

IdTokenParamName

String

Token對應的參數名稱。

PublicKey

String

公開金鑰。

PublicKeyId

String

公開金鑰ID。

RequestConfig文法

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

RequestConfig屬性

屬性名稱

類型

必須

允許更新

描述

約束

RequestHttpMethod

String

請求方式。

取值:

  • GET(預設值)

  • POST

  • DELETE

  • PUT

  • HEADER

  • TRACE

  • PATCH

  • OPTIONS

RequestMode

String

請求模式。

取值:

  • MAPPING(預設值):入參映射。

  • PASSTHROUGH:入參透傳。

RequestPath

String

請求地址。

例如:API的完全地址為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時,該參數通過Regex進行驗證。

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

調用後端HTTP服務,ContentTypeCatagory的值為DEFAULT或者CUSTOM時,ContentType頭的取值。

FcBaseUrl

String

觸發器地址。

http://https://開頭。

FcRegionId

String

Function Compute所在地區ID。

FcType

String

函數類型。

取值:

  • FCEvent(預設值)。

  • HttpTrigger。

FunctionName

String

Function Compute定義的FunctionName。

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

RAM授權給API Gateway訪問Function Compute的ARN。

ServiceName

String

Function Compute定義的ServiceName。

MockHeaders文法

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

MockHeaders屬性

屬性名稱

類型

必須

允許更新

描述

約束

HeaderName

String

回應標頭名稱。

HeaderValue

String

回應標頭值。

傳回值

Fn::GetAtt

ApiId:API ID。

樣本

說明

請您按照實際情況更改下列脫敏的參數取值,例如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": {
  }
}