Sortie de port flexible
Découvrez comment configurer et utiliser les sorties de port flexibles pour prendre en charge les connexions externes d’AEM as a Cloud Service à des services externes.
En quoi consistent les sorties de port flexibles ?
Une sortie de port flexible permet l’association de règles de transfert de port personnalisées et spécifiques à AEM as a Cloud Service, ce qui rend possible l’établissement de connexions entre AEM et des services externes.
Un programme Cloud Manager ne peut avoir qu’un type d’infrastructure réseau unique. Assurez-vous que la sortie de port flexible est le type le plus approprié d’infrastructure de réseau pour votre instance AEM as a Cloud Service avant d’exécuter les commandes suivantes.
Conditions préalables
Les éléments suivants sont requis lors de la définition ou de la configuration d’une sortie de port flexible à l’aide des API Cloud Manager :
-
Projet Adobe Developer Console avec l’API Cloud Manager activée et les autorisations de la personne propriétaire de l’entreprise Cloud Manager.
-
Accès aux Informations d’authentification de l’API Cloud Manager.
- ID d’organisation (ou ID d’organisation IMS)
- ID client (ou clé API)
- Jeton d’accès (ou jeton porteur)
-
ID de programme Cloud Manager
-
ID d’environnement de Cloud Manager
Pour plus d’informations, regardez la présentation suivante pour découvrir comment installer, configurer et obtenir les informations d’identification de l’API Cloud Manager, et comment les utiliser pour effectuer un appel d’API Cloud Manager.
Ce tutoriel utilise curl
pour créer les configurations de l’API Cloud Manager. Les commandes curl
fournies reposent sur la syntaxe Linux/macOS. Si vous utilisez l’invite de commande Windows, remplacez le caractère saut de ligne \
par ^
.
Activer la sortie de port flexible par programme
Commencez par activer la sortie de port flexible sur AEM as a Cloud Service.
Vous pouvez activer la sortie de port flexible à l’aide de Cloud Manager. Les étapes suivantes décrivent comment activer la sortie de port flexible sur AEM as a Cloud Service à l’aide de Cloud Manager.
-
Connectez-vous à Adobe Experience Manager Cloud Manager en tant que personne propriétaire d’entreprise Cloud Manager.
-
Accédez au programme souhaité.
-
Dans le menu de gauche, accédez à Services > Infrastructure de réseau.
-
Sélectionnez le bouton Ajouter une infrastructure de réseau.
-
Dans la boîte de dialogue Ajouter une infrastructure de réseau, sélectionnez Sortie de port flexible et sélectionnez Région pour créer l’adresse IP de sortie dédiée.
-
Sélectionnez Enregistrer pour confirmer l’ajout de la sortie de port flexible.
-
Attendez que l’infrastructure de réseau soit créée et marquée comme Prête. Ce processus peut prendre jusqu’à 1 heure.
Avec la sortie de port flexible créée, vous pouvez maintenant configurer les règles de transfert de port à l’aide des API Cloud Manager comme décrit ci-dessous.
Il est possible d’activer la sortie de port flexible à l’aide des API Cloud Manager. Les étapes suivantes décrivent comment activer la sortie de port flexible sur AEM as a Cloud Service à l’aide de l’API Cloud Manager.
-
Tout d’abord, déterminez la région dans laquelle le réseau avancé est configuré à l’aide de l’opération listRegions de l’API Cloud Manager. Le
region name
est nécessaire pour effectuer les appels d’API Cloud Manager ultérieurs. En règle générale, la région dans laquelle l’environnement de production réside est utilisée.Recherchez la région de votre environnement AEM as a Cloud Service AEM dans Cloud Manager sous les détails de l’environnement. Le nom de région affiché dans Cloud Manager peut être mappé au code de région utilisé dans l’API Cloud Manager.
Requête 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'
-
Activez la sortie de port flexible pour un programme Cloud Manager à l’aide de l’opération createNetworkInfrastructure de l’API Cloud Manager. Utilisez le code
region
approprié obtenu suite à l’opérationlistRegions
de l’API Cloud Manager.Requête 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" }'
Patientez 15 minutes pendant que le programme Cloud Manager approvisionne l’infrastructure réseau.
-
Vérifiez que l’environnement a terminé la configuration de la sortie de port flexible à l’aide de l’opération getNetworkInfrastructure de l’API Cloud Manager, en utilisant l’
id
renvoyé par la requête HTTPcreateNetworkInfrastructure
de l’étape précédente.Requête 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'
Vérifiez que la réponse HTTP contient un statut prêt. Si elle n’est pas encore prête, revérifiez le statut quelques minutes plus tard.
Avec la sortie de port flexible créée, vous pouvez maintenant configurer les règles de transfert de port à l’aide des API Cloud Manager comme décrit ci-dessous.
Configurer les proxys de sortie de port flexible par environnement
-
Activez et configurez la configuration de sortie de port flexible sur chaque environnement AEM as a Cloud Service à l’aide de l’opération enableEnvironmentAdvancedNetworkingConfiguration de l’API Cloud Manager.
Requête 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
Définissez les paramètres JSON d’un objet
flexible-port-egress.json
fourni à cURL via l’objet... -d @./flexible-port-egress.json
.Téléchargez l’exemple d’objet flexible-port-egress.json. Ce fichier n’est qu’un exemple. Configurez votre fichier selon les besoins en fonction des champs facultatifs/obligatoires documentés dans enableEnvironmentAdvancedNetworkingConfiguration.
code language-json { "portForwards": [ { "name": "mysql.example.com", "portDest": 3306, "portOrig": 30001 }, { "name": "smtp.sendgrid.com", "portDest": 465, "portOrig": 30002 } ] }
Pour chaque mappage
portForwards
, la mise en réseau avancée définit la règle de transfert suivante :table 0-row-5 1-row-5 Hôte du proxy Port du proxy Hôte externe Port externe AEM_PROXY_HOST
portForwards.portOrig
→ portForwards.name
portForwards.portDest
Si votre déploiement AEM nécessite uniquement des connexions HTTP/HTTPS (port 80/443) vers un service externe, laissez le tableau
portForwards
vide, car ces règles ne s’appliquent qu’aux requêtes autres que HTTP/HTTPS. -
Pour chaque environnement, vérifiez que les règles de sortie sont en vigueur à l’aide de l’opération getEnvironmentAdvancedNetworkingConfiguration de l’API Cloud Manager.
Requête 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'
-
Les configurations de sortie de port flexible peuvent être mises à jour à l’aide de l’opération enableEnvironmentAdvancedNetworkingConfiguration de l’API Cloud Manager. Rappelez-vous que
enableEnvironmentAdvancedNetworkingConfiguration
est une opérationPUT
, donc toutes les règles doivent donc être fournies à chaque appel de cette opération. -
Vous pouvez désormais utiliser la configuration de sortie de port flexible dans votre code AEM personnalisé et dans votre configuration.
Se connecter à des services externes via une sortie de port flexible
Lorsque le proxy de sortie de port flexible est activé, le code AEM et la configuration peuvent les utiliser pour effectuer des appels vers des services externes. Il existe deux types d’appels externes qu’AEM traite différemment :
- Appels HTTP/HTTPS aux services externes sur les ports non standard
- Cela inclut les appels HTTP/HTTPS effectués aux services s’exécutant sur des ports autres que les ports 80 ou 443 standard.
- Appels non HTTP/HTTPS aux services externes
- Cela inclut tous les appels non HTTP, tels que les connexions aux serveurs de messagerie, aux bases de données SQL ou aux services qui s’exécutent sur d’autres protocoles non HTTP/HTTPS.
Les requêtes HTTP/HTTPS provenant d’AEM sur les ports standard (80/443) sont autorisées par défaut et ne nécessitent aucune configuration ni considération supplémentaires.
HTTP/HTTPS sur les ports non standard
Lors de la création de connexions HTTP/HTTPS vers des ports non standard (autres que 80/443) à partir d’AEM, les connexions doivent être établies par le biais d’hôtes et de ports spéciaux, fournis via des espaces réservés.
AEM fournit deux jeux de variables système Java™ spéciales qui correspondent à des proxys HTTP/HTTPS d’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]
Lors d’appels HTTP/HTTPS à des services externes sur des ports non standard, aucun portForwards
correspondant ne doit être défini à l’aide de l’opération enableEnvironmentAdvancedNetworkingConfiguration
de l’API Cloud Manager, car les « règles » de transfert de port sont définies « dans le code ».
Exemples de code
Connexions non HTTP/HTTPS à des services externes
Lors de la création de connexions non HTTP/HTTPS (par exemple, SQL, SMTP, etc.) depuis AEM, la connexion doit être établie par un nom d’hôte spécial fourni par AEM.
AEM_PROXY_HOST
System.getenv().getOrDefault("AEM_PROXY_HOST", "proxy.tunnel")
$[env:AEM_PROXY_HOST;default=proxy.tunnel]
Les connexions à des services externes sont ensuite appelées par l’intermédiaire de AEM_PROXY_HOST
et du port mappé (portForwards.portOrig
), qu’AEM achemine ensuite vers le nom d’hôte externe mappé (portForwards.name
) et le port (portForwards.portDest
).
AEM_PROXY_HOST
portForwards.portOrig
portForwards.name
portForwards.portDest