APIデプロイメント仕様の作成

APIゲートウェイで使用するAPI仕様(JSONフォーマットのマシンで読取り可能なAPIの定義)を作成する方法をご紹介します。

APIをAPIゲートウェイにデプロイする前に、APIデプロイメント仕様を作成する必要があります。すべてのAPIデプロイメントには、APIデプロイメント仕様があります。

各APIデプロイメント仕様では、リソースおよび各リソースで実行可能なメソッド(たとえば、GET、PUT)のセットを記述します。

次を実行して、単一APIゲートウェイを複数のバックエンド・サービスのフロント・エンドとして使用できます:

  • 複数のバックエンド・サービスを定義するAPIデプロイメント仕様を使用してAPIゲートウェイで単一のAPIデプロイメントを作成します。
  • それぞれに1つ(または、それ以上)のバックエンド・サービスを定義するAPIデプロイメント仕様を使用して、同じAPIゲートウェイに複数のAPIデプロイメントを作成します。

通常、バックエンド・サービスは、APIをデプロイするAPIゲートウェイと同じVCN内に存在します。ただし、必ずしもそうである必要はありません。APIデプロイメント仕様では、テナンシのプライベートまたはパブリック・サブネット上にあるバックエンド・サービスや、テナンシ外部のサービス(パブリック・インターネット上を含む)を記述できます。それらが配置されている場所にかかわらず、APIがデプロイされているAPIゲートウェイを含むサブネットからバックエンド・サービスをルーティングできる必要があります。たとえば、バックエンド・サービスがパブリック・インターネット上にある場合、VCNには、バックエンド・サービスにリクエストをルーティングするAPIゲートウェイを有効にするためのインターネット・ゲートウェイが必要です。

APIデプロイメント仕様を作成するには、次を実行します:

  • APIデプロイメントの作成中にコンソールでダイアログを使用します。
  • 任意のJSONエディタを使用して、個別のJSONファイルを作成します。その後、コンソール、CLIまたはAPIを使用してAPIデプロイメントを作成する場合、JSONファイルを指定できます。
  • APIリソース用にアップロードするAPI記述ファイルを使用します。API記述ファイルにはAPIデプロイメント仕様の初期値がいくつか用意されていますが、これらはAPIゲートウェイにAPIリソースをデプロイする際に変更および拡張できます。API記述を含めたAPIリソースの作成を参照してください。

このトピックの手順は、基本的なAPIデプロイメント仕様を1つのバックエンド、1つのルートのみで示しており、リクエスト・ポリシーまたはレスポンス・ポリシーはありません。複数のバック・エンドを含む、1つ以上のルートを持つ、より一般的なAPIデプロイメント仕様の詳細は、複数のバック・エンドを含むAPIデプロイメント仕様の例を参照してください。

また、APIデプロイメント仕様のルートに適用するリクエストおよびレスポンスのポリシーを追加できます(APIデプロイメント仕様へのリクエスト・ポリシーとレスポンス・ポリシーの追加を参照)。

JSONエディタを使用した個別のJSONファイルでのAPIデプロイメント仕様の作成

JSONファイルでAPIデプロイメント仕様を作成するには:

  1. 任意のJSONエディタを使用し、JSONファイル内に次のフォーマットでAPIデプロイメント仕様を作成します:

    {
      "requestPolicies": {},
      "routes": [
        {
          "path": "<api-route-path>",
          "methods": ["<method-list>"],
          "backend": {
            "type": "<backend-type>",
            "<backend-target>": "<identifier>"
          },
          "requestPolicies": {}
        }
      ]
    }

    ここでは:

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

    • <method-list>は、バックエンド・サービスによって受け入れられる1つ以上のメソッドをカンマで区切って指定します。たとえば、"GET, PUT"です。
    • <backend-type>は、バックエンド・サービスのタイプを指定します。有効な値は、ORACLE_FUNCTIONS_BACKENDHTTP_BACKENDおよびSTOCK_RESPONSE_BACKENDです。
    • <backend-target>および<identifier>は、バックエンド・サービスを指定します。<backend-target>および<identifier>の有効な値は、次に示すように<backend-type>の値に依存します:

    たとえば、次の基本的なAPIデプロイメント仕様では、OCI Functionsの単純なHello Worldサーバーレス・ファンクションを単一のバックエンドとして定義しています:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        }
      ]
    }

    複数のバック・エンドを定義する、より複雑な例は、複数のバック・エンドを含むAPIデプロイメント仕様の例を参照してください。

  2. APIデプロイメント仕様を含むJSONファイルを保存します。
  3. APIデプロイメント仕様は、次の方法でAPIデプロイメントを作成または更新するときに使用します:

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

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

API記述ファイルを使用したAPIデプロイメント仕様の作成

APIリソース用にアップロードしたAPI記述ファイルに基づいてAPIデプロイメント仕様を作成するには、API記述を含めたAPIリソースの作成を参照してください

API記述ファイルにはAPIデプロイメント仕様の初期値がいくつか用意されていますが、これらはAPIゲートウェイにAPIリソースをデプロイする際に変更および拡張できます。

複数のバック・エンドを含むAPIデプロイメント仕様の例

複数のバックエンド・サービスを定義するAPIデプロイメント仕様を使用して、APIゲートウェイへの単一のAPIデプロイメントを作成できます。

たとえば、次のAPIデプロイメント仕様では、OCI Functionsの単純なHello Worldサーバーレス・ファンクションを1つのバックエンドとして定義し、National Weather Service APIを2番目のバックエンドとして定義しています。

{
  "routes": [
    {
      "path": "/hello",
      "methods": ["GET"],
      "backend": {
        "type": "ORACLE_FUNCTIONS_BACKEND",
        "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
      }
    },
    {
      "path": "/weather",
      "methods": ["GET"],
      "backend": {
        "type": "HTTP_BACKEND",
        "url": "https://api.weather.gov"
      }
    }
  ]
}