フレキシブルポートエグレス

フレキシブルポートエグレスをセットアップし使用して、AEM as a Cloud Service から外部サービスへの外部接続をサポートする方法について説明します。

フレキシブルポートエグレスとは

フレキシブルポートエグレスにより、特定のカスタムポート転送ルールを AEM as a Cloud Service に付加することができ、AEM から外部サービスへの接続が可能になります。

Cloud Manager プログラムでは、単一の ​ネットワークインフラストラクチャタイプのみを持つことができます。 次のコマンドを実行する前に、フレキシブルポートエグレスが AEM as a Cloud Service に最も適切なタイプのネットワークインフラストラクチャであることを確認します。

前提条件

Cloud Manager API を使用してフレキシブルポートエグレスを設定する場合は、次が必要です。

詳しくは、Cloud Manager API 資格情報の設定、構成、取得方法を確認し、それらを使用して Cloud Manager API 呼び出しを実行します。

このチュートリアルでは、curl を使用して Cloud Manager API を設定します。 指定された curl コマンドは、Linux/macOS 構文を想定しています。 Windows のコマンドプロンプトを使用する場合は、\ 改行文字を ^ で置換します。

プログラムごとのフレキシブルポートエグレスの有効化

AEM as a Cloud Service でフレキシブルポートエグレスを有効にするところから始めます。

Cloud Manager

Cloud Manager を使用すると、フレキシブルポートエグレスを有効にすることができます。次の手順では、Cloud Manager を使用して AEM as a Cloud Service でフレキシブルポートエグレスを有効にする方法の概要について説明します。

  1. Cloud Manager ビジネスオーナーとして Adobe Experience Manager Cloud Manager にログインします。

  2. 目的のプログラムに移動します。

  3. 左側のメニューで、サービス/ネットワークインフラストラクチャ ​に移動します。

  4. ネットワークインフラストラクチャを追加」ボタンを選択します。

    ネットワークインフラストラクチャを追加

  5. ネットワークインフラストラクチャを追加 ​ダイアログで、「フレキシブルポートエグレス」オプションを選択し、「地域」を選択して専用エグレス IP アドレスを作成します。

    フレキシブルポートエグレスを追加

  6. 保存」を選択して、フレキシブルポートエグレスの追加を確認します。

    フレキシブルポートエグレスの作成を確認

  7. ネットワークインフラストラクチャが作成され、準備完了 ​とマークされるまで待ちます。このプロセスには最大 1 時間かかる場合があります。

    フレキシブルポートエグレスの作成ステータス

フレキシブルポートエグレスを作成したので、以下の説明に従って Cloud Manager API を使用してポート転送ルールを設定できるようになりました。

Cloud Manager API

Cloud Manager API を使用すると、フレキシブルポートエグレスを有効にすることができます。次の手順では、Cloud Manager API を使用してAEM as a Cloud Service でフレキシブルポートエグレスを有効にする方法の概要について説明します。

  1. まず、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'
    
  2. 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 分待ちます。

  3. 環境が、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 を使用してポート転送ルールを設定できるようになりました。

環境ごとのフレキシブルポートエグレスプロキシの設定

  1. 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 配列は空のままにします。

  2. 各環境で、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'
    
  3. フレキシブルポートエグレス設定は、Cloud Manager API の enableEnvironmentAdvancedNetworkingConfiguration 操作を使用して更新できます。 enableEnvironmentAdvancedNetworkingConfigurationPUT 操作なので、この操作を呼び出すたびにすべてのルールを指定する必要があることに注意してください。

  4. これで、カスタムの AEM コードおよび設定でフレキシブルポートエグレス設定を使用できるようになりました。

フレキシブルポートエグレスでの外部サービスへの接続

フレキシブルポートエグレスプロキシを有効にすると、AEM コードおよび設定でそれらを使用して外部サービスを呼び出すことができます。 外部呼び出しには、AEM での処理方法が 2 種類あります。

  1. 非標準ポートでの外部サービスへの HTTP/HTTPS 呼び出し
    • 標準の 80 または 443 ポート以外のポートで動作するサービスに対して行われる HTTP/HTTPS 呼び出しが含まれます。
  2. 外部サービスへの HTTP/HTTPS 以外の呼び出し
    • HTTP 以外の呼び出し(メールサーバーとの接続、SQL データベース、HTTP/HTTPS 以外のプロトコルで実行されるサービスなど)が含まれます。

標準ポート(80 または 443)での AEM からの HTTP/HTTPS リクエストはデフォルトで許可されており、追加の設定や考慮は不要です。

非標準ポートでの 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 操作を使用して定義しないでください。

TIP
完全なルーティングルールセットについては、AEM as a Cloud Service のフレキシブルポートエグレスのドキュメントを参照してください。

コードの例

非標準ポートでの HTTP/HTTPS

非標準ポートでの HTTP/HTTPS

非標準の HTTP/HTTPS ポートを使用して AEM as a Cloud Service から外部サービスへの HTTP/HTTPS 接続を作成する Java™ コードの例。

外部サービスへの HTTP/HTTPS 以外の接続

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

コードの例

JDBC DataSourcePool を使用した SQL 接続

JDBC DataSourcePool を使用した SQL 接続

AEM JDBC データソースプールを設定して外部 SQL データベースに接続する Java™コード例。

Java API を使用した SQL 接続

Java™ API を使用した SQL 接続

Java™ の SQL API を使用して外部 SQL データベースに接続する Java™ コードの例。

仮想プライベートネットワーク(VPN)

メールサービス

外部のメールサービスへの接続に AEM を使用する OSGi 設定例です。

recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69