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

最終更新日: 2023-11-30
  • トピック:
  • Security
    このトピックの詳細を表示
  • 作成対象:
  • Intermediate
    Developer

フレキシブルポートエグレスをセットアップし使用して、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 でフレキシブルポートエグレスを有効にするところから始めます。

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

  3. 環境が、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 応答に、準備完了​の​ステータス​が含まれていることを確認します。まだ完了していない場合は、数分ごとにステータスを再確認します。

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

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

  2. 各環境で、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'
    
  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 操作を使用して定義しないでください。

ヒント

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

コードの例

非標準ポートでの 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 接続

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

Java API を使用した SQL 接続

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

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

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

このページ