フレキシブルポートエグレスをセットアップし使用して、AEM as a Cloud Service から外部サービスへの外部接続をサポートする方法について説明します。
フレキシブルポートエグレスにより、特定のカスタムポート転送ルールを AEM as a Cloud Service に付加することができ、AEM から外部サービスへの接続が可能になります。
Cloud Manager プログラムでは、単一のネットワークインフラストラクチャタイプのみを持つことができます。次のコマンドを実行する前に、専用のエグレス IP アドレスが AEM as a Cloud Service に最も適切なタイプのネットワークインフラストラクチャであることを確認してください。
フレキシブルポートエグレスをセットアップするには、以下が必要です。
詳しくは、次の Cloud Manager API 資格情報の設定、構成、取得方法、およびそれらを使用した Cloud Manager API 呼び出しの作成方法に関するチュートリアルを参照してください。
このチュートリアルでは、curl
を使用して Cloud Manager API を設定します。指定された curl
コマンドは、Linux/macOS 構文を想定しています。 Windows のコマンドプロンプトを使用する場合は、\
改行文字を ^
で置換します。
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 リクエスト
$ 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 リクエスト
$ 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 リクエスト
$ 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 の enableEnvironmentAdvancedNetworkingConfiguration 操作を使用して、AEM as a Cloud Service 環境ごとにフレキシブルポートエグレスの有効化と設定を行います。
enableEnvironmentAdvancedNetworkingConfiguration HTTP リクエスト
$ 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 に記載されているオプション/必須フィールドに基づいて、必要に応じてファイルを設定します。
{
"portForwards": [
{
"name": "mysql.example.com",
"portDest": 3306,
"portOrig": 30001
},
{
"name": "smtp.sendgrid.com",
"portDest": 465,
"portOrig": 30002
}
]
}
各 portForwards
マッピングでは、詳細ネットワークは次の転送ルールを定義します。
プロキシホスト | プロキシポート | 外部ホスト | 外部ポート | |
---|---|---|---|---|
AEM_PROXY_HOST |
portForwards.portOrig |
→ | portForwards.name |
portForwards.portDest |
これらのルールは HTTP または HTTPS 以外のリクエストにのみ必要なので、AEM デプロイメントに外部サービスへの HTTP または HTTPS 接続(ポート 80 または 443)のみ必要な場合、portForwards
配列は空のままにします。
各環境で、Cloud Manager API の getEnvironmentAdvancedNetworkingConfiguration 操作を使用して送信ルールが有効であることを検証します。
getEnvironmentAdvancedNetworkingConfiguration HTTP リクエスト
$ 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 種類あります。
標準ポート(80 または 443)での AEM からの HTTP/HTTPS リクエストはデフォルトで許可されており、追加の設定や考慮は不要です。
AEM からの非標準ポート(80 または 443 以外)での HTTP/HTTPS 接続を作成する場合、接続は特別なホストとポート(プレースホルダーで指定)を使用して行う必要があります。
AEM には、AEM の HTTP/HTTPS プロキシにマッピングされる 2 組の特別な Java™ システム変数が用意されています。
変数名 | 以下を使用し、 | Java™コード | OSGi 設定 |
---|---|---|---|
AEM_PROXY_HOST |
HTTP/HTTPS 接続の両方のプロキシホスト | System.getenv().getOrDefault("AEM_PROXY_HOST", "proxy.tunnel") |
$[env:AEM_PROXY_HOST;default=proxy.tunnel] |
AEM_HTTP_PROXY_PORT |
HTTPS 接続のプロキシポート ( フォールバックの設定先: 3128 ) |
System.getenv().getOrDefault("AEM_HTTP_PROXY_PORT", 3128) |
$[env:AEM_HTTP_PROXY_PORT;default=3128] |
AEM_HTTPS_PROXY_PORT |
HTTPS 接続のプロキシポート ( フォールバックの設定先: 3128 ) |
System.getenv().getOrDefault("AEM_HTTPS_PROXY_PORT", 3128) |
$[env:AEM_HTTPS_PROXY_PORT;default=3128] |
非標準ポートで外部サービスに対して HTTP/HTTPS 呼び出しを行う場合、ポート転送「ルール」が「コード内」で定義されているので、対応する portForwards
を Cloud Manager API の enableEnvironmentAdvancedNetworkingConfiguration
操作を使用して定義しないでください。
完全なルーティングルールセットについては、AEM as a Cloud Service のフレキシブルポートエグレスのドキュメントを参照してください。
![]() 非標準の HTTP/HTTPS ポートを使用して AEM as a Cloud Service から外部サービスへの HTTP/HTTPS 接続を作成する Java™ コードの例。 |
AEM から HTTP/HTTPS 以外の接続を作成する場合(例:SQL、SMTP など)、接続は AEM から提供される特別なホスト名を使用して行う必要があります。
変数名 | 以下を使用し、 | Java™コード | OSGi 設定 |
---|---|---|---|
AEM_PROXY_HOST |
非 HTTP/HTTPS 接続用のプロキシホスト | 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 |
![]() AEM JDBC データソースプールを設定して外部 SQL データベースに接続する Java™コード例。 |
![]() Java™ の SQL API を使用して外部 SQL データベースに接続する Java™ コードの例。 |
![]() 外部のメールサービスに接続するために AEM を使用する OSGi 設定例です。 |