専用エグレス IP アドレス
専用のエグレス IP アドレスを設定して使用する方法を説明します。このアドレスを使用すると、AEM からの送信接続を専用の IP から発信できます。
専用のエグレス IP アドレスとは
専用のエグレス IP アドレスを使用すると、AEM as a Cloud Service からのリクエストで専用の IP アドレスを使用でき、外部サービスはこの IP アドレスで受信リクエストをフィルタリングできるようになります。 フレキシブルエグレスポートと同様、専用のエグレス IP を使用すると非標準ポートに出力できます。
Cloud Manager プログラムでは、単一の ネットワークインフラストラクチャタイプのみを持つことができます。 次のコマンドを実行する前に、専用エグレス IP アドレスが AEM as a Cloud Service に最も適切なタイプのネットワークインフラストラクチャであることを確認します。
前提条件
Cloud Manager API を使用して専用エグレス IP アドレスを設定する場合は、次が必要です。
-
Cloud Manager のビジネス所有者権限がある Cloud Manager API
-
Cloud Manager API 認証資格情報にアクセスします
- 組織 ID(別名 IMS 組織 ID)
- クライアント ID(API キー)
- アクセストークン(Bearer トークン)
-
Cloud Manager プログラム ID
-
Cloud Manager 環境 ID
詳しくは Cloud Manger API 資格情報の設定、設定、取得方法を確認、それらを使用してCloud Manager API 呼び出しを行う方法を参照してください。
このチュートリアルでは、curl
を使用して Cloud Manager API を設定します。 指定された curl
コマンドは、Linux/macOS 構文を想定しています。 Windows のコマンドプロンプトを使用する場合は、\
改行文字を ^
で置換します。
プログラムの専用のエグレス IP アドレスを有効にする
まず、AEM as a Cloud Service で専用のエグレス IP アドレスを有効にして設定します。
Cloud Manager を使用すると、専用エグレス IP アドレスを有効にすることができます。次の手順では、Cloud Manager を使用して AEM as a Cloud Serviceで専用エグレス IP アドレスを有効にする方法の概要について説明します。
-
Cloud Manager ビジネスオーナーとして Adobe Experience Manager Cloud Manager にログインします。
-
目的のプログラムに移動します。
-
左側のメニューで、サービス/ネットワークインフラストラクチャ に移動します。
-
「ネットワークインフラストラクチャを追加」ボタンを選択します。
-
ネットワークインフラストラクチャを追加 ダイアログで、「専用エグレス IP アドレス」オプションを選択し、「地域」を選択して専用エグレス IP アドレスを作成します。
-
「保存」を選択して、専用エグレス IP アドレスの追加を確認します。
-
ネットワークインフラストラクチャが作成され、準備完了 とマークされるまで待ちます。このプロセスには最大 1 時間かかる場合があります。
専用エグレス IP アドレスを作成したので、以下の説明に従って Cloud Manager API を使用して設定できます。
Cloud Manager API を使用すると、専用エグレス IP アドレスを有効にすることができます。次の手順では、Cloud Manager API を使用して AEM as a Cloud Service で専用エグレス IP アドレスを有効にする方法の概要について説明します。
-
まず、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 プログラム用の専用のエグレス IP アドレスを有効にします。 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": "dedicatedEgressIp", "region": "va7" }'
Cloud Manager プログラムがネットワークインフラストラクチャをプロビジョニングするまで 15 分待ちます。
-
プログラムが、Cloud Manager API の getNetworkInfrastructure 操作を使用して 専用エグレス IP アドレス の設定を完了したことを、前の手順で
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 応答に、準備完了 の ステータス が含まれていることを確認します。 まだ準備完了ではない場合は、数分ごとにステータスを再確認します。
専用エグレス IP アドレスを作成したので、以下の説明に従って Cloud Manager API を使用して設定できます。
環境ごとの専用のエグレス IP アドレスプロキシの設定
-
Cloud Manager API の enableEnvironmentAdvancedNetworkingConfiguration 操作を使用して、各 AEM as a Cloud Service 環境で 専用のエグレス IP アドレス 設定を行います。
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 @./dedicated-egress-ip-address.json
dedicated-egress-ip-address.json
で JSON パラメーターを定義し、... -d @./dedicated-egress-ip-address.json
を介して curl に提供します。サンプルの dedicated-egress-ip-address.json をダウンロードします。 このファイルは例に過ぎません。enableEnvironmentAdvancedNetworkingConfiguration に記載されているオプション/必須フィールドに基づいて、必要に応じてファイルを設定します。
code language-json { "nonProxyHosts": [ "example.net", "*.example.org", ], "portForwards": [ { "name": "mysql.example.com", "portDest": 3306, "portOrig": 30001 }, { "name": "smtp.sendgrid.net", "portDest": 465, "portOrig": 30002 } ] }
専用のエグレス IP アドレス設定の HTTP 署名は、オプションの
nonProxyHosts
設定もサポートするという点のみ、柔軟なエグレスポートと異なります。nonProxyHosts
は、ポート 80 または 443 が専用のエグレス IP ではなくデフォルトの共有 IP アドレス範囲を介してルーティングされるホストのセットを宣言します。 共有 IP を介して送信されたトラフィックがアドビによって自動的に最適化されるので、nonProxyHosts
が役立つ場合があります。各
portForwards
マッピングでは、詳細ネットワークは次の転送ルールを定義します。table 0-row-5 1-row-5 プロキシホスト プロキシポート 外部ホスト 外部ポート AEM_PROXY_HOST
portForwards.portOrig
→ portForwards.name
portForwards.portDest
-
各環境で、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 'x-api-key: <CLIENT_ID>' \ -H 'Authorization: <YOUR_TOKEN>' \ -H 'Content-Type: application/json'
-
専用のエグレス IP アドレス設定は、Cloud Manager API の enableEnvironmentAdvancedNetworkingConfiguration 操作を使用して更新できます。
enableEnvironmentAdvancedNetworkingConfiguration
はPUT
操作であるため、この操作を呼び出すたびにすべてのルールを提供する必要があることに注意してください。 -
ホスト:
p{programId}.external.adobeaemcloud.com
で DNS リゾルバー(DNSChecker.org など)を使用するか、コマンドラインからdig
を実行して、専用のエグレス IP アドレス を取得します。code language-shell $ dig +short p{programId}.external.adobeaemcloud.com
ホスト名を
pinged
にすることはできません。これはエグレスであり、イングレス ではない からです。専用エグレス IP アドレスは、プログラム内のすべての AEM as a Cloud Service 環境で共有されることに注意してください。
-
これで、カスタムの AEM コードおよび設定で専用エグレス IP アドレスを使用できるようになりました。多くの場合、専用のエグレス IP アドレスを使用する場合、外部サービスの AEM as a Cloud Service 接続先は、この専用 IP アドレスからのトラフィックのみを許可するように設定されます。
専用のエグレス IP アドレスを使用した外部サービスへの接続
専用のエグレス IP アドレスを有効にすると、AEM のコードと設定で、専用のエグレス IP を使用して外部サービスを呼び出すことができます。 外部呼び出しには、AEM での処理方法が 2 種類あります。
- 外部サービスへの HTTP/HTTPS 呼び出し
- 標準の 80 または 443 ポート以外のポートで動作するサービスに対して行われる HTTP/HTTPS 呼び出しが含まれます。
- 外部サービスへの HTTP/HTTPS 以外の呼び出し
- HTTP 以外の呼び出し(メールサーバーとの接続、SQL データベース、HTTP/HTTPS 以外のプロトコルで実行されるサービスなど)が含まれます。
標準ポート(80/443)上の AEM からの HTTP/HTTPS リクエストはデフォルトで許可されていますが、以下に説明するように適切に設定されていない場合は、専用エグレス IP アドレスを使用しません。
HTTP/HTTPS
AEM から HTTP/HTTPS 接続を作成するときに、専用のエグレス IP アドレスを使用すると、HTTP/HTTPS 接続は専用のエグレス IP アドレスを使用して AEM から自動的にプロキシされます。 HTTP/HTTPS 接続をサポートするために、追加のコードや設定は必要ありません。
コードの例
外部サービスへの HTTP/HTTPS 以外の接続
AEM から HTTP/HTTPS 以外の接続を作成する場合(例:SQL、SMTP など)、接続は AEM から提供される特別なホスト名を使用して行う必要があります。
AEM_PROXY_HOST
System.getenv("AEM_PROXY_HOST")
$[env:AEM_PROXY_HOST]
外部サービスへの接続は、その後、AEM_PROXY_HOST
とマッピングされたポート(portForwards.portOrig
)を使用しで呼び出されます。次に、AEM はこれをマッピングされた外部ホスト名(portForwards.name
)とポート(portForwards.portDest
)にルーティングします。
AEM_PROXY_HOST
portForwards.portOrig
portForwards.name
portForwards.portDest