ALIYUN::APIG::Route

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