Antipadrões de migração do Apigee Edge para o Apigee X

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

Como cliente atual da Apigee Edge, pode-se optar por migrar sua instalação para a Apigee X e aproveitar os novos recursos ou a disponibilidade regional diferente.

Nesta página, descrevemos os antipadrões na configuração que você precisará resolver antes de migrar para a Apigee X, bem como outras alterações de comportamento que você precisa conhecer antes da migração.

A lista mais ampla de antipadrões do Apigee Edge descreve as práticas de uso que precisam ser evitadas de qualquer forma. Nesta página, descrevemos as práticas de uso não recomendadas que bloqueiam uma migração. Resolva esses problemas agora para evitar problemas ao migrar para a Apigee X.

Apps sem produtos de API

Resumo Requer mudanças do lado do cliente? Resolução

Há apps sem produtos de API.

Diferença entre o Apigee Edge e a Apigee X:

Apigee Edge Apigee X
É possível configurar um app e uma credencial que não estejam associados a nenhum produto da API. Este app tem acesso a todos os produtos da API. Cada app precisa ser configurado para acessar pelo menos um produto de API. Não há como fornecer acesso a todos os produtos da API implicitamente. É possível configurar um app para ter acesso a todos os produtos da API, mas é necessário fazer isso explicitamente.
Não.

Resolução: apps sem produtos de API

Associe cada credencial do app a pelo menos um produto de API. Para mais informações sobre como fazer isso, consulte Registrar apps e gerenciar chaves de API.

Um caminho fácil é atribuir acesso a cada aplicativo a todos os produtos de API. Isso equivale ao que é possível fazer no Apigee Edge. Se você quiser adotar uma abordagem de "privilégio mínimo", será necessário determinar a lista mínima de produtos da API a que cada credencial de app precisa ter acesso. É possível analisar isso com os relatórios do Apigee Edge Analytics, com base no ID do cliente.

Cache sem prazo de validade

Resumo Requer mudanças do lado do cliente? Resolução

Os caches não têm prazo de validade.

Diferença entre o Apigee Edge e a Apigee X:

Apigee Edge Apigee X
Oferece suporte à criação, atualização e exclusão de descritores de recursos de cache. Não oferece suporte à criação, atualização ou exclusão de descritores de recursos de cache.
Não

Resolução: cache sem tempo de expiração

Define um tempo de expiração para todos os caches.

Expressões de filtro JSONPath em caminhos não definidos

Resumo Requer mudanças do lado do cliente? Resolução

Para caminhos não definitivos, consultar o resultado de expressões de filtro não faz parte da especificação JSONPath. Consulte https://goessner.net/articles/JsonPath/ (link em inglês).

Diferença entre o Apigee Edge e a Apigee X:

Ao navegar nessa estrutura de exemplo,

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

Com a expressão $..books[?(@.name == 'A')][0],

Apigee Edge Apigee X
Saídas ‘{"name": "A"}’ Saídas []

Com a expressão $..books[?(@.name == 'A')][0].name,

Apigee Edge Apigee X
Saídas "A" Saídas []
Sim

Resolução: expressões de filtro JSONPath em caminhos não definidos

Encontre e substitua as consultas afetadas.

Expressões JSONPath para índices que não estão presentes

Resumo Requer mudanças do lado do cliente? Resolução

As expressões JSONPath com um índice ausente têm comportamentos diferentes na Apigee X em comparação com o Apigee Edge. A Apigee X retorna um erro PathNotFoundException quando o caminho não é encontrado.

Diferença entre o Apigee Edge e a Apigee X:

Ao navegar nessa estrutura de exemplo,

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

Com a expressão $.books[3],

Apigee Edge Apigee X
Saídas null Gera PathNotFoundException erro
Sim

Resolução: expressões JSONPath para índices que não estão presentes

Encontre e substitua as consultas afetadas.

Expressões JSONPath com um índice de matriz que não retornam um objeto de matriz

Resumo Requer mudanças do lado do cliente? Resolução

As expressões JSONPath com um índice de matriz ou frações retornam um objeto de matriz na Apigee X.

Diferença entre o Apigee Edge e a Apigee X:

Ao navegar nessa estrutura de exemplo,

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

Com a expressão $.books,

Apigee Edge Apigee X
Saídas {“name”:”A”, “name”: “B”} Saídas [{“name”:”A”, “name”: “B”}]

Com a expressão $.books[-1],

Apigee Edge Apigee X
Saídas {“name”: “B”} Saídas [{“name”: “B”}]

Com a expressão $.books[-2:],

Apigee Edge Apigee X
Saídas {“name”:”A”, “name”: “B”} Saídas [{“name”:”A”, “name”: “B”}]
Sim

Resolução: expressões JSONPath com um índice de matriz não retornando um objeto de matriz

Encontrar e substituir expressões que podem retornar resultados diferentes após o upgrade.

Restrições de nome do keystore

Resumo Requer mudanças do lado do cliente? Resolução

Os nomes de keystore do Apigee X só podem conter letras, números e hifens. Os nomes de keystore de borda não impõem essas restrições.

Não

Resolução: restrições de nome do keystore

Verifique e atualize os nomes dos keystores para remover caracteres incompatíveis, se necessário.

Vários caminhos base implantados para um proxy de API

Resumo Requer mudanças do lado do cliente? Resolução

Várias revisões de um proxy de API são implantadas em um ambiente, e cada revisão tem um caminho base diferente.

Diferença entre o Apigee Edge e a Apigee X:

Apigee Edge Apigee X
Compatível com a implantação de várias revisões de um proxy de API, em que cada revisão pode ter um caminho base diferente. Não é compatível com a implantação de várias revisões de um proxy de API, mesmo que ele tenha caminhos base diferentes.
Não

Resolução: vários caminhos base implantados para um proxy de API

Atualize todos os pacotes para que somente uma revisão seja implantada em um ambiente, independentemente do caminho de base.

Mensagens HTTP não compatíveis

Resumo Requer mudanças do lado do cliente? Resolução

Os clientes ou o proxy de API enviam mensagens (solicitações ou respostas) que não estão em conformidade com o padrão HTTP. Por exemplo, nomes de cabeçalho inválidos, duplicações em alguns cabeçalhos restritos e assim por diante.

Não será possível migrar para a Apigee X se a execução da API tiver um ou mais dos seguintes erros:

  • INVALID_CHARACTERS_IN_HEADER
  • MISSING_COLON
  • MULTIPLE_CONTENT_LENGTH
  • CONTENT_LENGTH_NOT_INTEGER
  • INVALID_UPGRADE
  • URL_HEADER_SIZE_TOO_LONG
  • BODY_NOT_ALLOWED
  • UNSUPPORTED_HTTP_VERSION
  • ZERO_CONTENT_LENGTH_FOR_POST_OR_PUT
  • UNSUPPORTED_RESPONSE_PREFIX
Sim, possivelmente.

Resolução: mensagens HTTP não compatíveis

Corrija todos os erros nos protocolos HTTP antes de migrar para a Apigee X. Se um erro for originado de um aplicativo cliente, você precisará pedir ao desenvolvedor do app cliente que corrija o problema.

O prazo de validade do token OAuth 2.0 é inválido

Resumo Requer mudanças do lado do cliente? Resolução

Os limites de expiração do token OAuth 2.0 estão fora do intervalo prescrito.

Diferença entre o Apigee Edge e a Apigee X:

Apigee Edge Apigee X
Nenhuma restrição no prazo de validade do token OAuth 2.0 está em vigor atualmente, mas isso está planejado. Consulte as diretrizes na seção OAuth da página "Limites". É preciso definir um token de acesso e o prazo de validade do token para o OAuth 2.0. Os intervalos aceitos são:
  • 180 segundos <= Tempo de expiração do token de acesso OAuth 2.0 <= 30 dias
  • 1 dia <= Tempo de expiração do token de atualização OAuth 2.0 <= 2 anos
Não

Resolução: o tempo de expiração do token OAuth 2.0 é inválido

Use a política OAuthV2 e especifique o prazo de validade em <ExpiresIn> e <RefreshTokenExpiresIn>.

Limites de produtos excedidos

Resumo Requer mudanças do lado do cliente? Resolução

A configuração do Apigee Edge não está em conformidade com os limites de produtos definidos. Alguns limites de produtos que são documentados, mas não aplicados no Apigee Edge são aplicados na Apigee X.

Não

Resolução: limites de produtos excedidos

Corrija qualquer uso que exceda os limites de produtos antes de migrar para a Apigee X.

Políticas ServiceFrases com especificadores de conexão de destino de caminho e endpoint

Resumo Requer mudanças do lado do cliente? Resolução

Na política Service callout, o elemento <LocalTargetConnection> precisa incluir os elementos <APIProxy> e <ProxyEndpoint> ou o elemento <Path>, mas não ambos. Para mais informações, consulte o elemento <LocalTargetConnection>.

O Apigee Edge documenta esse requisito, mas não o aplica. A Apigee X interromperá o processamento se encontrar um <LocalTargetConnection> com as duas configurações.

Não

Resolução: políticas ServiceFrases com especificadores de conexão de destino de caminho e endpoint

Verifique as configurações da política ServiceFrase de destaque e elimine quaisquer configurações <LocalTargetConnection> que não estejam em conformidade.

Restrições de nome do servidor de destino

Resumo Requer mudanças do lado do cliente? Resolução

Os nomes dos servidores de destino da Apigee X só podem conter letras, números, hifens e pontos. Os nomes dos servidores de destino de borda não impõem essas restrições.

Não

Resolução: restrições de nome do servidor de destino

Verifique os nomes dos servidores de destino e atualize-os para remover caracteres incompatíveis, se necessário.

Certificado de teste em um host virtual

Resumo Requer mudanças do lado do cliente? Resolução

Um ou mais hosts virtuais usam o certificado de "avaliação sem custo financeiro" fornecido pela Apigee. Isso faz com que o host virtual responda a solicitações em domínios como ORG-ENV.apigee.net.

Diferença entre o Apigee Edge e a Apigee X:

Apigee Edge Apigee X
Configura automaticamente o vhost "padrão" para aceitar um nome de domínio no formato ORG-ENV.apigee.net. Existe um certificado curinga, conhecido como "certificado de teste sem custo financeiro", que permite o TLS nesses domínios. Os domínios legados da Apigee no formato ORG-ENV.apigee.net não estão disponíveis na Apigee X. Você precisa configurar seu próprio nome de domínio e provisionar certificados adequadamente.
Sim

Resolução: certificado de avaliação em um host virtual

Você precisa configurar seu próprio domínio e provisionar certificados adequadamente.

Qualquer aplicativo cliente que dependa do nome de domínio legado do formulário ORG-ENV.apigee.net precisa ser modificado para chamar o novo domínio.

DNS não resolvido

Resumo Requer mudanças do lado do cliente? Resolução

Os endpoints de destino têm nomes de domínio não resolvidos.

Diferença entre o Apigee Edge e a Apigee X:

Apigee Edge Apigee X
Se a resolução de DNS falhar, a Apigee anexará .apigee.com ao nome de domínio e o DNS será resolvido com um código de resposta 4xx. Se a resolução de DNS falhar, a Apigee não executará a solicitação e retornará um código de resposta 5xx.
Não

Resolução: DNS não resolvido

Atualize o endpoint de destino com um nome de domínio válido.