Saída de porta flexível

Saiba como configurar e usar saída de porta flexível para suportar conexões externas do AEM as a Cloud Service com serviços externos.

O que é saída de porta flexível?

Saída de porta flexível permite que regras específicas e personalizadas de encaminhamento de porta sejam conectadas ao AEM as a Cloud Service, permitindo que conexões do AEM a serviços externos sejam feitas.

Um Programa Cloud Manager só pode ter um tipo de infraestrutura de rede único. Certifique-se de que a saída de porta flexível seja o tipo mais apropriado de infraestrutura de rede para o AEM as a Cloud Service antes de executar os comandos a seguir.

Pré-requisitos

Os itens a seguir são necessários ao definir ou configurar a saída de porta flexível usando APIs do Cloud Manager:

Para obter mais detalhes revise como instalar, configurar e obter credenciais da API do Cloud Manager, para usá-las para fazer uma chamada de API do Cloud Manager.

Este tutorial usa curl para fazer as configurações da API do Cloud Manager. Os comandos curl fornecidos pressupõem uma sintaxe Linux/macOS. Se estiver usando o prompt de comando do Windows, substitua o caractere de quebra de linha \ por ^.

Habilitar saída de porta flexível por programa

Comece ativando a saída de porta flexível no AEM as a Cloud Service.

Cloud Manager

Saída de porta flexível pode ser ativada usando o Cloud Manager. As etapas a seguir descrevem como ativar a saída de porta flexível no AEM as a Cloud Service usando o Cloud Manager.

  1. Faça logon no Adobe Experience Manager Cloud Manager como Proprietário da empresa do Cloud Manager.

  2. Navegue até o Programa desejado.

  3. No menu esquerdo, navegue até Serviços > Infraestrutura de Rede.

  4. Selecione o botão Adicionar infraestrutura de rede.

    Adicionar infraestrutura de rede

  5. Na caixa de diálogo Adicionar infraestrutura de rede, selecione a opção Saída flexível da porta e selecione a Região para criar o endereço IP de saída dedicado.

    Adicionar saída de porta flexível

  6. Selecione Salvar para confirmar a adição da saída de porta flexível.

    Confirmar criação de saída de porta flexível

  7. Aguarde a infraestrutura de rede ser criada e marcada como Pronta. Esse processo pode levar até 1 hora.

    Status de criação de saída de porta flexível

Com a saída de porta flexível criada, agora é possível configurar as regras de encaminhamento de porta usando as APIs do Cloud Manager, conforme descrito abaixo.

APIs do Cloud Manager

A saída flexível da porta pode ser ativada usando as APIs do Cloud Manager. As etapas a seguir descrevem como ativar a saída de porta flexível no AEM as a Cloud Service usando a API do Cloud Manager.

  1. Primeiro, determine a região em que a Rede avançada está configurada usando a operação listRegions da API do Cloud Manager. O region name é necessário para fazer chamadas de API do Cloud Manager subsequentes. Normalmente, a região em que o ambiente de Produção reside é usada.

    Encontre a região do seu ambiente do AEM as a Cloud Service em Cloud Manager nos detalhes do ambiente. O nome da região exibido no Cloud Manager pode ser mapeado para o código de região usado na API do Cloud Manager.

    solicitação HTTP de listRegions

    code language-shell
    $ curl -X GET https://cloudmanager.adobe.io/api/program/{programId}/regions \
        -H 'x-gw-ims-org-id: <ORGANIZATION_ID>' \
        -H 'x-api-key: <CLIENT_ID>' \
        -H 'Authorization: Bearer <ACCESS_TOKEN>' \
        -H 'Content-Type: application/json'
    
  2. Habilite a saída de porta flexível para um Programa Cloud Manager usando a operação createNetworkInfrastructure da API do Cloud Manager. Use o código region apropriado obtido da operação listRegions da API do Cloud Manager.

    solicitação HTTP createNetworkInfrastructure

    code language-shell
    $ curl -X POST https://cloudmanager.adobe.io/api/program/{programId}/networkInfrastructures \
        -H 'x-gw-ims-org-id: <ORGANIZATION_ID>' \
        -H 'x-api-key: <CLIENT_ID>' \
        -H 'Authorization: Bearer <ACCESS_TOKEN>' \
        -H 'Content-Type: application/json' \
        -d '{ "kind": "flexiblePortEgress", "region": "va7" }'
    

    Aguarde 15 minutos para que o programa Cloud Manager provisione a infraestrutura de rede.

  3. Verifique se o ambiente concluiu a configuração de saída de porta flexível usando a operação getNetworkInfrastructure da API do Cloud Manager, usando a id retornada da solicitação HTTP createNetworkInfrastructure na etapa anterior.

    solicitação HTTP getNetworkInfrastructure

    code language-shell
    $ curl -X GET https://cloudmanager.adobe.io/api/program/{programId}/networkInfrastructure/{networkInfrastructureId} \
        -H 'x-gw-ims-org-id: <ORGANIZATION_ID>' \
        -H 'x-api-key: <CLIENT_ID>' \
        -H 'Authorization: Bearer <ACCESS_TOKEN>' \
        -H 'Content-Type: application/json'
    

    Verifique se a resposta HTTP contém um status de ready. Se ainda não estiver pronto, verifique novamente o status a cada poucos minutos.

Com a saída de porta flexível criada, agora é possível configurar as regras de encaminhamento de porta usando as APIs do Cloud Manager, conforme descrito abaixo.

Configuração de proxies de saída de porta flexíveis por ambiente

  1. Habilite e configure a configuração de saída de porta flexível em cada ambiente do AEM as a Cloud Service usando a operação enableEnvironmentAdvancedNetworkingConfiguration da API do Cloud Manager.

    Solicitação HTTP enableEnvironmentAdvancedNetworkingConfiguration

    code language-shell
    $ curl -X PUT https://cloudmanager.adobe.io/api/program/{programId}/environment/{environmentId}/advancedNetworking \
        -H 'x-gw-ims-org-id: <ORGANIZATION_ID>' \
        -H 'x-api-key: <CLIENT_ID>' \
        -H 'Authorization: Bearer <ACCESS_TOKEN>' \
        -H 'Content-Type: application/json' \
        -d @./flexible-port-egress.json
    

    Defina os parâmetros JSON em um flexible-port-egress.json e fornecido para curl via ... -d @./flexible-port-egress.json.

    Baixe o exemplo lex-port-egress.json. Este arquivo é apenas um exemplo. Configure seu arquivo conforme necessário com base nos campos opcionais/obrigatórios documentados em enableEnvironmentAdvancedNetworkingConfiguration.

    code language-json
    {
        "portForwards": [
            {
                "name": "mysql.example.com",
                "portDest": 3306,
                "portOrig": 30001
            },
            {
                "name": "smtp.sendgrid.com",
                "portDest": 465,
                "portOrig": 30002
            }
        ]
    }
    

    Para cada mapeamento portForwards, a rede avançada define a seguinte regra de encaminhamento:

    table 0-row-5 1-row-5
    Host do proxy Porta do proxy Host externo Porta externa
    AEM_PROXY_HOST portForwards.portOrig portForwards.name portForwards.portDest

    Se sua implantação do AEM only exigir conexões HTTP/HTTPS (porta 80/443) com um serviço externo, deixe a matriz portForwards vazia, pois essas regras são necessárias somente para solicitações não HTTP/HTTPS.

  2. Para cada ambiente, valide se as regras de saída estão em vigor usando a operação getEnvironmentAdvancedNetworkingConfiguration da API do Cloud Manager.

    Solicitação HTTP getEnvironmentAdvancedNetworkingConfiguration

    code language-shell
    $ curl -X GET https://cloudmanager.adobe.io/api/program/{programId}/environment/{environmentId}/advancedNetworking \
        -H 'x-gw-ims-org-id: <ORGANIZATION_ID>' \
        -H 'Authorization: Bearer <ACCESS_TOKEN>' \
        -H 'x-api-key: <CLIENT_ID>' \
        -H 'Content-Type: application/json'
    
  3. Configurações flexíveis de saída de porta podem ser atualizadas usando a operação enableEnvironmentAdvancedNetworkingConfiguration da API do Cloud Manager. Lembre-se de que enableEnvironmentAdvancedNetworkingConfiguration é uma operação PUT, portanto todas as regras devem ser fornecidas com cada invocação desta operação.

  4. Agora, você pode usar a configuração flexível de saída de porta em seu código e configuração personalizados do AEM.

Conexão com serviços externos por meio de saída de porta flexível

Com o proxy de saída de porta flexível ativado, o código e a configuração do AEM podem usá-los para fazer chamadas para serviços externos. Há duas opções de chamadas externas que o AEM trata de forma diferente:

  1. Chamadas HTTP/HTTPS para serviços externos em portas fora do padrão
    • Inclui chamadas HTTP/HTTPS feitas para serviços executados em portas diferentes das portas padrão 80 ou 443.
  2. chamadas não HTTP/HTTPS para serviços externos
    • Inclui chamadas não HTTP, como conexões com servidores de email, bancos de dados SQL ou serviços que são executados em outros protocolos não HTTP/HTTPS.

As solicitações HTTP/HTTPS do AEM em portas padrão (80/443) são permitidas por padrão e não precisam de configuração ou considerações extras.

HTTP/HTTPS em portas fora do padrão

Ao criar conexões HTTP/HTTPS com portas fora do padrão (não-80/443) do AEM, as conexões devem ser feitas por meio de hosts e portas especiais, fornecidas por meio de espaços reservados.

O AEM fornece dois conjuntos de variáveis especiais do sistema Java™ que são mapeadas para proxies HTTP/HTTPS do AEM.

Nome da variável
Utilização
Código Java™
Configuração OSGi
AEM_PROXY_HOST
Host proxy para conexões HTTP/HTTPS
System.getenv().getOrDefault("AEM_PROXY_HOST", "proxy.tunnel")
$[env:AEM_PROXY_HOST;default=proxy.tunnel]
AEM_HTTP_PROXY_PORT
Porta proxy para conexões HTTPS (definir fallback para 3128)
System.getenv().getOrDefault("AEM_HTTP_PROXY_PORT", 3128)
$[env:AEM_HTTP_PROXY_PORT;default=3128]
AEM_HTTPS_PROXY_PORT
Porta proxy para conexões HTTPS (definir fallback para 3128)
System.getenv().getOrDefault("AEM_HTTPS_PROXY_PORT", 3128)
$[env:AEM_HTTPS_PROXY_PORT;default=3128]

Ao fazer chamadas HTTP/HTTPS para serviços externos em portas fora do padrão, nenhum portForwards correspondente deve ser definido usando a operação enableEnvironmentAdvancedNetworkingConfiguration da API do Cloud Manager, já que as "regras" de encaminhamento de porta são definidas "no código".

TIP
Consulte a documentação de saída de porta flexível do AEM as a Cloud Service para o conjunto completo de regras de roteamento.

Exemplos de código

HTTP/HTTPS em portas fora do padrão

HTTP/HTTPS em portas fora do padrão

Exemplo de código Java™ fazendo conexão HTTP/HTTPS do AEM as a Cloud Service com um serviço externo em portas HTTP/HTTPS não padrão.

Conexões não HTTP/HTTPS com serviços externos

Ao criar conexões não HTTP/HTTPS (por exemplo, SQL, SMTP e assim por diante) do AEM, a conexão deve ser feita por meio de um nome de host especial fornecido pelo AEM.

Nome da variável
Utilização
Código Java™
Configuração OSGi
AEM_PROXY_HOST
Host proxy para conexões não HTTP/HTTPS
System.getenv().getOrDefault("AEM_PROXY_HOST", "proxy.tunnel")
$[env:AEM_PROXY_HOST;default=proxy.tunnel]

As conexões com serviços externos são então chamadas por meio do AEM_PROXY_HOST e da porta mapeada (portForwards.portOrig), que o AEM encaminha para o nome de host externo mapeado (portForwards.name) e a porta (portForwards.portDest).

Host do proxy
Porta do proxy
Host externo
Porta externa
AEM_PROXY_HOST
portForwards.portOrig
portForwards.name
portForwards.portDest

Exemplos de código

Conexão SQL usando JDBC DataSourcePool

Conexão SQL usando JDBC DataSourcePool

Exemplo de código Java™ conectando-se a bancos de dados SQL externos configurando o pool de fontes de dados JDBC do AEM.

Conexão SQL usando APIs Java

Conexão SQL usando APIs Java™

Exemplo de código Java™ conectando-se a bancos de dados SQL externos usando APIs SQL do Java™.

VPN (Virtual Private Network)

Serviço de email

Exemplo de configuração OSGi usando AEM para se conectar a serviços de email externos.

recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69