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 | 否 | 是 | 後端服務返回應答的格式。 | 取值:
|
ServiceConfig | Map | 是 | 是 | 網關向後端服務發送API請求的相關配置項。 | 更多資訊,請參見ServiceConfig屬性。 |
Visibility | String | 是 | 是 | API是否公開。 | 取值:
|
AllowSignatureMethod | String | 否 | 是 | 當AuthType為APP認證時,需要傳該值明確簽名演算法。 | 取值:
|
AppCodeAuthType | String | 否 | 是 | AppCode認證方式。 | AuthType取值為APP時該參數生效,取值:
|
AuthType | String | 否 | 是 | API安全認證類型。 | 取值:
|
ConstParameters | List | 否 | 是 | 指定API的常量參數。 | 更多資訊,請參見ConstParameters屬性。 |
Description | String | 否 | 是 | API描述資訊。 | 最多支援180個字元。 |
DisableInternet | Boolean | 否 | 是 | 是否禁止公網調用API。 | 取值:
|
ErrorCodeSamples | List | 否 | 是 | 後端服務返回的錯誤碼樣本。 | 更多資訊,請參見ErrorCodeSamples屬性。 |
FailResultSample | String | 否 | 是 | 後端服務失敗返回應答的樣本。 | 無 |
ForceNonceCheck | Boolean | 否 | 是 | 請求時是否強制檢查X-Ca-Nonce。 | 取值:
|
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類型。 | 取值:
|
Tags文法
"Tags": [
{
"Key": String,
"Value": String
}
]
Tags屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Key | String | 是 | 否 | 標籤鍵。 | 長度為1~128個字元,不能以 |
Value | String | 否 | 否 | 標籤值。 | 長度為0~128個字元,不能以 |
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頭的取值策略。 | 取值:
|
ContentTypeValue | String | 否 | 是 | 當後端服務是HTTP,ContentTypeCatagory取值為DEFAULT或CUSTOM時,ContentType頭的取值。 | 無 |
FunctionComputeConfig | Map | 否 | 是 | 後端服務為Function Compute。 | 無 更多資訊,請參見FunctionComputeConfig屬性。 |
Mock | String | 否 | 是 | 是否採取Mock模式。 | 取值:
|
MockHeaders | List | 否 | 是 | 啟用Mock時,自訂的Mock回應標頭相關資訊。 | 無 更多資訊,請參見MockHeaders屬性。 |
MockResult | String | 否 | 是 | 啟用Mock模式時返回的結果。 | 無 |
MockStatusCode | Integer | 否 | 是 | 狀態代碼。 | 以相容HTTP 1.1 Response Status Code的格式返回。 |
ServiceAddress | String | 否 | 是 | 後端服務地址。 | 例如:後端服務完整地址為 |
ServiceHttpMethod | String | 否 | 是 | 調用後端服務HTTP協議時的方法。 | 取值:
|
ServicePath | String | 否 | 是 | 後端服務路徑。 | 例如:後端服務完全地址為 |
ServiceProtocol | String | 否 | 是 | 後端服務合約類型。 | 取值:
|
ServiceTimeOut | Integer | 否 | 是 | 後端服務逾時時間。 | 單位:毫秒。 |
ServiceVpcEnable | String | 否 | 是 | 是否使用專用網路。 | 取值:
|
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 | 是 | 是 | 系統參數名稱。 | 取值:
|
ServiceParameterName | String | 是 | 是 | 後端參數名稱。 | 無 |
DemoValue | String | 否 | 是 | 樣本。 | 無 |
Description | String | 否 | 是 | 參數描述。 | 無 |
ServiceParameters文法
"ServiceParameters": [
{
"ParameterType": String,
"Location": String,
"ServiceParameterName": String
}
]
ServiceParameters屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
Location | String | 是 | 是 | 參數位置。 | 取值:
|
ParameterType | String | 是 | 是 | 後端參數資料類型。 | 取值:
|
ServiceParameterName | String | 是 | 是 | 後端參數名稱。 | 無 |
OpenIdConnectConfig文法
"OpenIdConnectConfig": {
"OpenIdApiType": String,
"PublicKey": String,
"PublicKeyId": String,
"IdTokenParamName": String
}
OpenIdConnectConfig屬性
屬性名稱 | 類型 | 必須 | 允許更新 | 描述 | 約束 |
OpenIdApiType | String | 是 | 是 | OpenID Connect模式。 | 取值:
|
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 | 是 | 是 | 請求方式。 | 取值:
|
RequestMode | String | 是 | 是 | 請求模式。 | 取值:
|
RequestPath | String | 是 | 是 | 請求地址。 | 例如:API的完全地址為 |
RequestProtocol | String | 是 | 是 | API支援的協議類型。 | 取值:
多個協議類型以半形逗號(,)隔開,例如: |
BodyFormat | String | 否 | 是 | POST、PUT或PATCH請求時,表示資料以何種方式傳遞給伺服器。 | 取值:
當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 | 是 | 是 | 參數位置。 | 取值:
|
ParameterType | String | 是 | 否 | 參數類型。 | 取值:
|
Required | String | 是 | 是 | 是否必填。 | 取值:
|
DefaultValue | String | 否 | 是 | 預設值。 | 無 |
DemoValue | String | 否 | 是 | 樣本值。 | 無 |
Description | String | 否 | 是 | 參數描述。 | 無 |
DocOrder | Integer | 否 | 是 | 文檔中的順序。 | 無 |
DocShow | String | 否 | 是 | API Gateway產生的SDK或文檔是否可見。 | 取值:
|
EnumValue | String | 否 | 是 | 當ParameterType為Int、Long、Float、Double或String時,允許輸入的散列值。 | 不同的值用半形逗號(,)分隔,例如: |
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 | 是 | 是 | 參數位置。 | 取值:
|
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頭的取值策略。 | 取值:
|
FcVersion | String | 否 | 否 | 支援Function Compute的版本。 | 取值:
|
ContentTypeValue | String | 否 | 是 | 調用後端HTTP服務,ContentTypeCatagory的值為DEFAULT或者CUSTOM時,ContentType頭的取值。 | 無 |
FcBaseUrl | String | 否 | 是 | 觸發器地址。 | 以 |
FcRegionId | String | 否 | 是 | Function Compute所在地區ID。 | 無 |
FcType | String | 否 | 是 | 函數類型。 | 取值:
|
FunctionName | String | 否 | 是 | Function Compute定義的FunctionName。 | 無 |
Method | String | 否 | 是 | HTTP請求方式。 | 取值:
|
OnlyBusinessPath | Boolean | 否 | 是 | 是否只傳遞自訂的後端請求路徑給後端。 | 取值:
|
Path | String | 否 | 是 | 後端請求路徑。 | 參數必須放在方括弧中,例如: |
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": {
}
}