create-route
Описание
Создает маршрут, связанный с виртуальным маршрутизатором.
Вы можете маршрутизировать несколько различных протоколов и определить политику повторных попыток для маршрута. Трафик может быть перенаправлен одному или нескольким виртуальным узлам.
Для получения дополнительной информации о маршрутах см. Маршруты.
См. также: Документацию API AWS
Синтаксис
create-route
[--client-token <value>]
--mesh-name <value>
[--mesh-owner <value>]
--route-name <value>
--spec <value>
[--tags <value>]
--virtual-router-name <value>
[--cli-input-json | --cli-input-yaml]
[--generate-cli-skeleton <value>]
[--debug]
[--endpoint-url <value>]
[--no-verify-ssl]
[--no-paginate]
[--output <value>]
[--query <value>]
[--profile <value>]
[--region <value>]
[--version <value>]
[--color <value>]
[--no-sign-request]
[--ca-bundle <value>]
[--cli-read-timeout <value>]
[--cli-connect-timeout <value>]
[--cli-binary-format <value>]
[--no-cli-pager]
[--cli-auto-prompt]
[--no-cli-auto-prompt]
Параметры
--client-token (строка)
--mesh-name (строка)
--mesh-owner (строка)
--route-name (строка)
--spec (структура)
Спецификация маршрута для применения.
grpcRoute -> (структура)
Объект, представляющий спецификацию маршрута gRPC.
action -> (структура)
Объект, представляющий действие, которое должно быть выполнено при совпадении.
weightedTargets -> (список)
Объект, представляющий целевые узлы, на которые будет перенаправлен трафик при совпадении запроса с маршрутом.
(структура)
Объект, представляющий целевой узел и его относительный вес. Трафик распределяется между узлами в соответствии с их относительным весом. Например, целевой узел с относительным весом 50 получает в пять раз больше трафика, чем узел с весом 10. Общий вес всех целевых узлов должен быть меньше или равен 100.
port -> (целое число)
virtualNode -> (строка)
weight -> (целое число)
match -> (структура)
Объект, представляющий критерии для определения совпадения запроса.
metadata -> (список)
Объект, представляющий данные для сопоставления из запроса.
(структура)
Объект, представляющий метаданные сопоставления для маршрута.
invert -> (булево)
True, чтобы сопоставлять всё, кроме заданных критериев соответствия. Значение по умолчанию — False.match -> (структура сортированного объединения)
Объект, представляющий данные для сопоставления из запроса.
Примечание
Это структура сортированного объединения. Только один из следующих ключей верхнего уровня может быть задан:exact, prefix, range, regex, suffix.exact -> (строка)
prefix -> (строка)
range -> (структура)
Объект, представляющий диапазон значений для сопоставления.
end -> (длинное целое число)
start -> (длинное целое число)
regex -> (строка)
suffix -> (строка)
name -> (строка)
methodName -> (строка)
serviceName.port -> (целое число)
serviceName -> (строка)
retryPolicy -> (структура)
Объект, представляющий политику повторных попыток.
grpcRetryEvents -> (список)
Укажите хотя бы одно из допустимых значений.
(строка)
httpRetryEvents -> (список)
Укажите хотя бы одно из следующих значений.
- server-error – HTTP-коды состояния 500, 501, 502, 503, 504, 505, 506, 507, 508, 510 и 511
- gateway-error – HTTP-коды состояния 502, 503 и 504
- client-error – HTTP-код состояния 409
- stream-error – Повторить попытку при отказе от потока
(строка)
maxRetries -> (длинное целое число)
perRetryTimeout -> (структура)
Таймаут для каждой попытки повтора.
unit -> (строка)
value -> (длинное целое число)
tcpRetryEvents -> (список)
Укажите допустимое значение. Событие происходит до начала обработки запроса и возникает, когда сервер временно или постоянно недоступен.
(строка)
timeout -> (структура)
Объект, представляющий типы таймаутов.
idle -> (структура)
Объект, представляющий таймаут бездействия. Таймаут бездействия ограничивает время бездействия соединения. Значение по умолчанию — нет.
unit -> (строка)
value -> (длинное целое число)
perRequest -> (структура)
Объект, представляющий таймаут на запрос. Значение по умолчанию — 15 секунд. Если вы устанавливаете более высокое значение таймаута, убедитесь, что это значение установлено для каждого ресурса App Mesh в разговоре. Например, если бэкенд виртуального узла использует виртуального маршрутизатора для перенаправления на другой виртуальный узел, таймаут должен быть больше 15 секунд для исходного и целевого виртуального узла и маршрута.
unit -> (строка)
value -> (длинное целое число)
http2Route -> (структура)
Объект, представляющий спецификацию маршрута HTTP/2.
action -> (структура)
Объект, представляющий действие, которое должно быть выполнено при совпадении.
weightedTargets -> (список)
Объект, представляющий целевые узлы, на которые будет перенаправлен трафик при совпадении запроса с маршрутом.
(структура)
Объект, представляющий целевой узел и его относительный вес. Трафик распределяется между узлами в соответствии с их относительным весом. Например, целевой узел с относительным весом 50 получает в пять раз больше трафика, чем узел с весом 10. Общий вес всех целевых узлов должен быть меньше или равен 100.
port -> (целое число)
virtualNode -> (строка)
weight -> (целое число)
match -> (структура)
Объект, представляющий критерии для определения совпадения запроса.
headers -> (список)
Заголовки запроса клиента для сопоставления.
(структура)
Объект, представляющий HTTP-заголовок в запросе.
invert -> (булево)
True, чтобы сопоставлять всё, кроме заданных критериев соответствия. Значение по умолчанию — False.match -> (структура сортированного объединения)
Объект HeaderMatchMethod.
Примечание
Это структура сортированного объединения. Только один из следующих ключей верхнего уровня может быть задан:exact, prefix, range, regex, suffix.exact -> (строка)
prefix -> (строка)
range -> (структура)
Объект, представляющий диапазон значений для сопоставления.
end -> (длинное целое число)
start -> (длинное целое число)
regex -> (строка)
suffix -> (строка)
name -> (строка)
method -> (строка)
path -> (структура)
Путь запроса клиента для сопоставления.
exact -> (строка)
regex -> (строка)
port -> (целое число)
prefix -> (строка)
/, что само по себе соответствует всем запросам к имени виртуальной службы. Вы также можете сопоставлять запросы для маршрутизации на основе пути. Например, если имя вашей виртуальной службы — my-service.local, и вы хотите, чтобы маршрут соответствовал запросам на my-service.local/metrics, ваш префикс должен быть /metrics.queryParameters -> (список)
Параметры запроса клиента для сопоставления.
(структура)
Объект, представляющий параметр запроса в запросе.
match -> (структура)
Параметр запроса для сопоставления.
exact -> (строка)
name -> (строка)
scheme -> (строка)
retryPolicy -> (структура)
Объект, представляющий политику повторных попыток.
httpRetryEvents -> (список)
Укажите хотя бы одно из следующих значений.
- server-error – HTTP-коды состояния 500, 501, 502, 503, 504, 505, 506, 507, 508, 510 и 511
- gateway-error – HTTP-коды состояния 502, 503 и 504
- client-error – HTTP-код состояния 409
- stream-error – Повторить попытку при отказе от потока
(строка)
maxRetries -> (длинное целое число)
perRetryTimeout -> (структура)
Таймаут для каждой попытки повтора.
unit -> (строка)
value -> (длинное целое число)
tcpRetryEvents -> (список)
Укажите допустимое значение. Событие происходит до начала обработки запроса и возникает, когда сервер временно или постоянно недоступен.
(строка)
timeout -> (структура)
Объект, представляющий типы таймаутов.
idle -> (структура)
Объект, представляющий таймаут бездействия. Таймаут бездействия ограничивает время бездействия соединения. Значение по умолчанию — нет.
unit -> (строка)
value -> (длинное целое число)
perRequest -> (структура)
Объект, представляющий таймаут на запрос. Значение по умолчанию — 15 секунд. Если вы устанавливаете более высокое значение таймаута, убедитесь, что это значение установлено для каждого ресурса App Mesh в разговоре. Например, если бэкенд виртуального узла использует виртуального маршрутизатора для перенаправления на другой виртуальный узел, таймаут должен быть больше 15 секунд для исходного и целевого виртуального узла и маршрута.
unit -> (строка)
value -> (длинное целое число)
httpRoute -> (структура)
Объект, представляющий спецификацию маршрута HTTP.
action -> (структура)
Объект, представляющий действие, которое необходимо выполнить при совпадении.
weightedTargets -> (список)
Объект, представляющий целевые узлы, на которые будет направляться трафик при совпадении запроса с маршрутом.
(структура)
Объект, представляющий целевой узел и его относительный вес. Трафик распределяется между целевыми узлами в соответствии с их относительным весом. Например, целевой узел с относительным весом 50 получает в пять раз больше трафика, чем узел с относительным весом 10. Общий вес всех целевых узлов должен быть меньше или равен 100.
port -> (целое число)
virtualNode -> (строка)
weight -> (целое число)
match -> (структура)
Объект, представляющий критерии для определения соответствия запроса.
headers -> (список)
Заголовки запроса клиента для сопоставления.
(структура)
Объект, представляющий HTTP-заголовок в запросе.
invert -> (логическое значение)
True, чтобы сопоставить все, кроме критериев сопоставления. Значение по умолчанию — False.match -> (структура помеченного объединения)
Объект HeaderMatchMethod.
Примечание
Это структура помеченного объединения. Только один из следующих верхнеуровневых ключей может быть установлен:exact, prefix, range, regex, suffix.exact -> (строка)
prefix -> (строка)
range -> (структура)
Объект, представляющий диапазон значений для сопоставления.
end -> (длинное целое число)
start -> (длинное целое число)
regex -> (строка)
suffix -> (строка)
name -> (строка)
method -> (строка)
path -> (структура)
Путь запроса клиента для сопоставления.
exact -> (строка)
regex -> (строка)
port -> (целое число)
prefix -> (строка)
/, который сам по себе сопоставляет все запросы к имени виртуальной службы. Вы также можете выполнить сопоставление для маршрутизации запросов по пути. Например, если имя вашей виртуальной службы — my-service.local, и вы хотите, чтобы маршрут соответствовал запросам к my-service.local/metrics, ваш префикс должен быть /metrics.queryParameters -> (список)
Параметры запроса клиента для сопоставления.
(структура)
Объект, представляющий параметр запроса в запросе.
match -> (структура)
Параметр запроса для сопоставления.
exact -> (строка)
name -> (строка)
scheme -> (строка)
retryPolicy -> (структура)
Объект, представляющий политику повторных попыток.
httpRetryEvents -> (список)
Укажите хотя бы одно из следующих значений.
- server-error – HTTP-коды состояния 500, 501, 502, 503, 504, 505, 506, 507, 508, 510 и 511
- gateway-error – HTTP-коды состояния 502, 503 и 504
- client-error – HTTP-код состояния 409
- stream-error – Повторная попытка при отказе от потока
(строка)
maxRetries -> (длинное целое число)
perRetryTimeout -> (структура)
Таймаут для каждой попытки повторной обработки.
unit -> (строка)
value -> (длинное целое число)
tcpRetryEvents -> (список)
Укажите допустимое значение. Событие происходит до начала обработки любого запроса и возникает, когда исходящее соединение временно или постоянно недоступно.
(строка)
timeout -> (структура)
Объект, представляющий типы таймаутов.
idle -> (структура)
Объект, представляющий таймаут бездействия. Таймаут бездействия ограничивает время, в течение которого соединение может оставаться неактивным. Значение по умолчанию — none.
unit -> (строка)
value -> (длинное целое число)
perRequest -> (структура)
Объект, представляющий таймаут для каждого запроса. Значение по умолчанию — 15 секунд. Если вы установите более высокий таймаут, убедитесь, что это значение установлено для каждого ресурса App Mesh в диалоге. Например, если виртуальный узел бэкенда использует виртуальный маршрутизатор для маршрутизации к другому виртуальному узлу, то таймаут должен быть больше 15 секунд для виртуального узла источника и назначения, а также для маршрута.
unit -> (строка)
value -> (длинное целое число)
priority -> (целое число)
tcpRoute -> (структура)
Объект, представляющий спецификацию TCP-маршрута.
action -> (структура)
Действие, которое необходимо выполнить при совпадении.
weightedTargets -> (список)
Объект, представляющий целевые узлы, на которые будет направляться трафик при совпадении запроса с маршрутом.
(структура)
Объект, представляющий целевой узел и его относительный вес. Трафик распределяется между целевыми узлами в соответствии с их относительным весом. Например, целевой узел с относительным весом 50 получает в пять раз больше трафика, чем узел с относительным весом 10. Общий вес всех целевых узлов должен быть меньше или равен 100.
port -> (целое число)
virtualNode -> (строка)
weight -> (целое число)
match -> (структура)
Объект, представляющий критерии для определения соответствия запроса.
port -> (целое число)
timeout -> (структура)
Объект, представляющий типы таймаутов.
idle -> (структура)
Объект, представляющий таймаут бездействия. Таймаут бездействия ограничивает время, в течение которого соединение может оставаться неактивным. Значение по умолчанию — none.
unit -> (строка)
value -> (длинное целое число)
Синтаксис JSON:
{
"grpcRoute": {
"action": {
"weightedTargets": [
{
"port": integer,
"virtualNode": "string",
"weight": integer
}
...
]
},
"match": {
"metadata": [
{
"invert": true|false,
"match": {
"exact": "string",
"prefix": "string",
"range": {
"end": long,
"start": long
},
"regex": "string",
"suffix": "string"
},
"name": "string"
}
...
],
"methodName": "string",
"port": integer,
"serviceName": "string"
},
"retryPolicy": {
"grpcRetryEvents": ["cancelled"|"deadline-exceeded"|"internal"|"resource-exhausted"|"unavailable", ...],
"httpRetryEvents": ["string", ...],
"maxRetries": long,
"perRetryTimeout": {
"unit": "s"|"ms",
"value": long
},
"tcpRetryEvents": ["connection-error", ...]
},
"timeout": {
"idle": {
"unit": "s"|"ms",
"value": long
},
"perRequest": {
"unit": "s"|"ms",
"value": long
}
}
},
"http2Route": {
"action": {
"weightedTargets": [
{
"port": integer,
"virtualNode": "string",
"weight": integer
}
...
]
},
"match": {
"headers": [
{
"invert": true|false,
"match": {
"exact": "string",
"prefix": "string",
"range": {
"end": long,
"start": long
},
"regex": "string",
"suffix": "string"
},
"name": "string"
}
...
],
"method": "GET"|"HEAD"|"POST"|"PUT"|"DELETE"|"CONNECT"|"OPTIONS"|"TRACE"|"PATCH",
"path": {
"exact": "string",
"regex": "string"
},
"port": integer,
"prefix": "string",
"queryParameters": [
{
"match": {
"exact": "string"
},
"name": "string"
}
...
],
"scheme": "http"|"https"
},
"retryPolicy": {
"httpRetryEvents": ["string", ...],
"maxRetries": long,
"perRetryTimeout": {
"unit": "s"|"ms",
"value": long
},
"tcpRetryEvents": ["connection-error", ...]
},
"timeout": {
"idle": {
"unit": "s"|"ms",
"value": long
},
"perRequest": {
"unit": "s"|"ms",
"value": long
}
}
},
"httpRoute": {
"action": {
"weightedTargets": [
{
"port": integer,
"virtualNode": "string",
"weight": integer
}
...
]
},
"match": {
"headers": [
{
"invert": true|false,
"match": {
"exact": "string",
"prefix": "string",
"range": {
"end": long,
"start": long
},
"regex": "string",
"suffix": "string"
},
"name": "string"
}
...
],
"method": "GET"|"HEAD"|"POST"|"PUT"|"DELETE"|"CONNECT"|"OPTIONS"|"TRACE"|"PATCH",
"path": {
"exact": "string",
"regex": "string"
},
"port": integer,
"prefix": "string",
"queryParameters": [
{
"match": {
"exact": "string"
},
"name": "string"
}
...
],
"scheme": "http"|"https"
},
"retryPolicy": {
"httpRetryEvents": ["string", ...],
"maxRetries": long,
"perRetryTimeout": {
"unit": "s"|"ms",
"value": long
},
"tcpRetryEvents": ["connection-error", ...]
},
"timeout": {
"idle": {
"unit": "s"|"ms",
"value": long
},
"perRequest": {
"unit": "s"|"ms",
"value": long
}
}
},
"priority": integer,
"tcpRoute": {
"action": {
"weightedTargets": [
{
"port": integer,
"virtualNode": "string",
"weight": integer
}
...
]
},
"match": {
"port": integer
},
"timeout": {
"idle": {
"unit": "s"|"ms",
"value": long
}
}
}
}
--tags (список)
Дополнительные метаданные, которые можно применить к маршруту для улучшения категоризации и организации. Каждый тег состоит из ключа и необязательного значения, которые вы определяете. Длина ключей тегов может быть максимум 128 символов, а длина значений тегов — максимум 256 символов.
(структура)
Дополнительные метаданные, которые вы применяете к ресурсу для улучшения категоризации и организации. Каждый тег состоит из ключа и необязательного значения, которые вы определяете. Длина ключей тегов может быть максимум 128 символов, а длина значений тегов — максимум 256 символов.
key -> (строка)
key — это общее метка, которая действует как категория для более конкретных значений тегов.value -> (строка)
value действует как описание в рамках категории тегов (ключ).Краткая запись:
key=string,value=string ...
Синтаксис JSON:
[
{
"key": "string",
"value": "string"
}
...
]
--virtual-router-name (строка)
--cli-input-json | --cli-input-yaml (строка) Считывает аргументы из предоставленной JSON-строки. JSON-строка соответствует формату, предоставленному --generate-cli-skeleton. Если на командной строке предоставлены другие аргументы, эти значения переопределят значения, предоставленные JSON. Невозможно передавать произвольные двоичные значения с помощью значения, предоставленного JSON, так как строка будет взята буквально. Это не может быть указано вместе с --cli-input-yaml.
--generate-cli-skeleton (строка) Выводит JSON-скелет в стандартный вывод без отправки запроса к API. При отсутствии значения или значении input выводит пример JSON-ввода, который можно использовать в качестве аргумента для --cli-input-json. Аналогично, при предоставлении yaml-input он выведет пример YAML-ввода, который можно использовать с --cli-input-yaml. При указании значения output он проверяет входные данные команды и возвращает пример выходного JSON для этой команды. Сгенерированный JSON-скелет не является стабильным между версиями AWS CLI, и нет гарантий обратной совместимости в сгенерированном JSON-скелете.
Общие параметры
--debug (boolean)
Включить отладовую регистрацию.
--endpoint-url (string)
Переопределить URL по умолчанию команды указанным URL.
--no-verify-ssl (boolean)
По умолчанию AWS CLI использует SSL при взаимодействии с AWS-сервисами. Для каждого SSL-соединения AWS CLI проверяет сертификаты SSL. Этот параметр переопределяет поведение проверки SSL-сертификатов по умолчанию.
--no-paginate (boolean)
Отключить автоматическую постраничную навигацию. Если автоматическая постраничная навигация отключена, AWS CLI выполнит только один вызов для первой страницы результатов.
--output (string)
Стиль форматирования вывода команды.
- json
- text
- table
- yaml
- yaml-stream
--query (string)
Запрос JMESPath для фильтрации данных ответа.
--profile (string)
Использовать определенный профиль из файла учетных данных.
--region (string)
Используемый регион. Переопределяет настройки конфигурации/среды.
--version (string)
Отобразить версию этого инструмента.
--color (string)
Включить/отключить вывод цвета.
- on
- off
- auto
--no-sign-request (boolean)
Не подписывать запросы. Учетные данные не будут загружены, если этот аргумент указан.
--ca-bundle (string)
Файл с набором сертификатов CA для проверки SSL-сертификатов. Переопределяет настройки конфигурации/среды.
--cli-read-timeout (int)
Максимальное время чтения сокета в секундах. Если значение установлено в 0, чтение сокета будет выполняться блокирующим образом без таймаута. Значение по умолчанию — 60 секунд.
--cli-connect-timeout (int)
Максимальное время подключения сокета в секундах. Если значение установлено в 0, подключение сокета будет выполняться блокирующим образом без таймаута. Значение по умолчанию — 60 секунд.
--cli-binary-format (string)
Стиль форматирования для бинарных блоков. По умолчанию используется формат base64. Формат base64 ожидает, что бинарные блоки будут предоставлены как строка, закодированная в base64. Формат raw-in-base64-out сохраняет совместимость с поведением AWS CLI V1, и бинарные значения должны передаваться буквально. При предоставлении содержимого из файла, которое соответствует бинарному блоку fileb:// всегда будет обрабатываться как бинарный и будет использоваться содержимое файла напрямую независимо от настройки cli-binary-format. При использовании file:// содержимое файла должно быть правильно отформатировано для настроенного cli-binary-format.
- base64
- raw-in-base64-out
--no-cli-pager (boolean)
Отключить пейджер CLI для вывода.
--cli-auto-prompt (boolean)
Автоматически запрашивать параметры ввода CLI.
--no-cli-auto-prompt (boolean)
Отключить автоматическую запрос параметров ввода CLI.
Примеры
Примечание
Для использования следующих примеров необходимо установить и настроить AWS CLI. Дополнительную информацию см. в руководстве по началу работы в Руководстве пользователя AWS CLI.
Если не указано иное, все примеры используют правила цитирования в стиле Unix. Эти примеры необходимо адаптировать к правилам цитирования вашей терминальной среды. См. Использование кавычек со строками в Руководстве пользователя AWS CLI.
Для создания нового маршрута gRPC
Следующий create-route пример использует файл входных данных JSON для создания маршрута gRPC. Трафик gRPC, у которого метаданные начинаются с 123, маршрутизируется на виртуальный узел с именем serviceBgrpc. Если при попытке связи с целевым узлом маршрута возникают определенные ошибки gRPC, HTTP или TCP, маршрут повторяется три раза. Время ожидания между каждой попыткой повтора составляет 15 секунд.
aws appmesh create-route \
--cli-input-json file://create-route-grpc.json
Содержимое create-route-grpc.json:
{
"meshName" : "apps",
"routeName" : "grpcRoute",
"spec" : {
"grpcRoute" : {
"action" : {
"weightedTargets" : [
{
"virtualNode" : "serviceBgrpc",
"weight" : 100
}
]
},
"match" : {
"metadata" : [
{
"invert" : false,
"match" : {
"prefix" : "123"
},
"name" : "myMetadata"
}
],
"methodName" : "GetColor",
"serviceName" : "com.amazonaws.services.ColorService"
},
"retryPolicy" : {
"grpcRetryEvents" : [ "deadline-exceeded" ],
"httpRetryEvents" : [ "server-error", "gateway-error" ],
"maxRetries" : 3,
"perRetryTimeout" : {
"unit" : "s",
"value" : 15
},
"tcpRetryEvents" : [ "connection-error" ]
}
},
"priority" : 100
},
"virtualRouterName" : "serviceBgrpc"
}
Вывод:
{
"route": {
"meshName": "apps",
"metadata": {
"arn": "arn:aws:appmesh:us-west-2:123456789012:mesh/apps/virtualRouter/serviceBgrpc/route/grpcRoute",
"createdAt": 1572010806.008,
"lastUpdatedAt": 1572010806.008,
"uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
"version": 1
},
"routeName": "grpcRoute",
"spec": {
"grpcRoute": {
"action": {
"weightedTargets": [
{
"virtualNode": "serviceBgrpc",
"weight": 100
}
]
},
"match": {
"metadata": [
{
"invert": false,
"match": {
"prefix": "123"
},
"name": "mymetadata"
}
],
"methodName": "GetColor",
"serviceName": "com.amazonaws.services.ColorService"
},
"retryPolicy": {
"grpcRetryEvents": [
"deadline-exceeded"
],
"httpRetryEvents": [
"server-error",
"gateway-error"
],
"maxRetries": 3,
"perRetryTimeout": {
"unit": "s",
"value": 15
},
"tcpRetryEvents": [
"connection-error"
]
}
},
"priority": 100
},
"status": {
"status": "ACTIVE"
},
"virtualRouterName": "serviceBgrpc"
}
}
Для создания нового маршрута HTTP или HTTP/2
Следующий create-route пример использует файл входных данных JSON для создания маршрута HTTP/2. Чтобы создать маршрут HTTP, замените http2Route на httpRoute в разделе spec. Весь трафик HTTP/2, направленный на любой префикс URL с значением заголовка, начинающимся с 123, маршрутизируется на виртуальный узел с именем serviceBhttp2. Если при попытке связи с целевым узлом маршрута возникают определенные ошибки HTTP или TCP, маршрут повторяется три раза. Время ожидания между каждой попыткой повтора составляет 15 секунд.
aws appmesh create-route \
--cli-input-json file://create-route-http2.json
Содержимое create-route-http2.json:
{
"meshName": "apps",
"routeName": "http2Route",
"spec": {
"http2Route": {
"action": {
"weightedTargets": [
{
"virtualNode": "serviceBhttp2",
"weight": 100
}
]
},
"match": {
"headers": [
{
"invert": false,
"match": {
"prefix": "123"
},
"name": "clientRequestId"
}
],
"method": "POST",
"prefix": "/",
"scheme": "http"
},
"retryPolicy": {
"httpRetryEvents": [
"server-error",
"gateway-error"
],
"maxRetries": 3,
"perRetryTimeout": {
"unit": "s",
"value": 15
},
"tcpRetryEvents": [
"connection-error"
]
}
},
"priority": 200
},
"virtualRouterName": "serviceBhttp2"
}
Вывод:
{
"route": {
"meshName": "apps",
"metadata": {
"arn": "arn:aws:appmesh:us-west-2:123456789012:mesh/apps/virtualRouter/serviceBhttp2/route/http2Route",
"createdAt": 1572011008.352,
"lastUpdatedAt": 1572011008.352,
"uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
"version": 1
},
"routeName": "http2Route",
"spec": {
"http2Route": {
"action": {
"weightedTargets": [
{
"virtualNode": "serviceBhttp2",
"weight": 100
}
]
},
"match": {
"headers": [
{
"invert": false,
"match": {
"prefix": "123"
},
"name": "clientRequestId"
}
],
"method": "POST",
"prefix": "/",
"scheme": "http"
},
"retryPolicy": {
"httpRetryEvents": [
"server-error",
"gateway-error"
],
"maxRetries": 3,
"perRetryTimeout": {
"unit": "s",
"value": 15
},
"tcpRetryEvents": [
"connection-error"
]
}
},
"priority": 200
},
"status": {
"status": "ACTIVE"
},
"virtualRouterName": "serviceBhttp2"
}
}
Для создания нового маршрута TCP
Следующий create-route пример использует файл входных данных JSON для создания маршрута TCP. 75% трафика маршрутизируется на виртуальный узел с именем serviceBtcp, а 25% — на виртуальный узел с именем serviceBv2tcp. Указание различных весов для разных целей является эффективным способом развертывания новой версии приложения. Вы можете настроить веса таким образом, чтобы в конечном итоге 100% всего трафика маршрутизировалось на целевой узел с новой версией приложения.
aws appmesh create-route \
--cli-input-json file://create-route-tcp.json
Содержимое create-route-tcp.json:
{
"meshName": "apps",
"routeName": "tcpRoute",
"spec": {
"priority": 300,
"tcpRoute": {
"action": {
"weightedTargets": [
{
"virtualNode": "serviceBtcp",
"weight": 75
},
{
"virtualNode": "serviceBv2tcp",
"weight": 25
}
]
}
}
},
"virtualRouterName": "serviceBtcp"
}
Вывод:
{
"route": {
"meshName": "apps",
"metadata": {
"arn": "arn:aws:appmesh:us-west-2:123456789012:mesh/apps/virtualRouter/serviceBtcp/route/tcpRoute",
"createdAt": 1572011436.26,
"lastUpdatedAt": 1572011436.26,
"uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE",
"version": 1
},
"routeName": "tcpRoute",
"spec": {
"priority": 300,
"tcpRoute": {
"action": {
"weightedTargets": [
{
"virtualNode": "serviceBtcp",
"weight": 75
},
{
"virtualNode": "serviceBv2tcp",
"weight": 25
}
]
}
}
},
"status": {
"status": "ACTIVE"
},
"virtualRouterName": "serviceBtcp"
}
}
Для получения дополнительной информации см. Маршруты в Руководстве пользователя AWS App Mesh.
Вывод
route -> (структура)
Полное описание вашей сети после вызова создания.
meshName -> (строка)
metadata -> (структура)
Соответствующие метаданные маршрута.
arn -> (строка)
createdAt -> (временная метка)
lastUpdatedAt -> (временная метка)
meshOwner -> (строка)
resourceOwner -> (строка)
uid -> (строка)
version -> (целое число)
routeName -> (строка)
spec -> (структура)
Спецификация маршрута.
grpcRoute -> (структура)
Объект, представляющий спецификацию маршрута gRPC.
action -> (структура)
Объект, представляющий действие, которое должно быть выполнено при совпадении запроса с маршрутом.
weightedTargets -> (список)
Объект, представляющий целевые узлы, куда будет направлен трафик при совпадении запроса с маршрутом.
(структура)
Объект, представляющий целевой узел и его относительный вес. Трафик распределяется между целевыми узлами в соответствии с их относительным весом. Например, целевой узел с относительным весом 50 получит в пять раз больше трафика, чем узел с относительным весом 10. Общий вес всех целевых узлов должен быть меньше или равен 100.
port -> (целое число)
virtualNode -> (строка)
weight -> (целое число)
match -> (структура)
Объект, представляющий критерии для определения совпадения запроса с маршрутом.
metadata -> (список)
Объект, представляющий данные для сопоставления с запросом.
(структура)
Объект, представляющий метаданные сопоставления для маршрута.
invert -> (булево)
True, чтобы сопоставлять все, кроме критериев сопоставления. Значение по умолчанию — False.match -> (структура помеченного объединения)
Объект, представляющий данные для сопоставления с запросом.
Примечание
Это структура помеченного объединения. Только один из следующих ключей верхнего уровня может быть задан:exact, prefix, range, regex, suffix.exact -> (строка)
prefix -> (строка)
range -> (структура)
Объект, представляющий диапазон значений для сопоставления.
end -> (длинное целое)
start -> (длинное целое)
regex -> (строка)
suffix -> (строка)
name -> (строка)
methodName -> (строка)
serviceName.port -> (целое число)
serviceName -> (строка)
retryPolicy -> (структура)
Объект, представляющий политику повторных попыток.
grpcRetryEvents -> (список)
Укажите хотя бы одно из допустимых значений.
(строка)
httpRetryEvents -> (список)
Укажите хотя бы одно из следующих значений.
- server-error – HTTP-коды состояния 500, 501, 502, 503, 504, 505, 506, 507, 508, 510 и 511
- gateway-error – HTTP-коды состояния 502, 503 и 504
- client-error – HTTP-код состояния 409
- stream-error – Повторная попытка при отказе потока
(строка)
maxRetries -> (длинное целое)
perRetryTimeout -> (структура)
Таймаут для каждой попытки повторного выполнения.
unit -> (строка)
value -> (длинное целое)
tcpRetryEvents -> (список)
Укажите допустимое значение. Событие происходит до начала обработки запроса и возникает, когда источник временно или постоянно недоступен.
(строка)
timeout -> (структура)
Объект, представляющий типы таймаутов.
idle -> (структура)
Объект, представляющий таймаут бездействия. Таймаут бездействия ограничивает время, в течение которого соединение может быть бездействующим. Значение по умолчанию — none.
unit -> (строка)
value -> (длинное целое)
perRequest -> (структура)
Объект, представляющий таймаут для каждого запроса. Значение по умолчанию — 15 секунд. Если вы устанавливаете более высокий таймаут, убедитесь, что более высокое значение установлено для каждого ресурса App Mesh в разговоре. Например, если бэкенд виртуального узла использует провайдера виртуального маршрутизатора для перенаправления на другой виртуальный узел, таймаут должен быть больше 15 секунд для исходного и целевого виртуальных узлов и маршрута.
unit -> (строка)
value -> (длинное целое)
http2Route -> (структура)
Объект, представляющий спецификацию маршрута HTTP/2.
action -> (структура)
Объект, представляющий действие, которое должно быть выполнено при совпадении запроса с маршрутом.
weightedTargets -> (список)
Объект, представляющий целевые узлы, куда будет направлен трафик при совпадении запроса с маршрутом.
(структура)
Объект, представляющий целевой узел и его относительный вес. Трафик распределяется между целевыми узлами в соответствии с их относительным весом. Например, целевой узел с относительным весом 50 получит в пять раз больше трафика, чем узел с относительным весом 10. Общий вес всех целевых узлов должен быть меньше или равен 100.
port -> (целое число)
virtualNode -> (строка)
weight -> (целое число)
match -> (структура)
Объект, представляющий критерии для определения совпадения запроса с маршрутом.
headers -> (список)
Заголовки запроса клиента для сопоставления.
(структура)
Объект, представляющий HTTP-заголовок в запросе.
invert -> (булево)
True, чтобы сопоставлять все, кроме критериев сопоставления. Значение по умолчанию — False.match -> (структура помеченного объединения)
Объект HeaderMatchMethod.
Примечание
Это структура помеченного объединения. Только один из следующих ключей верхнего уровня может быть задан:exact, prefix, range, regex, suffix.exact -> (строка)
prefix -> (строка)
range -> (структура)
Объект, представляющий диапазон значений для сопоставления.
end -> (длинное целое)
start -> (длинное целое)
regex -> (строка)
suffix -> (строка)
name -> (строка)
method -> (строка)
path -> (структура)
Путь запроса клиента для сопоставления.
exact -> (строка)
regex -> (строка)
port -> (целое число)
prefix -> (строка)
/, который сам по себе соответствует всем запросам к имени виртуальной службы. Вы также можете сопоставлять запросы для маршрутизации на основе пути. Например, если имя вашей виртуальной службы — my-service.local, и вы хотите, чтобы маршрут сопоставлял запросы к my-service.local/metrics, ваш префикс должен быть /metrics.queryParameters -> (список)
Параметры запроса клиента для сопоставления.
(структура)
Объект, представляющий параметр запроса в запросе.
match -> (структура)
Параметр запроса для сопоставления.
exact -> (строка)
name -> (строка)
scheme -> (строка)
retryPolicy -> (структура)
Объект, представляющий политику повторных попыток.
httpRetryEvents -> (список)
Укажите хотя бы одно из следующих значений.
- server-error – HTTP-коды состояния 500, 501, 502, 503, 504, 505, 506, 507, 508, 510 и 511
- gateway-error – HTTP-коды состояния 502, 503 и 504
- client-error – HTTP-код состояния 409
- stream-error – Повторная попытка при отказе потока
(строка)
maxRetries -> (длинное целое)
perRetryTimeout -> (структура)
Таймаут для каждой попытки повторного выполнения.
unit -> (строка)
value -> (длинное целое)
tcpRetryEvents -> (список)
Укажите допустимое значение. Событие происходит до начала обработки запроса и возникает, когда источник временно или постоянно недоступен.
(строка)
timeout -> (структура)
Объект, представляющий типы таймаутов.
idle -> (структура)
Объект, представляющий таймаут бездействия. Таймаут бездействия ограничивает время, в течение которого соединение может быть бездействующим. Значение по умолчанию — none.
unit -> (строка)
value -> (длинное целое)
perRequest -> (структура)
Объект, представляющий таймаут для каждого запроса. Значение по умолчанию — 15 секунд. Если вы устанавливаете более высокий таймаут, убедитесь, что более высокое значение установлено для каждого ресурса App Mesh в разговоре. Например, если бэкенд виртуального узла использует провайдера виртуального маршрутизатора для перенаправления на другой виртуальный узел, таймаут должен быть больше 15 секунд для исходного и целевого виртуальных узлов и маршрута.
unit -> (строка)
value -> (длинное целое)
httpRoute -> (структура)
Объект, представляющий спецификацию HTTP-маршрута.
action -> (структура)
Объект, представляющий действие, которое должно быть выполнено, если совпадение найдено.
weightedTargets -> (список)
Объект, представляющий целевые узлы, к которым будет перенаправлен трафик при совпадении запроса с маршрутом.
(структура)
Объект, представляющий целевой узел и его относительный вес. Трафик распределяется между целевыми узлами в соответствии с их относительным весом. Например, целевой узел с относительным весом 50 получает в пять раз больше трафика, чем узел с относительным весом 10. Общий вес всех целевых узлов должен быть меньше или равен 100.
port -> (целое число)
virtualNode -> (строка)
weight -> (целое число)
match -> (структура)
Объект, представляющий критерии для определения соответствия запроса.
headers -> (список)
Заголовки клиентского запроса, по которым необходимо осуществить сопоставление.
(структура)
Объект, представляющий HTTP-заголовок в запросе.
invert -> (булево)
True, чтобы сопоставить всё, кроме критериев соответствия. Значение по умолчанию — False.match -> (меченый объединяемый объект структуры)
Объект HeaderMatchMethod.
Примечание
Это структура меченого объединения. Только один из следующих верхнеуровневых ключей может быть задан:exact, prefix, range, regex, suffix.exact -> (строка)
prefix -> (строка)
range -> (структура)
Объект, представляющий диапазон значений для сопоставления.
end -> (длинное целое число)
start -> (длинное целое число)
regex -> (строка)
suffix -> (строка)
name -> (строка)
method -> (строка)
path -> (структура)
Путь клиентского запроса для сопоставления.
exact -> (строка)
regex -> (строка)
port -> (целое число)
prefix -> (строка)
/, что само по себе соответствует всем запросам к имени виртуальной службы. Вы также можете использовать сопоставление по пути для маршрутизации запросов. Например, если имя вашей виртуальной службы — my-service.local, и вы хотите, чтобы маршрут соответствовал запросам к my-service.local/metrics, ваш префикс должен быть /metrics.queryParameters -> (список)
Параметры запроса клиентского запроса для сопоставления.
(структура)
Объект, представляющий параметр запроса в запросе.
match -> (структура)
Параметр запроса для сопоставления.
exact -> (строка)
name -> (строка)
scheme -> (строка)
retryPolicy -> (структура)
Объект, представляющий политику повторных попыток.
httpRetryEvents -> (список)
Укажите хотя бы одно из следующих значений.
- server-error – HTTP-коды состояния 500, 501, 502, 503, 504, 505, 506, 507, 508, 510 и 511
- gateway-error – HTTP-коды состояния 502, 503 и 504
- client-error – HTTP-код состояния 409
- stream-error – Повторная попытка при отказе потока
(строка)
maxRetries -> (длинное целое число)
perRetryTimeout -> (структура)
Таймаут для каждой попытки повтора.
unit -> (строка)
value -> (длинное целое число)
tcpRetryEvents -> (список)
Укажите допустимое значение. Событие происходит до начала обработки запроса и возникает, когда подключение к серверу временно или постоянно недоступно.
(строка)
timeout -> (структура)
Объект, представляющий типы таймаутов.
idle -> (структура)
Объект, представляющий таймаут простоя. Таймаут простоя ограничивает время простоя соединения. Значение по умолчанию — none.
unit -> (строка)
value -> (длинное целое число)
perRequest -> (структура)
Объект, представляющий таймаут для каждого запроса. Значение по умолчанию — 15 секунд. Если вы устанавливаете более высокий таймаут, убедитесь, что это значение установлено для каждого ресурса App Mesh в разговоре. Например, если виртуальный узел бэкенда использует виртуальный маршрутизатор для маршрутизации к другому виртуальному узлу, таймаут должен быть больше 15 секунд для виртуального узла источника и назначения, а также для маршрута.
unit -> (строка)
value -> (длинное целое число)
priority -> (целое число)
tcpRoute -> (структура)
Объект, представляющий спецификацию TCP-маршрута.
action -> (структура)
Действие, которое должно быть выполнено, если совпадение найдено.
weightedTargets -> (список)
Объект, представляющий целевые узлы, к которым будет перенаправлен трафик при совпадении запроса с маршрутом.
(структура)
Объект, представляющий целевой узел и его относительный вес. Трафик распределяется между целевыми узлами в соответствии с их относительным весом. Например, целевой узел с относительным весом 50 получает в пять раз больше трафика, чем узел с относительным весом 10. Общий вес всех целевых узлов должен быть меньше или равен 100.
port -> (целое число)
virtualNode -> (строка)
weight -> (целое число)
match -> (структура)
Объект, представляющий критерии для определения соответствия запроса.
port -> (целое число)
timeout -> (структура)
Объект, представляющий типы таймаутов.
idle -> (структура)
Объект, представляющий таймаут простоя. Таймаут простоя ограничивает время простоя соединения. Значение по умолчанию — none.
unit -> (строка)
value -> (длинное целое число)
status -> (структура)
Статус маршрута.
status -> (строка)
virtualRouterName -> (строка)
© Copyright 2025, Amazon Web Services. Created using Sphinx.