Salida de puerto flexible
Creado para:
- Intermedio
- Desarrollador
Obtenga información sobre cómo configurar y utilizar la salida de puerto flexible para admitir conexiones externas de AEM as a Cloud Service a servicios externos.
¿Qué es la salida de puerto flexible?
La salida de puerto flexible permite adjuntar reglas de reenvío de puerto personalizadas y específicas a AEM as a Cloud Service, lo que permite realizar conexiones desde AEM a servicios externos.
Un programa Cloud Manager solo puede tener un tipo de infraestructura de red single. Asegúrese de que la salida de puerto flexible sea el tipo más apropiado de infraestructura de red para su AEM as a Cloud Service antes de ejecutar los siguientes comandos.
Requisitos previos
Se requiere lo siguiente al configurar una salida de puerto flexible mediante las API de Cloud Manager:
-
Proyecto de Adobe Developer Console con la API de Cloud Manager habilitada y permisos de propietario de Cloud Manager Business
-
Acceso a credenciales de autenticación de la API de Cloud Manager
- ID de organización (también conocido como ID de organización de IMS)
- ID del cliente (también conocido como clave API)
- Token de acceso (también conocido como Token de portador)
-
El ID del programa Cloud Manager
-
Los ID de entorno de Cloud Manager
Para obtener más información revise cómo configurar y obtener las credenciales de la API de Cloud Manager para utilizarlas en una llamada de la API de Cloud Manager.
Este tutorial utiliza curl
para realizar las configuraciones de la API de Cloud Manager. Los comandos curl
proporcionados suponen una sintaxis Linux/macOS. Si usa el símbolo del sistema de Windows, reemplace el carácter de salto de línea \
por ^
.
Habilitar salida de puerto flexible por programa
Comience habilitando la salida de puerto flexible en AEM as a Cloud Service.
La salida de puerto flexible se puede activar mediante Cloud Manager. Los siguientes pasos describen cómo habilitar la salida de puerto flexible en AEM as a Cloud Service mediante Cloud Manager.
-
Inicie sesión en Adobe Experience Manager Cloud Manager como propietario de Cloud Manager Business.
-
Vaya al programa deseado.
-
En el menú de la izquierda, vaya a Servicios > Infraestructura de red.
-
Seleccione el botón Agregar infraestructura de red.
-
En el cuadro de diálogo Agregar infraestructura de red, seleccione la opción Salida de puerto flexible y seleccione la Región para crear la dirección IP de salida dedicada.
-
Seleccione Guardar para confirmar la adición de la salida de puerto flexible.
-
Espere a que se cree la infraestructura de red y se marque como Listo. Este proceso puede tardar hasta 1 hora.
Con la salida de puerto flexible creada, ahora puede configurar las reglas de reenvío de puerto mediante las API de Cloud Manager como se describe a continuación.
La salida de puerto flexible se puede habilitar mediante las API de Cloud Manager. Los siguientes pasos describen cómo habilitar la salida de puerto flexible en AEM as a Cloud Service mediante la API de Cloud Manager.
-
En primer lugar, determine la región en la que está configurada la red avanzada mediante la operación listRegions de la API de Cloud Manager. Se requiere
region name
para realizar llamadas subsiguientes a la API de Cloud Manager. Normalmente, se utiliza la región en la que reside el entorno de producción.Busque la región de su entorno de AEM as a Cloud Service en Cloud Manager en los detalles del entorno. El nombre de región mostrado en Cloud Manager se puede asignar al código de región utilizado en la API de Cloud Manager.
solicitud HTTP listRegions
$ 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'
-
Habilite la salida de puerto flexible para un programa de Cloud Manager mediante la operación createNetworkInfrastructure de la API de Cloud Manager. Utilice el código
region
apropiado obtenido de la operación de la API de Cloud ManagerlistRegions
.solicitud HTTP createNetworkInfrastructure
$ 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" }'
Espere 15 minutos para que el programa Cloud Manager aprovisione la infraestructura de red.
-
Compruebe que el entorno haya finalizado la configuración de salida de puerto flexible mediante la operación getNetworkInfrastructure de la API de Cloud Manager, utilizando la
id
devuelta desde la solicitud HTTPcreateNetworkInfrastructure
del paso anterior.petición HTTP getNetworkInfrastructure
$ 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'
Compruebe que la respuesta HTTP contiene un estado de listo. Si aún no está listo, vuelva a comprobar el estado cada pocos minutos.
Con la salida de puerto flexible creada, ahora puede configurar las reglas de reenvío de puerto mediante las API de Cloud Manager como se describe a continuación.
Configuración de proxies de salida de puerto flexibles por entorno
-
Habilite y configure la configuración de salida de puerto flexible en cada entorno de AEM as a Cloud Service mediante la operación enableEnvironmentAdvancedNetworkingConfiguration de la API de Cloud Manager.
petición HTTP enableEnvironmentAdvancedNetworkingConfiguration
$ 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 los parámetros JSON en un
flexible-port-egress.json
y proporcione para ondulación mediante... -d @./flexible-port-egress.json
.Descargue el ejemplo flexible-port-egress.json. Este archivo es solo un ejemplo. Configure el archivo según sea necesario en función de los campos opcionales/obligatorios documentados en enableEnvironmentAdvancedNetworkingConfiguration.
{ "portForwards": [ { "name": "mysql.example.com", "portDest": 3306, "portOrig": 30001 }, { "name": "smtp.sendgrid.com", "portDest": 465, "portOrig": 30002 } ] }
Para cada asignación
portForwards
, la red avanzada define la siguiente regla de reenvío:Host de proxyPuerto ProxyHost externoPuerto externoAEM_PROXY_HOST
portForwards.portOrig
→portForwards.name
portForwards.portDest
Si su implementación de AEM only requiere conexiones HTTP/HTTPS (puerto 80/443) al servicio externo, deje vacía la matriz
portForwards
, ya que estas reglas solo son necesarias para solicitudes que no sean HTTP/HTTPS. -
Para cada entorno, valide que las reglas de salida estén en vigor mediante la operación de la API de Cloud Manager getEnvironmentAdvancedNetworkingConfiguration.
petición HTTP getEnvironmentAdvancedNetworkingConfiguration
$ 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'
-
Las configuraciones de salida de puerto flexible se pueden actualizar mediante la operación de la API de Cloud Manager enableEnvironmentAdvancedNetworkingConfiguration. Recuerde que
enableEnvironmentAdvancedNetworkingConfiguration
es una operación dePUT
, por lo que todas las reglas deben proporcionarse con cada invocación de esta operación. -
Ahora puede utilizar la configuración flexible de salida de puerto en su código y configuración personalizados de AEM.
Conexión a servicios externos mediante salida de puerto flexible
Con el proxy de salida de puerto flexible habilitado, el código y la configuración de AEM pueden utilizarlos para realizar llamadas a servicios externos. Hay dos tipos de llamadas externas que AEM trata de manera diferente:
- Llamadas HTTP/HTTPS a servicios externos en puertos no estándar
- Incluye llamadas HTTP/HTTPS realizadas a servicios que se ejecutan en puertos que no son los puertos estándar 80 o 443.
- llamadas no HTTP/HTTPS a servicios externos
- Incluye cualquier llamada que no sea HTTP, como conexiones con servidores de correo, bases de datos SQL o servicios que se ejecutan en otros protocolos que no son HTTP/HTTPS.
Las solicitudes HTTP/HTTPS de AEM en puertos estándar (80/443) están permitidas de forma predeterminada y no necesitan configuraciones ni consideraciones adicionales.
HTTP/HTTPS en puertos no estándar
Al crear conexiones HTTP/HTTPS a puertos no estándar (no-80/443) desde AEM, las conexiones deben realizarse a través de hosts y puertos especiales, proporcionados mediante marcadores de posición.
AEM proporciona dos conjuntos de variables de sistema Java™ especiales que se asignan a los proxies HTTP/HTTPS de 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]
Al realizar llamadas HTTP/HTTPS a servicios externos en puertos no estándar, no se debe definir ningún portForwards
correspondiente mediante la operación de la API de Cloud Manager enableEnvironmentAdvancedNetworkingConfiguration
, ya que las "reglas" de reenvío de puertos se definen "en el código".
Ejemplos de código
HTTP/HTTPS en puertos no estándar
Ejemplo de código Java™ conexión HTTP/HTTPS desde AEM as a Cloud Service a un servicio externo en puertos HTTP/HTTPS no estándar.
Conexiones no HTTP/HTTPS a servicios externos
Al crear conexiones no HTTP/HTTPS (por ejemplo, SQL, SMTP, etc.) de AEM, la conexión debe realizarse mediante un nombre de host especial proporcionado por AEM.
AEM_PROXY_HOST
System.getenv().getOrDefault("AEM_PROXY_HOST", "proxy.tunnel")
$[env:AEM_PROXY_HOST;default=proxy.tunnel]
A continuación, se llama a las conexiones a servicios externos a través de AEM_PROXY_HOST
y del puerto asignado (portForwards.portOrig
), que AEM enruta al nombre de host externo asignado (portForwards.name
) y al puerto (portForwards.portDest
).
AEM_PROXY_HOST
portForwards.portOrig
portForwards.name
portForwards.portDest
Ejemplos de código
Conexión SQL con el conjunto de datos JDBC
Ejemplo de código Java™ conectarse a bases de datos SQL externas configurando el grupo de fuentes de datos JDBC de AEM.
Ejemplo de código Java™ conectarse a bases de datos SQL externas mediante las API SQL de Java™.
Servicio de correo electrónico
Ejemplo de configuración de OSGi que utiliza AEM para conectarse a servicios de correo electrónico externos.