ALIYUN::APIG::Route

Updated at:

ALIYUN::APIG::Route类型用于创建Http Api的路由。

语法

{
  "Type": "ALIYUN::APIG::Route",
  "Properties": {
    "Backend": Map,
    "EnvironmentInfo": Map,
    "HttpApiId": String,
    "Match": Map,
    "RouteName": String,
    "Description": String,
    "DomainInfos": List,
    "DomainIds": List
  }
}

属性

属性名称

类型

必须

允许更新

描述

约束

Backend

Map

是

是

路由的后端服务配置。

更多信息,请参见Backend属性。

EnvironmentInfo

Map

是

否

环境信息。

更多信息,请参见EnvironmentInfo属性。

HttpApiId

String

是

否

路由所属的 HTTP API ID。

无

Match

Map

是

是

路由 Match 规则。

更多信息,请参见Match属性。

RouteName

String

是

否

路由名称。

无

Description

String

否

是

路由描述。

无

DomainInfos

List

否

是

域名详情列表。

无

DomainIds

List

否

否

域名ID列表。

无

Backend语法

"Backend": {
  "Services": List,
  "Scene": String
}

Backend属性

属性名称

类型

必须

允许更新

描述

约束

Services

List

是

是

后端服务列表。

最多支持配置10组服务。更多信息,请参见Services属性。

Scene

String

是

是

后端服务场景。

取值:

  • SingleService: 单服务。

  • MultiServiceByRatio: 多服务按比例灰度。

  • Mock:Mock 服务。

  • Redirect: 重定向服务。

Services语法

"Services": [
  {
    "Version": String,
    "Port": Integer,
    "Protocol": String,
    "Weight": Integer,
    "Name": String,
    "ServiceId": String
  }
]

Services属性

属性名称

类型

必须

允许更新

描述

约束

Name

String

否

否

服务名称。

无

Port

Integer

否

否

服务端口。

无

Protocol

String

否

否

服务协议。

取值:

  • HTTP。

  • HTTPS。

ServiceId

String

否

是

服务 ID。

无

Version

String

否

否

服务版本。

无

Weight

Integer

否

是

流量比例的百分比值。

取值范围:0~100。

EnvironmentInfo语法

"EnvironmentInfo": {
  "GatewayInfo": Map,
  "EnvironmentId": String,
  "Alias": String,
  "SubDomains": List,
  "Name": String
}

EnvironmentInfo属性

属性名称

类型

必须

允许更新

描述

约束

EnvironmentId

String

是

否

环境 ID。

无

Alias

String

否

否

环境别名。

无

GatewayInfo

Map

否

否

网关配置信息。

更多信息,请参见GatewayInfo属性。

Name

String

否

否

环境名称。

无

SubDomains

List

否

否

子域名列表。

最多支持配置10组子域名。更多信息,请参见GatewayInfo属性。

GatewayInfo语法

"GatewayInfo": {
  "GatewayId": String,
  "Name": String
}

GatewayInfo属性

属性名称

类型

必须

允许更新

描述

约束

GatewayId

String

否

否

网关ID。

无

Name

String

否

否

网关名称。

无

SubDomains语法

"SubDomains": [
  {
    "DomainId": String,
    "NetworkType": String,
    "Protocol": String,
    "Name": String
  }
]

SubDomains属性

属性名称

类型

必须

允许更新

描述

约束

DomainId

String

否

否

子域名ID。

无

NetworkType

String

否

否

域网络的访问类型。

无

Name

String

否

否

子域名的名称。

无

Protocol

String

否

否

子域名支持的网络协议。

取值:

  • HTTP

  • HTTPS

DomainInfos语法

"DomainInfos": [
  {
    "DomainId": String,
    "Protocol": String,
    "Name": String
  }
]

DomainInfos属性

属性名称

类型

必须

允许更新

描述

约束

DomainId

String

否

是

域名ID。

无

Name

String

否

否

域名名称。

无

Protocol

String

否

否

域名支持的网络协议。

取值:

  • HTTP

  • HTTPS

Match语法

"Match": {
  "Path": Map,
  "Headers": List,
  "QueryParams": List,
  "Methods": List,
  "IgnoreUriCase": Boolean
}

Match属性

属性名称

类型

必须

允许更新

描述

约束

Path

Map

是

是

接口规则。

无

Headers

List

否

是

HTTP请求头匹配规则列表。

最多支持10组规则。

IgnoreUriCase

Boolean

否

是

路径是否大小写敏感。

无

Methods

List

否

是

请求方法列表。

无

QueryParams

List

否

是

Query 请求参数匹配规则列表。

最多支持10组规则。

Path语法

"Path": {
  "Type": String,
  "Value": String
}

Path属性

属性名称

类型

必须

允许更新

描述

约束

Type

String

是

是

路径匹配规则。

取值:

  • Exact:精确匹配。

  • Prefix:前缀匹配。

  • Regex:正则匹配。

Value

String

是

是

路径。

无

Headers语法

"Headers": [
  {
    "Type": String,
    "Value": String,
    "Name": String
  }
]

Headers属性

属性名称

类型

必须

允许更新

描述

约束

Name

String

否

是

header 的名称。

无

Type

String

否

是

header 匹配类型。

取值:

  • Exact:精确匹配。

  • Prefix:前缀匹配。

  • Regex:正则匹配。

Value

String

否

是

header 的 value。

无

QueryParams语法

"QueryParams": [
  {
    "Type": String,
    "Value": String,
    "Name": String
  }
]

QueryParams属性

属性名称

类型

必须

允许更新

描述

约束

Name

String

否

是

参数名称。

无

Type

String

否

是

query 参数匹配类型。

取值:

  • Exact:精确匹配。

  • Prefix:前缀匹配。

  • Regex:正则匹配。

Value

String

否

是

参数值。

无

返回值

Fn::GetAtt

  • Backend:路由的后端服务配置。

  • Description:路由描述。

  • EnvironmentInfo:环境信息。

  • RouteName:路由名称。

  • DomainInfos:域名详情列表。

  • RouteId:路由ID。

  • Match:路由 Match 规则。

示例

ROSTemplateFormatVersion: '2015-09-01'
Parameters: {}
Resources:
  ExtensionResource:
    Type: ALIYUN::APIG::Route
    Properties:
      HttpApiId: api-xxx
      EnvironmentInfo:
        EnvironmentId: env-xxxx
      RouteName: test123
      DomainIds:
        - d-xxxx
      Match:
        Path:
          Type: Prefix
          Value: /user
      Backend:
        Scene: SingleService
        Services:
          - Name: test1
            ServiceId: svc-xxxxx
            Port: 443
            Protocol: HTTPS
            Version: base
Outputs:
  Backend:
    Description: Backend services.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - Backend
  Description:
    Description: The description of route resource.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - Description
  EnvironmentInfo:
    Description: Environment information.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - EnvironmentInfo
  RouteName:
    Description: The name of the route.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - RouteName
  DomainInfos:
    Description: Domain items.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - DomainInfos
  RouteId:
    Description: The ID of route resource.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - RouteId
  Match:
    Description: The match rule of route resource.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - Match
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
  },
  "Resources": {
    "ExtensionResource": {
      "Type": "ALIYUN::APIG::Route",
      "Properties": {
        "HttpApiId": "api-xxx",
        "EnvironmentInfo": {
          "EnvironmentId": "env-xxxx"
        },
        "RouteName": "test123",
        "DomainIds": [
          "d-xxxx"
        ],
        "Match": {
          "Path": {
            "Type": "Prefix",
            "Value": "/user"
          }
        },
        "Backend": {
          "Scene": "SingleService",
          "Services": [
            {
              "Name": "test1",
              "ServiceId": "svc-xxxxx",
              "Port": 443,
              "Protocol": "HTTPS",
              "Version": "base"
            }
          ]
        }
      }
    }
  },
  "Outputs": {
    "Backend": {
      "Description": "Backend services.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "Backend"
        ]
      }
    },
    "Description": {
      "Description": "The description of route resource.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "Description"
        ]
      }
    },
    "EnvironmentInfo": {
      "Description": "Environment information.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "EnvironmentInfo"
        ]
      }
    },
    "RouteName": {
      "Description": "The name of the route.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "RouteName"
        ]
      }
    },
    "DomainInfos": {
      "Description": "Domain items.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "DomainInfos"
        ]
      }
    },
    "RouteId": {
      "Description": "The ID of route resource.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "RouteId"
        ]
      }
    },
    "Match": {
      "Description": "The match rule of route resource.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "Match"
        ]
      }
    }
  }
}