Flexibler Port-Ausgang
Erfahren Sie, wie Sie einen flexiblen Port-Ausgang einrichten und verwenden, um externe Verbindungen von AEM as a Cloud Service zu externen Diensten zu unterstützen.
Was ist ein flexibler Port-Ausgang?
Ein flexibler Port-Ausgang ermöglicht die Anbindung benutzerdefinierter, spezifischer Port-Weiterleitungsregeln an AEM as a Cloud Service, sodass Verbindungen von AEM zu externen Diensten hergestellt werden können.
Ein Cloud Manager-Programm kann nur einen einzigen Netzinfrastrukturtyp haben. Stellen Sie sicher, dass der flexible Port-Ausgang den für Ihre AEM as a Cloud Service-Umgebung am besten geeigneten Typ der Netzwerkinfrastruktur hat, bevor Sie die folgenden Befehle ausführen.
Voraussetzungen
Beim Festlegen oder Konfigurieren eines flexiblen Port-Ausgangs mit Cloud Manager-APIs ist Folgendes erforderlich:
-
Adobe Developer Console-Projekt mit aktivierter Cloud Manager-API und Geschäftsinhaber-Berechtigungen für Cloud Manager
-
Zugriff auf Authentifizierungs-Anmeldeinformationen der Cloud Manager-API
- Organisations-ID (auch als IMS-Org-ID bezeichnet)
- Client-ID (auch als API-Schlüssel bezeichnet)
- Zugriffs-Token (auch als Bearer- oder Träger-Token bezeichnet)
-
Cloud Manager-Programm-ID
-
Cloud Manager-Umgebungs-IDs
Für weitere Details lesen Sie nach, wie Sie Cloud Manager-API-Anmeldedaten einrichten, konfigurieren und abrufen, um diese für einen Cloud Manager-API-Aufruf zu verwenden.
In diesem Tutorial wird curl
verwendet, um die Cloud Manager-API-Konfigurationen vorzunehmen. Die bereitgestellten curl
-Befehle setzen eine Linux-/macOS-Syntax voraus. Ersetzen Sie bei Verwendung der Windows-Eingabeaufforderung das Zeilenumbruchszeichen \
durch ^
.
Aktivieren flexibler Port-Ausgänge pro Programm
Aktivieren Sie zunächst den flexiblen Port-Ausgang für AEM as a Cloud Service.
Der flexible Port-Ausgang kann mit Cloud Manager aktiviert werden. Die folgenden Schritte beschreiben, wie Sie mithilfe von Cloud Manager den flexiblen Port-Ausgang in AEM as a Cloud Service aktivieren können.
-
Melden Sie sich bei Adobe Experience Manager Cloud Manager mit der Cloud Manager-Rolle „Geschäftsinhaber“ an.
-
Navigieren Sie zum gewünschten Programm.
-
Navigieren Sie im linken Menü zu Dienste > Netzwerkinfrastrukturen.
-
Wählen Sie die Schaltfläche Netzwerkinfrastruktur hinzufügen aus.
-
Wählen Sie im Dialogfeld Netzwerkinfrastruktur hinzufügen die Option Flexibler Port-Ausgang und dann die Region aus, um die dedizierte Ausgangs-IP-Adresse zu erstellen.
-
Wählen Sie Speichern aus, um das Hinzufügen des flexiblen Port-Ausgangs zu bestätigen.
-
Warten Sie, bis die Netzwerkinfrastruktur erstellt wurde und als Bereit gekennzeichnet ist. Dieser Vorgang kann bis zu einer Stunde dauern.
Nachdem der flexible Port-Ausgang erstellt wurde, können Sie nun die Port-Weiterleitungsregeln mithilfe der Cloud Manager-APIs konfigurieren, wie unten beschrieben.
Der flexible Port-Ausgang kann mithilfe von Cloud Manager-APIs aktiviert werden. Die folgenden Schritte beschreiben, wie Sie mithilfe der Cloud Manager-API den flexiblen Port-Ausgang in AEM as a Cloud Service aktivieren können.
-
Bestimmen Sie als Erstes mithilfe des Cloud Manager-API-Vorgangs listRegions, in welcher Region die erweiterten Netzwerkfunktionen eingerichtet sind.
region name
ist erforderlich, um nachfolgende Cloud Manager-API-Aufrufe durchzuführen. In der Regel wird die Region verwendet, in der sich die Produktionsumgebung befindet.Suchen Sie in Cloud Manager unter Umgebungsdetails nach der Region Ihrer AEM as a Cloud Service-Umgebung. Der in Cloud Manager angezeigte Regionsname kann dem Regions-Code zugeordnet werden, der in der Cloud Manager-API verwendet wird.
HTTP-Anfrage „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'
-
Aktivieren Sie den flexiblen Port-Ausgang für ein Cloud Manager-Programm mithilfe des Cloud Manager-API-Vorgangs createNetworkInfrastructure. Verwenden Sie den entsprechenden Code für
region
, der über den Cloud Manager-API-VorganglistRegions
abgerufen wurde.HTTP-Anfrage „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" }'
Warten Sie 15 Minuten, bis das Cloud Manager-Programm die Netzwerkinfrastruktur bereitgestellt hat.
-
Überprüfen Sie, ob die Umgebung die Konfiguration des flexiblen Port-Ausgangs mithilfe des Cloud Manager-API-Vorgangs getNetworkInfrastructure abgeschlossen hat. Verwenden Sie hierzu die
id
aus der vorherigen HTTP-AnfragecreateNetworkInfrastructure
.HTTP-Anfrage „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'
Überprüfen Sie, ob die HTTP-Antwort einen Status von ready enthält. Falls noch nicht „ready“, überprüfen Sie den Status alle paar Minuten.
Nachdem der flexible Port-Ausgang erstellt wurde, können Sie nun die Port-Weiterleitungsregeln mithilfe der Cloud Manager-APIs konfigurieren, wie unten beschrieben.
Konfigurieren von flexiblen Port-Ausgangs-Proxys pro Umgebung
-
Aktivieren und Konfigurieren der Konfiguration flexibler Port-Ausgang in jeder AEM as a Cloud Service-Umgebung mithilfe des Cloud Manager-API-Vorgangs enableEnvironmentAdvancedNetworkingConfiguration.
HTTP-Anfrage „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
Definieren Sie die JSON-Parameter in
flexible-port-egress.json
und stellen Sie sie cURL über... -d @./flexible-port-egress.json
zur Verfügung.Laden Sie das Beispiel „flexible-port-egress.json“ herunter.. Diese Datei ist nur ein Beispiel. Konfigurieren Sie Ihre Datei nach Bedarf auf der Grundlage der unter enableEnvironmentAdvancedNetworkingConfiguration dokumentierten optionalen/erforderlichen Felder.
code language-json { "portForwards": [ { "name": "mysql.example.com", "portDest": 3306, "portOrig": 30001 }, { "name": "smtp.sendgrid.com", "portDest": 465, "portOrig": 30002 } ] }
Für jede
portForwards
-Zuordnung definiert das erweiterte Netzwerk die folgende Weiterleitungsregel:table 0-row-5 1-row-5 Proxy-Host Proxy-Port Externer Host Externer Port AEM_PROXY_HOST
portForwards.portOrig
→ portForwards.name
portForwards.portDest
Wenn Ihre AEM-Bereitstellung nur HTTP/HTTPS-Verbindungen (Port 80/443) zu externen Diensten erfordert, lassen Sie das Array
portForwards
leer, da diese Regeln nur für Nicht-HTTP/HTTPS-Anfragen erforderlich sind. -
Überprüfen Sie für jede Umgebung, ob die Ausgangsregeln in Kraft sind, indem Sie den Cloud Manager-API-Vorgang getEnvironmentAdvancedNetworkingConfiguration verwenden.
HTTP-Anfrage „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'
-
Flexible Port-Ausgangskonfigurationen können mit dem Cloud Manager-API-Vorgang enableEnvironmentAdvancedNetworkingConfiguration aktualisiert werden. Denken Sie daran, dass
enableEnvironmentAdvancedNetworkingConfiguration
einPUT
-Vorgang ist, sodass alle Regeln bei jedem Aufruf dieses Vorgangs angegeben werden müssen. -
Nun können Sie die Konfiguration des flexiblen Port-Ausgangs in Ihrem benutzerdefinierten AEM-Code und Ihrer Konfiguration verwenden.
Anbindung an externe Dienste über flexiblen Port-Ausgang
Wenn der flexible Port-Ausgangs-Proxy aktiviert ist, können AEM-Code und -Konfiguration diese für Anrufe an externe Dienste verwenden. Es gibt zwei Varianten von externen Aufrufen, die AEM unterschiedlich behandelt:
- HTTP/HTTPS-Aufrufe an externe Dienste bei nicht standardmäßigen Ports
- Einschließlich HTTP/HTTPS-Aufrufe an Dienste, die auf anderen Ports als den Standard-Ports 80 oder 443 ausgeführt werden.
- Nicht-HTTP-/HTTPS-Aufrufe an externe Dienste
- Enthält alle Nicht-HTTP-Aufrufe, z. B. Verbindungen mit Mail-Servern, SQL-Datenbanken oder Dienste, die mit anderen Nicht-HTTP-/HTTPS-Protokollen ausgeführt werden.
HTTP/HTTPS-Anfragen von AEM über Standard-Ports (80/443) sind standardmäßig zulässig und erfordern keine zusätzlichen Konfigurationen oder Überlegungen.
HTTP/HTTPS bei nicht standardmäßigen Ports
Beim Erstellen von HTTP/HTTPS-Verbindungen zu nicht standardmäßigen Ports (nicht 80/443) aus AEM müssen die Verbindungen über spezielle Hosts und Ports erfolgen, die über Platzhalter bereitgestellt werden.
AEM stellt zwei Sätze spezieller Java™-Systemvariablen bereit, die HTTP/HTTPS-Proxys von AEM zugeordnet sind.
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]
Wenn HTTP/HTTPS-Aufrufe an externe Dienste auf nicht standardmäßigen Ports erfolgen, muss kein entsprechender portForwards
-Vorgang mit der Cloud Manager API enableEnvironmentAdvancedNetworkingConfiguration
definiert werden, da die „Regeln“ für die Port-Weiterleitung „im Code“ definiert werden.
Code-Beispiele
Nicht-HTTP/HTTPS-Verbindungen zu externen Diensten
Beim Erstellen von Nicht-HTTP-/HTTPS-Verbindungen (z. B. SQL, SMTP usw.) aus AEM, muss die Verbindung über einen speziellen Host-Namen hergestellt werden, der von AEM bereitgestellt wird.
AEM_PROXY_HOST
System.getenv().getOrDefault("AEM_PROXY_HOST", "proxy.tunnel")
$[env:AEM_PROXY_HOST;default=proxy.tunnel]
Verbindungen zu externen Diensten werden dann über AEM_PROXY_HOST
und den zugeordneten Port (portForwards.portOrig
) aufgerufen und anschließend von AEM zum zugeordneten externen Host-Namen (portForwards.name
) und Port (portForwards.portDest
) geleitet.
AEM_PROXY_HOST
portForwards.portOrig
portForwards.name
portForwards.portDest