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 para serviços externos.
O que é saída de porta flexível?
Saída de porta flexível permite que regras de encaminhamento de porta personalizadas e específicas sejam anexadas ao AEM as a Cloud Service, permitindo que conexões do AEM a serviços externos sejam feitas.
Um programa do Cloud Manager só pode ter um solteiro tipo de infraestrutura de rede. Garantir que a saída de porta flexível seja a mais tipo adequado de infraestrutura de rede para o AEM as a Cloud Service antes de executar os seguintes comandos.
Pré-requisitos
Os itens a seguir são necessários ao definir ou definir a saída de porta flexível usando as APIs do Cloud Manager:
-
Projeto do Adobe Developer Console com a API do Cloud Manager ativada e Permissões do proprietário da empresa no Cloud Manager
-
Acesso a Credenciais de autenticação da API do Cloud Manager
- ID da organização (também conhecida como ID da organização IMS)
- ID do cliente (também conhecida como Chave de API)
- Token de acesso (também conhecido como Token do portador)
-
A ID do programa do Cloud Manager
-
As IDs de ambiente do Cloud Manager
Para obter mais detalhes, assista à seguinte apresentação de como configurar e obter credenciais da API do Cloud Manager e como 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 dados fornecidos curl
assumem uma sintaxe Linux/macOS. Se estiver usando o prompt de comando do Windows, substitua o \
caractere de quebra de linha com ^
.
Habilitar saída de porta flexível por programa
Comece ativando a saída de porta flexível no AEM as a Cloud Service.
A 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.
-
Faça logon no Adobe Experience Manager Cloud Manager como Proprietário da empresa do Cloud Manager.
-
Navegue até o Programa desejado.
-
No menu esquerdo, navegue até Serviços > Infraestrutura de rede.
-
Selecione o Adicionar infraestrutura de rede botão.
-
No Adicionar infraestrutura de rede , selecione a Saída de porta flexível e selecione a opção Região para criar o endereço IP de saída dedicado.
-
Selecionar Salvar para confirmar a adição da saída de porta flexível.
-
Aguardar a infraestrutura de rede ser criada e marcada como Pronto. Esse processo pode levar até 1 hora.
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.
A saída de porta flexível 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.
-
Primeiro, determine a região em que a Rede avançada é configurada no usando a API do Cloud Manager listRegions operação. A variável
region name
O é necessário para fazer chamadas de API subsequentes do Cloud Manager. Normalmente, a região em que o ambiente de Produção reside é usada.Encontre a região do seu ambiente as a Cloud Service AEM em Cloud Manager no detalhes do ambiente. O nome da região exibido no Cloud Manager pode ser mapeado para o código de região usada na API do Cloud Manager.
solicitação HTTP 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'
-
Ativar saída de porta flexível para um programa do Cloud Manager usando a API do Cloud Manager createNetworkInfrastructure operação. Use o
region
código obtido da API do Cloud ManagerlistRegions
operação.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 do Cloud Manager provisione a infraestrutura de rede.
-
Verifique se o ambiente terminou saída de porta flexível configuração usando a API do Cloud Manager getNetworkInfrastructure operação, utilizando o
id
retornado docreateNetworkInfrastructure
Solicitação HTTP 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 pronto. 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
-
Habilite e configure o saída de porta flexível configuração em cada ambiente do AEM as a Cloud Service usando a API do Cloud Manager enableEnvironmentAdvancedNetworkingConfiguration operação.
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 uma
flexible-port-egress.json
e fornecido para curl via... -d @./flexible-port-egress.json
.Baixe o exemplo de Flex-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
portForwards
de 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 a sua implantação do AEM somente exige conexões HTTP/HTTPS (porta 80/443) para o serviço externo, deixe o
portForwards
matriz vazia, pois essas regras são necessárias somente para solicitações não HTTP/HTTPS. -
Para cada ambiente, valide se as regras de saída estão em vigor usando a API do Cloud Manager getEnvironmentAdvancedNetworkingConfiguration operação.
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'
-
Configurações flexíveis de saída de porta podem ser atualizadas usando a API do Cloud Manager enableEnvironmentAdvancedNetworkingConfiguration operação. Lembrar
enableEnvironmentAdvancedNetworkingConfiguration
é umPUT
para que todas as regras sejam fornecidas com cada chamada desta operação. -
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:
- 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.
- 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.
AEM_PROXY_HOST
System.getenv().getOrDefault("AEM_PROXY_HOST", "proxy.tunnel")
$[env:AEM_PROXY_HOST;default=proxy.tunnel]
AEM_HTTP_PROXY_PORT
3128
)System.getenv().getOrDefault("AEM_HTTP_PROXY_PORT", 3128)
$[env:AEM_HTTP_PROXY_PORT;default=3128]
AEM_HTTPS_PROXY_PORT
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, nenhuma portForwards
deve ser definido usando a API do Cloud Manager enableEnvironmentAdvancedNetworkingConfiguration
operação, já que as "regras" de encaminhamento de porta são definidas "no código".
Exemplos de código
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.
AEM_PROXY_HOST
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 a porta mapeada (portForwards.portOrig
), que o AEM roteia para o nome de host externo mapeado (portForwards.name
) e porta (portForwards.portDest
).
AEM_PROXY_HOST
portForwards.portOrig
portForwards.name
portForwards.portDest