Антишаблоны миграции Apigee Edge на Apigee X

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

Как текущий клиент Apigee Edge, вы можете перенести свою установку на Apigee X , чтобы воспользоваться новыми возможностями или доступностью в других регионах.

На этой странице описаны антишаблоны в вашей конфигурации, которые вам необходимо устранить перед переходом на Apigee X, а также другие изменения в поведении, о которых вам следует знать перед переходом.

Более широкий список антипаттернов Apigee Edge описывает методы использования, которых следует избегать в любом случае. На этой странице описаны конкретные нерекомендуемые методы использования, которые блокируют миграцию. Решите их сейчас, чтобы предотвратить проблемы при переходе на Apigee X.

Приложения без продуктов API

Краткое содержание Требуются изменения на стороне клиента? Разрешение

Существуют приложения без продуктов API.

Разница между Apigee Edge и Apigee X:

Апигей Край Апигей Икс
Можно настроить приложение и учетные данные, которые не связаны ни с каким продуктом API. Это приложение фактически имеет доступ ко всем продуктам API. Каждое приложение должно быть настроено для доступа хотя бы к одному продукту API. Невозможно неявно предоставить доступ ко всем продуктам API. Вы можете настроить приложение для доступа ко всем продуктам API, но это необходимо сделать явно.
Нет.

Решение: приложения без продуктов API.

Свяжите все учетные данные приложения хотя бы с одним продуктом API. Дополнительные сведения о том, как это сделать, см. в разделе Регистрация приложений и управление ключами API .

Самый простой способ — назначить каждому приложению доступ ко всем продуктам API. Это будет эквивалент того, что возможно в Apigee Edge. Задача будет заключаться в том, что если вы хотите использовать подход с «наименьшими привилегиями», вам нужно будет определить минимальный список продуктов API, к которым должны иметь доступ все учетные данные приложения. Вы можете проанализировать это с помощью отчетов Apigee Edge Analytics на основе идентификатора клиента.

Кэш без срока действия

Краткое содержание Требуются изменения на стороне клиента? Разрешение

Кэш(ы) не имеют срока годности.

Разница между Apigee Edge и Apigee X:

Апигей Край Апигей Икс
Поддерживает создание, обновление и удаление дескрипторов ресурсов кэша. Не поддерживает создание, обновление или удаление дескрипторов ресурсов кэша.
Нет

Решение: Кэш без срока действия.

Установите срок действия для всех кешей.

Выражения фильтра JSONPath для неопределенных путей

Краткое содержание Требуются изменения на стороне клиента? Разрешение

Для неопределенных путей запрос результата выражений фильтра не является частью спецификации JSONPath. См. https://goessner.net/articles/JsonPath/ .

Разница между Apigee Edge и Apigee X:

При навигации по этому примеру структуры

{
    "books": [
      {
        "name": "A",
      },
      {
        "name": "B",
      }
    ]
}

С выражением $..books[?(@.name == 'A')][0] ,

Апигей Край Апигей Икс
Выходы '{"name": "A"}' Выходы []

С выражением $..books[?(@.name == 'A')][0].name ,

Апигей Край Апигей Икс
Выходы "A" Выходы []
Да

Решение: выражения фильтра JSONPath для неопределенных путей.

Найдите и замените затронутые запросы.

Выражения JSONPath для отсутствующих индексов

Краткое содержание Требуются изменения на стороне клиента? Разрешение

Выражения JSONPath с отсутствующим индексом ведут себя по-разному в Apigee X и Apigee Edge. Apigee X возвращает ошибку PathNotFoundException , если путь не найден.

Разница между Apigee Edge и Apigee X:

При навигации по этому примеру структуры

{
    "books": [
      {
        "name": "A",
      },
      {
        "name": "B",
      }
    ]
}

С помощью выражения $.books[3] ,

Апигей Край Апигей Икс
Выходы null Выводит ошибку PathNotFoundException
Да

Решение: выражения JSONPath для индексов, которые отсутствуют.

Найдите и замените затронутые запросы.

Выражения JSONPath с индексом массива, не возвращающие объект массива

Краткое содержание Требуются изменения на стороне клиента? Разрешение

Выражения JSONPath с индексом массива или срезами возвращают объект массива в Apigee X.

Разница между Apigee Edge и Apigee X:

При навигации по этому примеру структуры

{
    "books": [
      {
        "name": "A",
      },
      {
        "name": "B",
      }
    ]
}

С помощью выражения $.books

Апигей Край Апигей Икс
Выходы {“name”:”A”, “name”: “B”} Выходы [{“name”:”A”, “name”: “B”}]

С помощью выражения $.books[-1] ,

Апигей Край Апигей Икс
Выходы {“name”: “B”} Выходы [{“name”: “B”}]

С помощью выражения $.books[-2:] ,

Апигей Край Апигей Икс
Выходы {“name”:”A”, “name”: “B”} Выходы [{“name”:”A”, “name”: “B”}]
Да

Решение: выражения JSONPath с индексом массива не возвращают объект массива.

Найдите и замените выражения, которые могут возвращать другие результаты после обновления.

Ограничения на имя хранилища ключей

Краткое содержание Требуются изменения на стороне клиента? Разрешение

Имена хранилищ ключей Apigee X могут содержать только буквы, цифры и дефисы. Имена хранилищ ключей Edge не налагают этих ограничений.

Нет

Решение: ограничения на имя хранилища ключей.

Проверьте имена хранилищ ключей и при необходимости обновите имена, удалив неподдерживаемые символы.

Для прокси API развернуто несколько базовых путей.

Краткое содержание Требуются изменения на стороне клиента? Разрешение

В среде развертывается несколько версий прокси-сервера API, и каждая версия имеет свой базовый путь.

Разница между Apigee Edge и Apigee X:

Апигей Край Апигей Икс
Поддерживает развертывание нескольких версий прокси-сервера API, где каждая версия может иметь свой базовый путь. Не поддерживает развертывание нескольких версий прокси-сервера API, даже если прокси-сервер имеет разные базовые пути.
Нет

Решение: для прокси-сервера API развернуто несколько базовых путей.

Обновите все пакеты, чтобы в среде была развернута только одна версия пакета, независимо от базового пути.

Несовместимые HTTP-сообщения

Краткое содержание Требуются изменения на стороне клиента? Разрешение

Клиенты или прокси-сервер API отправляют сообщения (запросы или ответы), не соответствующие стандарту HTTP. Например, недопустимые имена заголовков, дублирование в некоторых запрещенных заголовках и т. д.

Вы не можете перейти на Apigee X, если при выполнении вашего API имеется одна или несколько из следующих ошибок:

Ошибка Подробности
INVALID_CHARACTERS_IN_HEADER В указанном заголовке обнаружен один или несколько недопустимых символов. Допустимые имена заголовков состоят из английских букв, цифр и дефисов.
MISSING_COLON В паре имя заголовка и значение заголовка отсутствует : (двоеточие).
MULTIPLE_CONTENT_LENGTH Для заголовка Content-Length было предоставлено несколько значений.
CONTENT_LENGTH_NOT_INTEGER Значение заголовка Content-Length не является целым числом.
INVALID_UPGRADE Заголовок Upgrade должен использоваться только для включения соединений WebSocket, но это не так.
URL_HEADER_SIZE_TOO_LONG Общий размер URL-адреса запроса и заголовков превышает максимально допустимый размер в 15 КБ.
BODY_NOT_ALLOWED Тело сообщения не допускается с методами «GET», «DELETE», «TRACE», «OPTIONS» и «HEAD».
UNSUPPORTED_HTTP_VERSION Для запроса используется версия HTTP, отличная от 1.1, и она не поддерживается.
ZERO_CONTENT_LENGTH_FOR_POST_OR_PUT Для метода «POST» или «PUT» было установлено нулевое («0») значение поля заголовка Content-Length.
UNSUPPORTED_RESPONSE_PREFIX В заголовке ответа присутствовал неподдерживаемый префикс заголовка «X-Apigee-».
Да, возможно.

Решение: несовместимые HTTP-сообщения.

Вы должны исправить все ошибки в протоколах HTTP перед переходом на Apigee X. Если ошибка возникает в клиентском приложении, вы должны попросить разработчика клиентского приложения исправить проблему.

Недопустимый срок действия токена OAuth 2.0.

Краткое содержание Требуются изменения на стороне клиента? Разрешение

Срок действия токена OAuth 2.0 выходит за пределы установленного диапазона.

Разница между Apigee Edge и Apigee X:

Апигей Край Апигей Икс
Никаких ограничений на время истечения срока действия токена OAuth 2.0 в настоящее время не применяется, но его введение планируется. См. рекомендации в разделе OAuth на странице «Ограничения» . Вам необходимо установить токен доступа и время истечения срока действия токена обновления для OAuth 2.0. Поддерживаемые диапазоны:
  • 180 секунд <= срок действия токена доступа OAuth 2.0 <= 30 дней
  • 1 день <= срок действия токена обновления OAuth 2.0 <= 2 года
Нет

Решение: срок действия токена OAuth 2.0 недействителен.

Используйте политику OAuthV2 и укажите время истечения срока действия в <ExpiresIn> и <RefreshTokenExpiresIn> .

Превышен лимит продукта

Краткое содержание Требуются изменения на стороне клиента? Разрешение

Конфигурация Apigee Edge не соответствует определенным ограничениям продукта . Некоторые ограничения продукта, которые задокументированы, но не применяются в Apigee Edge, применяются и в Apigee X.

Нет

Решение: превышены ограничения продукта.

Исправьте любое использование, превышающее ограничения продукта , перед переходом на Apigee X.

Политики ServiceCallout со спецификаторами соединения конечной точки и целевого пути.

Краткое содержание Требуются изменения на стороне клиента? Разрешение

В политике ServiceCallout элемент <LocalTargetConnection> должен включать элементы <APIProxy> и <ProxyEndpoint> или элемент <Path> , но не оба одновременно. Дополнительные сведения см. в элементе <LocalTargetConnection> .

Apigee Edge документирует это требование, но не обеспечивает его соблюдение. Apigee X прекращает обработку, если обнаруживает <LocalTargetConnection> с обеими конфигурациями.

Нет

Решение: политики ServiceCallout со спецификаторами подключения как к конечной точке, так и к целевому пути.

Проверьте конфигурации политики ServiceCallout и удалите все конфигурации <LocalTargetConnection> , которые не соответствуют требованиям.

Ограничения на имя целевого сервера

Краткое содержание Требуются изменения на стороне клиента? Разрешение

Имена целевых серверов Apigee X могут содержать только буквы, цифры, дефисы и точки. Имена пограничных целевых серверов не налагают этих ограничений.

Нет

Решение: ограничения на имя целевого сервера.

Проверьте имена целевых серверов и при необходимости обновите имена, удалив неподдерживаемые символы.

Пробный сертификат на виртуальном хосте

Краткое содержание Требуются изменения на стороне клиента? Разрешение

Один или несколько виртуальных хостов используют сертификат «бесплатной пробной версии», предоставленный Apigee. Это заставляет виртуальный хост отвечать на запросы в таких доменах, как ORG-ENV.apigee.net .

Разница между Apigee Edge и Apigee X:

Апигей Край Апигей Икс
Автоматически настраивает виртуальный хост «по умолчанию» для поддержки доменного имени в форме ORG-ENV.apigee.net . Существует подстановочный сертификат, известный как «сертификат бесплатной пробной версии», который разрешает использование TLS в этих доменах. Устаревшие домены Apigee формы ORG-ENV.apigee.net недоступны в Apigee X. Вам необходимо настроить собственное доменное имя и соответствующим образом предоставить сертификаты.
Да

Решение: пробный сертификат на виртуальном хосте.

Вы должны настроить свой собственный домен и соответствующим образом предоставить сертификаты.

Любое клиентское приложение, которое зависит от устаревшего имени домена в форме ORG-ENV.apigee.net необходимо изменить для вызова нового домена.

Неразрешенный DNS

Краткое содержание Требуются изменения на стороне клиента? Разрешение

Целевые конечные точки имеют неразрешенные доменные имена.

Разница между Apigee Edge и Apigee X:

Апигей Край Апигей Икс
Если разрешение DNS не удается, Apigee добавляет .apigee.com к имени домена, и DNS успешно разрешается с кодом ответа 4xx . Если разрешение DNS не удается, Apigee не выполняет запрос и возвращает код ответа 5xx .
Нет

Решение: неразрешенный DNS.

Обновите целевую конечную точку, указав допустимое имя домена.