フレキシブルポートエグレス
フレキシブルポートエグレスをセットアップし使用して、AEM as a Cloud Service から外部サービスへの外部接続をサポートする方法について説明します。
フレキシブルポートエグレスとは
フレキシブルポートエグレスにより、特定のカスタムポート転送ルールを AEM as a Cloud Service に付加することができ、AEM から外部サービスへの接続が可能になります。
Cloud Manager プログラムでは、単一の ネットワークインフラストラクチャタイプのみを持つことができます。 次のコマンドを実行する前に、フレキシブルポートエグレスが AEM as a Cloud Service に最も適切なタイプのネットワークインフラストラクチャであることを確認します。
前提条件
Cloud Manager API を使用してフレキシブルポートエグレスを設定する場合は、次が必要です。
-
Cloud Manager API が有効になっている Adobe Developer Console プロジェクトと Cloud Manager のビジネスオーナー権限
-
Cloud Manager API の認証資格情報へのアクセス
- 組織 ID(別名 IMS 組織 ID)
- クライアント ID(API キー)
- アクセストークン(Bearer トークン)
-
Cloud Manager プログラム ID
-
Cloud Manager 環境 ID
詳しくは、Cloud Manager API 資格情報の設定、構成、取得方法を確認し、それらを使用して Cloud Manager API 呼び出しを実行します。
このチュートリアルでは、curl
を使用して Cloud Manager API を設定します。 指定された curl
コマンドは、Linux/macOS 構文を想定しています。 Windows のコマンドプロンプトを使用する場合は、\
改行文字を ^
で置換します。
プログラムごとのフレキシブルポートエグレスの有効化
AEM as a Cloud Service でフレキシブルポートエグレスを有効にするところから始めます。
Cloud Manager を使用すると、フレキシブルポートエグレスを有効にすることができます。次の手順では、Cloud Manager を使用して AEM as a Cloud Service でフレキシブルポートエグレスを有効にする方法の概要について説明します。
-
Cloud Manager ビジネスオーナーとして Adobe Experience Manager Cloud Manager にログインします。
-
目的のプログラムに移動します。
-
左側のメニューで、サービス/ネットワークインフラストラクチャ に移動します。
-
「ネットワークインフラストラクチャを追加」ボタンを選択します。
-
ネットワークインフラストラクチャを追加 ダイアログで、「フレキシブルポートエグレス」オプションを選択し、「地域」を選択して専用エグレス IP アドレスを作成します。
-
「保存」を選択して、フレキシブルポートエグレスの追加を確認します。
-
ネットワークインフラストラクチャが作成され、準備完了 とマークされるまで待ちます。このプロセスには最大 1 時間かかる場合があります。
フレキシブルポートエグレスを作成したので、以下の説明に従って Cloud Manager API を使用してポート転送ルールを設定できるようになりました。
Cloud Manager API を使用すると、フレキシブルポートエグレスを有効にすることができます。次の手順では、Cloud Manager API を使用してAEM as a Cloud Service でフレキシブルポートエグレスを有効にする方法の概要について説明します。
-
まず、Cloud Manager API の listRegions 操作を使用して、高度なネットワークが設定されている地域を特定します。
region name
は後続の Cloud Manager API 呼び出しを行うために必要です。 通常、実稼動環境が存在する地域が使用されます。Cloud Manager で、環境の詳細の下にある AEM as a Cloud Service 環境の地域を見つけます。 Cloud Manager に表示される地域名は、Cloud Manager API で使用される地域コードにマッピングできます。
listRegions HTTP リクエスト
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'
-
Cloud Manager API の createNetworkInfrastructure 操作を使用して、Cloud Manager プログラムのフレキシブルポートエグレスを有効にします。 Cloud Manager API の
listRegions
操作から取得した適切なregion
コードを使用します。createNetworkInfrastructure HTTP リクエスト
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" }'
Cloud Manager プログラムがネットワークインフラストラクチャをプロビジョニングするまで 15 分待ちます。
-
環境が、Cloud Manager API の getNetworkInfrastructure 操作を使用して フレキシブルポートエグレス の設定を完了したことを、前の手順で
createNetworkInfrastructure
HTTP リクエストから返されたid
を使用して確認します。getNetworkInfrastructure HTTP リクエスト
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'
HTTP 応答に、準備完了 の ステータス が含まれていることを確認します。 まだ準備完了ではない場合は、数分ごとにステータスを再確認します。
フレキシブルポートエグレスを作成したので、以下の説明に従って Cloud Manager API を使用してポート転送ルールを設定できるようになりました。
環境ごとのフレキシブルポートエグレスプロキシの設定
-
Cloud Manager API の enableEnvironmentAdvancedNetworkingConfiguration 操作を使用して、AEM as a Cloud Service 環境ごとに フレキシブルポートエグレス の有効化と設定を行います。
enableEnvironmentAdvancedNetworkingConfiguration HTTP リクエスト
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
flexible-port-egress.json
で JSON パラメーターを定義し、... -d @./flexible-port-egress.json
を介して curl に提供します。サンプルの flexible-port-egress.json をダウンロードします。 このファイルは例に過ぎません。 enableEnvironmentAdvancedNetworkingConfiguration に記載されているオプション/必須フィールドに基づいて、必要に応じてファイルを設定します。
code language-json { "portForwards": [ { "name": "mysql.example.com", "portDest": 3306, "portOrig": 30001 }, { "name": "smtp.sendgrid.com", "portDest": 465, "portOrig": 30002 } ] }
各
portForwards
マッピングでは、詳細ネットワークは次の転送ルールを定義します。table 0-row-5 1-row-5 プロキシホスト プロキシポート 外部ホスト 外部ポート AEM_PROXY_HOST
portForwards.portOrig
→ portForwards.name
portForwards.portDest
これらのルールは HTTP または HTTPS 以外のリクエストにのみ必要なので、AEM デプロイメントに外部サービスへの HTTP または HTTPS 接続(ポート 80 または 443)のみ 必要な場合、
portForwards
配列は空のままにします。 -
各環境で、Cloud Manager API の getEnvironmentAdvancedNetworkingConfiguration 操作を使用して送信ルールが有効であることを検証します。
getEnvironmentAdvancedNetworkingConfiguration HTTP リクエスト
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'
-
フレキシブルポートエグレス設定は、Cloud Manager API の enableEnvironmentAdvancedNetworkingConfiguration 操作を使用して更新できます。
enableEnvironmentAdvancedNetworkingConfiguration
はPUT
操作なので、この操作を呼び出すたびにすべてのルールを指定する必要があることに注意してください。 -
これで、カスタムの AEM コードおよび設定でフレキシブルポートエグレス設定を使用できるようになりました。
フレキシブルポートエグレスでの外部サービスへの接続
フレキシブルポートエグレスプロキシを有効にすると、AEM コードおよび設定でそれらを使用して外部サービスを呼び出すことができます。 外部呼び出しには、AEM での処理方法が 2 種類あります。
- 非標準ポートでの外部サービスへの HTTP/HTTPS 呼び出し
- 標準の 80 または 443 ポート以外のポートで動作するサービスに対して行われる HTTP/HTTPS 呼び出しが含まれます。
- 外部サービスへの HTTP/HTTPS 以外の呼び出し
- HTTP 以外の呼び出し(メールサーバーとの接続、SQL データベース、HTTP/HTTPS 以外のプロトコルで実行されるサービスなど)が含まれます。
標準ポート(80 または 443)での AEM からの HTTP/HTTPS リクエストはデフォルトで許可されており、追加の設定や考慮は不要です。
非標準ポートでの HTTP/HTTPS
AEM からの非標準ポート(80 または 443 以外)での HTTP/HTTPS 接続を作成する場合、接続は特別なホストとポート(プレースホルダーで指定)を使用して行う必要があります。
AEM には、AEM の HTTP/HTTPS プロキシにマッピングされる 2 組の特別な Java™ システム変数が用意されています。
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]
非標準ポートで外部サービスに対して HTTP/HTTPS 呼び出しを行う場合、ポート転送「ルール」が「コード内」で定義されているので、対応する portForwards
を Cloud Manager API の enableEnvironmentAdvancedNetworkingConfiguration
操作を使用して定義しないでください。
コードの例
外部サービスへの HTTP/HTTPS 以外の接続
AEM から HTTP/HTTPS 以外の接続を作成する場合(例:SQL、SMTP など)、接続は AEM から提供される特別なホスト名を使用して行う必要があります。
AEM_PROXY_HOST
System.getenv().getOrDefault("AEM_PROXY_HOST", "proxy.tunnel")
$[env:AEM_PROXY_HOST;default=proxy.tunnel]
外部サービスへの接続は、その後、AEM_PROXY_HOST
とマッピングされたポート(portForwards.portOrig
)を使用しで呼び出されます。次に、AEM はこれをマッピングされた外部ホスト名(portForwards.name
)とポート(portForwards.portDest
)にルーティングします。
AEM_PROXY_HOST
portForwards.portOrig
portForwards.name
portForwards.portDest