専用の出力 IP アドレスと VPN 用の HTTP/HTTPS 接続

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

HTTP/HTTPS 接続は、専用の出力 IP アドレスまたは VPN を使用して、AEMas a Cloud Serviceから自動的にプロキシ化され、特別な情報は不要です portForwards ルール。

高度なネットワーク機能のサポート

次のコードサンプルは、以下の高度なネットワーク機能オプションでサポートされています。

次を確認します。 専用の出力 IP アドレスまたは VPN このチュートリアルに従う前に、高度なネットワーク設定が設定されています。

高度なネットワーク機能なし 柔軟なポートエグレス 専用エグレス IP アドレス 仮想プライベートネットワーク
注意

このコード例は、 出力専用 IP アドレス および VPN. 類似していますが、異なるコード例がに対して用意されています。 フレキシブルポートエグレス用の非標準ポートでの HTTP/HTTPS 接続.

コードサンプル

この Java™ コードサンプルは、AEM as a Cloud Service で動作する OSGi サービスで、8080 上の外部 web サーバーへの HTTP 接続を行います。HTTPS(または HTTP)接続は、AEMas a Cloud Serviceから自動的にプロキシ化され、特別な開発は不要です。

メモ

AEM からの HTTP/HTTPS 呼び出しには Java™ 11 HTTP API を使用することをお勧めします。

  • core/src/com/adobe/aem/wknd/examples/connections/impl/HttpExternalServiceImpl.java
package com.adobe.aem.wknd.examples.core.connections.impl;

import com.adobe.aem.wknd.examples.core.connections.ExternalService;
import org.osgi.service.component.annotations.Component;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

@Component
public class HttpExternalServiceImpl implements ExternalService {
    private static final Logger log = LoggerFactory.getLogger(HttpExternalServiceImpl.class);

    // client with connection pool reused for all requests
    private HttpClient client = HttpClient.newBuilder().build();

    @Override
    public boolean isAccessible() {

        // Prepare the full URI to request, note this will have the
        // - Scheme (http/https)
        // - External host name
        // - External port
        // The external service URI, including the scheme/host/port, is defined in code, rather than in Cloud Manager portForwards rules.
        URI uri = URI.create("http://api.example.com:8080/test.json");

        // Prepare the HttpRequest
        HttpRequest request = HttpRequest.newBuilder().uri(uri).timeout(Duration.ofSeconds(2)).build();

        // Send the HttpRequest using the configured HttpClient
        HttpResponse<String> response = null;
        try {
            // Request the URL
            response = client.send(request, HttpResponse.BodyHandlers.ofString());

            log.debug("HTTP response body: {} ", response.body());

            // Our simple example returns true is response is successful! (200 status code)
            return response.statusCode() == 200;
        } catch (IOException e) {
            return false;
        } catch (InterruptedException e) {
            return false;
        }
    }
}

このページ