APIゲートウェイ・バック・エンドとしてのHTTPまたはHTTPS URLの追加

Find out how to create an API deployment to access HTTP and HTTPS URLs with API Gateway.

一般的な要件は、バックエンド・サービスのHTTPまたはHTTPS URLを使用してAPIを構築し、バックエンドURLにフロントエンド・アクセスを提供するAPIゲートウェイを構築することです。

APIゲートウェイ・サービスを使用してAPIゲートウェイを作成すると、HTTPおよびHTTPS URLにアクセスするAPIデプロイメントを作成できます。

バックエンド・サービスに指定するHTTPまたはHTTPS URLは、次のとおりです:

  • インターネット上で公開されているサービスのURL。
  • The URL of an Oracle Cloud Infrastructure service (for example, OCI Functions).
  • 独自のプライベート・ネットワークまたは内部ネットワーク上のサービスのURL (たとえば、FastConnectによるVCNへの接続)。

HTTPまたはHTTPSバックエンド・サービスを識別するためにAPIデプロイメント仕様で指定するURLには、ホスト名またはホストIPアドレスを含めることができます。ホスト名を指定する場合は、APIゲートウェイのサブネットの「DHCPオプション」プロパティを使用して、APIデプロイメント仕様に含まれるホスト名を実行時にIPアドレスに解決する方法を制御します:

  • バックエンド・サービスのホスト名がインターネット上で公開されている場合、またはホスト名が同じVCN内のインスタンスに属している場合は、「DNSタイプ」としてOracle提供のInternet and VCN Resolverを持つAPIゲートウェイのサブネットのDHCPオプション・セットを選択します。DHCPオプション・セットを明示的に選択しない場合は、これがデフォルトです。
  • ホスト名が独自のプライベート・ネットワークまたは内部ネットワーク上のバックエンド・サービスに対するものである場合は、「DNSタイプ」としてCustom Resolverを持ち、ホスト名をIPアドレスに解決できる適切なDNSサーバーのURLを持つAPIゲートウェイのサブネットのDHCPオプション・セットを選択します。

DNSサーバーの詳細は、APIゲートウェイのサブネットに指定されたDHCPオプション・セットで変更できます。APIゲートウェイは、2時間以内に更新されたDNSサーバーの詳細を使用するように再構成されます。ホスト名をIPアドレスに解決する方法の詳細は、仮想クラウド・ネットワークのDNSDHCPオプションを参照してください。

次を実行して、HTTPおよびHTTPSバック・エンドをAPIデプロイメント仕様に追加できます:

  • コンソールの使用
  • JSONファイルの編集

コンソールを使用したHTTPまたはHTTPSバック・エンドのAPIデプロイメント仕様への追加

コンソールを使用してAPIデプロイメント仕様にHTTPまたはHTTPSバック・エンドを追加するには:

  1. コンソールを使用してAPIデプロイメントを作成または更新し、「最初から」オプションを選択して、「基本情報」ページで詳細を入力します。

    For more information, see Deploying an API on an API Gateway by Creating an API Deployment and Updating an API Gateway or an API Deployment.

  2. 「認証」ページで、認証オプションを指定します。

    For more information about authentication options, see Adding Authentication and Authorization to API Deployments.

  3. 「ルート」ページで、新しいルートを作成し、次を指定します:

    • パス: リストされたメソッドを使用したバックエンド・サービスへのAPIコールのパス。指定するルート・パスで次の点に注意してください:

    • メソッド: バックエンド・サービスが受け入れた1つ以上のメソッド。たとえば、GET, PUTです。
    • 単一のバックエンドの追加または複数のバックエンドの追加: すべてのリクエストを同じバックエンドにルーティングするか、入力したコンテキスト変数およびルールに従ってリクエストを異なるバックエンドにルーティングするか。

      これらの手順は、単一のバックエンドを使用することを想定しているため、「単一のバックエンドの追加」を選択します。または、異なるバックエンドを使用する場合は、「複数のバックエンドの追加」を選択し、コンソールを使用したAPIデプロイメント仕様への動的バックエンド選択の追加の手順に従います。

    • バックエンド・タイプ:バックエンド・サービスのタイプ(HTTP)。
    • URL: バックエンド・サービスとして使用するURL。フォーマットは<protocol>://<host>:<port>/<path>です。説明は次のとおりです:

      • <protocol>は、httpまたはhttpsのいずれかです。
      • <host>は、バックエンド・サービスのホスト名またはホストIPアドレスです。たとえば、api.weather.govです。ホスト名を指定する場合は、APIゲートウェイのサブネットの「DHCPオプション」プロパティを使用して、実行時にホスト名をIPアドレスに解決する方法を制御します。
      • <port>はオプションで、ポート番号です。
      • <path>はオプションで、バックエンド・サービスが配置されているホストのサブディレクトリまたはファイルです。

        <path>にはパラメータを直接含めずに、コンテキスト変数を含めることができることに注意してください。コンテキスト変数を使用してパス、問合せおよびヘッダー・パラメータをパスに置換する方法を示す詳細と例は、ポリシーおよびHTTPバック・エンド定義へのコンテキスト変数の追加を参照してください。

      たとえば、"url": "https://api.weather.gov"です。

    • 接続確立タイムアウト(秒): オプションで、バックエンド・サービスとの接続確立時に許可される時間を示す浮動小数点値(秒)を指定します。最小は1.0、最大は75.0です。指定されていない場合、デフォルト値の60.0秒が使用されます。
    • リクエスト送信タイムアウト(秒): オプションで、リクエストをバックエンド・サービスに送信する際に許可される時間を示す浮動小数点値(秒)を指定します。最小は1.0、最大は300.0です。指定されていない場合、デフォルト値の10.0秒が使用されます。
    • 読取りレスポンス・タイムアウト(秒): オプションで、バックエンド・サービスからのレスポンスの読取り時に許可される時間を示す浮動小数点値(秒)。最小は1.0、最大は300.0です。指定されていない場合、デフォルト値の10.0秒が使用されます。
    • SSL検証の無効化: バックエンド・サービスとの通信時にSSL検証を無効化するかどうか。デフォルトでは、このオプションは選択されていません。

    この例では、ルートは天気サービスをHTTPバック・エンドとして定義します。

    フィールド: 入力:
    パス: /weather
    メソッド: GET
    バックエンド・タイプ: HTTP
    URL: https://api.weather.gov
    接続確立タイムアウト(秒): 45
    リクエスト送信タイムアウト(秒): 15
    読取りレスポンス・タイムアウト(秒): 15
    SSL検証の無効化: (選択されていません)
  4. (オプション)「別のルート」をクリックして、追加ルートの詳細を入力します。
  5. 「次」をクリックして、APIデプロイメント用に入力した詳細を確認します。
  6. APIデプロイメントを作成または更新するには、「作成」または「変更の保存」をクリックします。
  7. (オプション) コールしてAPIが正常にデプロイされていることを確認します(APIゲートウェイにデプロイされたAPIのコールを参照)。

JSONファイルの編集によるAPIデプロイメント仕様へのHTTPまたはHTTPSバック・エンドの追加

JSONファイルのAPIデプロイメント仕様にHTTPまたはHTTPSバック・エンドを追加するには:

  1. 任意のJSONエディタを使用して、次のフォーマットで新しいAPIデプロイメント仕様を作成します(APIデプロイメント仕様の作成を参照):

    {
      "requestPolicies": {},
      "routes": [
        {
          "path": "<api-route-path>",
          "methods": ["<method-list>"],
          "backend": {
            "type": "HTTP_BACKEND",
            "url": "<identifier>",
            "connectTimeoutInSeconds": <seconds>,
            "readTimeoutInSeconds": <seconds>,						
            "sendTimeoutInSeconds": <seconds>,
            "isSSLVerifyDisabled": <true|false>
          },
          "requestPolicies": {},
        }
      ]
    }

    ここでは:

    • "requestPolicies"は、APIデプロイメントの動作を制御するオプションのポリシーを指定します。APIデプロイメント仕様のすべてのルートにポリシーを適用する場合は、routesセクションの外にポリシーを配置します。特定のルートのみにポリシーを適用する場合は、ポリシーをroutesセクション内に配置します。APIデプロイメント仕様へのリクエスト・ポリシーとレスポンス・ポリシーの追加を参照してください。
    • <api-route-path>には、バックエンド・サービスに対してリストされているメソッドを使用して、APIコールのパスを指定します。指定するルート・パスで次の点に注意してください:

    • <method-list>は、バックエンド・サービスによって受け入れられる1つ以上のメソッドをカンマで区切って指定します。たとえば、"GET, PUT"です。
    • "type": "HTTP_BACKEND"は、HTTPまたはHTTPS URLであるAPIゲートウェイ・バック・エンドを指定します。
    • "url: "<identifier>"は、バックエンド・サービスとして使用するURLを<protocol>://<host>:<port>/<path>のフォーマットで指定します。説明は次のとおりです:

      • <protocol>は、httpまたはhttpsのいずれかです。
      • <host>は、バックエンド・サービスのホスト名またはホストIPアドレスです。たとえば、api.weather.govです。ホスト名を指定する場合は、APIゲートウェイのサブネットの「DHCPオプション」プロパティを使用して、実行時にホスト名をIPアドレスに解決する方法を制御します。
      • <port>はオプションで、ポート番号です。
      • <path>はオプションで、バックエンド・サービスが配置されているホストのサブディレクトリまたはファイルです。

        <path>にはパラメータを直接含めずに、コンテキスト変数を含めることができることに注意してください。コンテキスト変数を使用してパス、問合せおよびヘッダー・パラメータをパスに置換する方法を示す詳細と例は、ポリシーおよびHTTPバック・エンド定義へのコンテキスト変数の追加を参照してください。

      たとえば、"url": "https://api.weather.gov"です。

    • "connectTimeoutInSeconds": <seconds>は、バックエンド・サービスとの接続確立時に許可する時間を示すオプションの浮動小数点値(秒)です。最小は0.0、最大は75.0です。指定されていない場合、デフォルト値の60.0秒が使用されます。
    • "readTimeoutInSeconds": <seconds>は、バックエンド・サービスからのレスポンス読取り時に許可する時間を示すオプションの浮動小数点値(秒)です。最小は0.0、最大は300.0です。指定されていない場合、デフォルト値の10.0秒が使用されます。
    • "sendTimeoutInSeconds": <seconds>は、リクエストをバックエンド・サービスに送信する際に許可する時間を示すオプションの浮動小数点値(秒)です。最小は0.0、最大は300.0です。指定されていない場合、デフォルト値の10.0秒が使用されます。
    • "isSSLVerifyDisabled": <true|false>は、バックエンド・サービスとの通信時にSSL検証を無効にするかどうかを示すオプションのブール値(trueまたはfalseのいずれか)です。指定されていない場合、デフォルト値のfalseが使用されます。

    たとえば、次の基本的なAPIデプロイメント仕様では、HTTPバック・エンドとして天気サービスを定義しています:

    {
      "routes": [
        {
          "path": "/weather",
          "methods": ["GET"],
          "backend": {
            "type": "HTTP_BACKEND",
            "url": "https://api.weather.gov",
            "connectTimeoutInSeconds": 45,
            "readTimeoutInSeconds": 15,						
            "sendTimeoutInSeconds": 15,
            "isSSLVerifyDisabled": false
          }
        }
      ]
    }
  2. APIデプロイメント仕様を含むJSONファイルを保存します。
  3. APIデプロイメント仕様は、次の方法でAPIデプロイメントを作成または更新するときに使用します:

    • 「既存のAPIのアップロード」オプションを選択して、コンソールでJSONファイルを指定します
    • APIゲートウェイREST APIへのリクエストでJSONファイルを指定します

    詳細は、APIデプロイメントの作成によるAPIゲートウェイへのAPIのデプロイを参照してください。

  4. (オプション) APIをコールして、APIがデプロイされていることを確認します(APIゲートウェイにデプロイされたAPIのコールを参照)。