Flexibel portutgång
Lär dig hur du konfigurerar och använder flexibel portutgångar för att stödja externa anslutningar från AEM as a Cloud Service till externa tjänster.
Vad är flexibel hamnutgång?
Flexibla portutgångar gör det möjligt att koppla anpassade, specifika regler för portvidarebefordran till AEM as a Cloud Service, vilket gör det möjligt att ansluta från AEM till externa tjänster.
Ett Cloud Manager-program kan bara ha en enskild nätverksinfrastrukturtyp. Kontrollera att flexibel portutgång är den lämpligaste typen av nätverksinfrastruktur för din AEM as a Cloud Service innan du kör följande kommandon.
Förutsättningar
Följande krävs när du ställer in eller konfigurerar flexibel portutgångar med Cloud Manager API
-
Adobe Developer Console-projekt med Cloud Manager API aktiverat och Cloud Manager Business Owner-behörigheter
-
Åtkomst till Cloud Manager API:ts autentiseringsuppgifter
- Organisations-ID (även IMS Org-ID)
- Klient-ID (även API-nyckel)
- Åtkomsttoken (även Bearer Token)
-
Cloud Manager program-ID
-
Cloud Manager miljö-ID:n
Mer information finns i Konfigurera och hämta API-autentiseringsuppgifter för Cloud Manager så att du kan använda dem för att göra ett Cloud Manager API-anrop.
I den här självstudien används curl
för att skapa Cloud Manager API-konfigurationer. De curl
-kommandon som tillhandahålls förutsätter en Linux/macOS-syntax. Om du använder kommandotolken i Windows ersätter du radbrytningstecknet \
med ^
.
Möjliggör flexibel portutgång per program
Börja med att aktivera den flexibla porten i AEM as a Cloud Service.
Flexibel portutgång kan aktiveras med Cloud Manager. I följande steg beskrivs hur du aktiverar flexibel portutgång på AEM as a Cloud Service med Cloud Manager.
-
Logga in på Adobe Experience Manager Cloud Manager som Cloud Manager Business Owner.
-
Navigera till önskat program.
-
Navigera till Tjänster > Nätverksinfrastrukturer på den vänstra menyn.
-
Välj knappen Lägg till nätverksinfrastruktur.
-
I dialogrutan Lägg till nätverksinfrastruktur väljer du alternativet Flexibel portutgång och väljer Region för att skapa den dedikerade IP-adressen för utgångar.
-
Välj Spara om du vill bekräfta att den flexibla porten har lagts till.
-
Vänta tills nätverksinfrastrukturen har skapats och markerats som Ready. Den här processen kan ta upp till 1 timme.
När du har skapat en flexibel portutgång kan du nu konfigurera regler för portvidarebefordran med Cloud Manager API:er enligt beskrivningen nedan.
Flexibel portutgång kan aktiveras med Cloud Manager API:er. I följande steg beskrivs hur du aktiverar flexibel portutgång på AEM as a Cloud Service med Cloud Manager API.
-
Kontrollera först att regionen Advanced Networking har konfigurerats i med Cloud Manager API-åtgärden listRegions.
region name
krävs för efterföljande Cloud Manager API-anrop. Normalt används regionen där produktionsmiljön finns.Hitta AEM as a Cloud Service-miljöns region i Cloud Manager under miljöns information. Regionnamnet som visas i Cloud Manager kan mappas till regionkoden som används i Cloud Manager API.
listRegions HTTP request
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'
-
Aktivera flexibel portutgång för ett Cloud Manager-program med Cloud Manager API-åtgärden createNetworkInfrastructure. Använd rätt
region
-kod som hämtats från Cloud Manager APIlistRegions
-åtgärden.createNetworkInfrastructure HTTP-begäran
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" }'
Vänta i 15 minuter tills Cloud Manager-programmet tillhandahåller nätverksinfrastrukturen.
-
Kontrollera att miljön har slutfört flexibel portutgångskonfiguration med Cloud Manager API getNetworkInfrastructure -åtgärden, med hjälp av
id
som returnerades från HTTP-begärancreateNetworkInfrastructure
i föregående steg.getNetworkInfrastructure HTTP-begäran
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'
Kontrollera att HTTP-svaret innehåller status av ready. Om du inte är klar ännu kontrollerar du statusen var några minut.
När du har skapat en flexibel portutgång kan du nu konfigurera regler för portvidarebefordran med Cloud Manager API:er enligt beskrivningen nedan.
Konfigurera flexibla portaregresproxy per miljö
-
Aktivera och konfigurera konfigurationen för flexibel portutgångar i varje AEM as a Cloud Service-miljö med Cloud Manager API-åtgärden enableEnvironmentAdvancedNetworkingConfiguration .
enableEnvironmentAdvancedNetworkingConfiguration HTTP-begäran
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
Definiera JSON-parametrarna i en
flexible-port-egress.json
och tillhandahåll för att rulla via... -d @./flexible-port-egress.json
.Hämta exemplet flexible-port-egress.json. Filen är bara ett exempel. Konfigurera filen efter behov baserat på de valfria/obligatoriska fälten som beskrivs i enableEnvironmentAdvancedNetworkingConfiguration.
code language-json { "portForwards": [ { "name": "mysql.example.com", "portDest": 3306, "portOrig": 30001 }, { "name": "smtp.sendgrid.com", "portDest": 465, "portOrig": 30002 } ] }
För varje
portForwards
-mappning definierar det avancerade nätverket följande vidarebefordringsregel:table 0-row-5 1-row-5 Proxyvärd Proxyport Extern värd Extern port AEM_PROXY_HOST
portForwards.portOrig
→ portForwards.name
portForwards.portDest
Om AEM endast kräver HTTP/HTTPS-anslutningar (port 80/443) till den externa tjänsten lämnar du
portForwards
-arrayen tom, eftersom dessa regler bara krävs för icke-HTTP/HTTPS-begäranden. -
Verifiera egresreglerna för varje miljö med Cloud Manager API-åtgärden getEnvironmentAdvancedNetworkingConfiguration.
getEnvironmentAdvancedNetworkingConfiguration HTTP-begäran
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'
-
Flexibla portutgångskonfigurationer kan uppdateras med Cloud Manager API-åtgärden enableEnvironmentAdvancedNetworkingConfiguration . Kom ihåg att
enableEnvironmentAdvancedNetworkingConfiguration
är enPUT
-åtgärd, så alla regler måste anges med varje anrop av den här åtgärden. -
Nu kan du använda den flexibla konfigurationen av portutgångar i din anpassade AEM och konfiguration.
Ansluta till externa tjänster via flexibel hamnutgång
När den flexibla portaregresproxyn är aktiverad kan AEM kod och konfiguration använda dem för att ringa till externa tjänster. Det finns två varianter av externa anrop som AEM behandlar på olika sätt:
- HTTP/HTTPS-anrop till externa tjänster på icke-standardportar
- Innehåller HTTP/HTTPS-anrop till tjänster som körs på andra portar än standardportarna 80 eller 443.
- icke-HTTP/HTTPS-anrop till externa tjänster
- Inkluderar alla icke-HTTP-anrop, till exempel anslutningar med e-postservrar, SQL-databaser eller tjänster som körs på andra icke-HTTP/HTTPS-protokoll.
HTTP/HTTPS-begäranden från AEM på standardportar (80/443) tillåts som standard och kräver ingen extra konfiguration eller överväganden.
HTTP/HTTPS på portar som inte är standard
När du skapar HTTP/HTTPS-anslutningar till portar som inte är standard (not-80/443) från AEM, måste anslutningarna göras via en särskild värd och portar, som tillhandahålls via platshållare.
AEM innehåller två uppsättningar särskilda Java™-systemvariabler som mappar till AEM HTTP/HTTPS-proxy.
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]
När du gör HTTP/HTTPS-anrop till externa tjänster på icke-standardportar, behöver ingen motsvarande portForwards
definieras med Cloud Manager API enableEnvironmentAdvancedNetworkingConfiguration
-åtgärden eftersom reglerna för portvidarebefordran är definierade i koden.
Exempel på koder
Icke-HTTP/HTTPS-anslutningar till externa tjänster
När anslutningar som inte är HTTP/HTTPS skapas (t.ex. SQL, SMTP och så vidare) från AEM måste anslutningen upprättas via ett särskilt värdnamn som AEM anger.
AEM_PROXY_HOST
System.getenv().getOrDefault("AEM_PROXY_HOST", "proxy.tunnel")
$[env:AEM_PROXY_HOST;default=proxy.tunnel]
Anslutningar till externa tjänster anropas sedan via AEM_PROXY_HOST
och den mappade porten (portForwards.portOrig
), som AEM sedan dirigeras till det mappade externa värdnamnet (portForwards.name
) och porten (portForwards.portDest
).
AEM_PROXY_HOST
portForwards.portOrig
portForwards.name
portForwards.portDest