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デプロイメント仕様へのリクエスト・ポリシーとレスポンス・ポリシーの追加を参照)。
コンソールを使用したAPIデプロイメント仕様の作成
コンソールでダイアログを使用してAPIデプロイメントを作成する際に、APIデプロイメント仕様を作成するには、コンソールを使用してAPIデプロイメントを最初から作成を参照してください。
JSONエディタを使用した個別のJSONファイルでのAPIデプロイメント仕様の作成
JSONファイルでAPIデプロイメント仕様を作成するには:
-
任意の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コールのパスを指定します。指定するルート・パスで次の点に注意してください:- デプロイメント・パス接頭辞に対して相対的です(APIデプロイメントの作成によるAPIゲートウェイへのAPIのデプロイを参照)
- 先頭にスラッシュ(/)を付ける必要があります。単一のスラッシュのみも可能です
- スラッシュは複数使用でき(連続していない場合)、スラッシュで終了できます
- 英数字の大文字と小文字を使用できます
- 特殊文字
$ - _ . + ! * ' ( ) , % ; : @ & =
を使用できます - パラメータおよびワイルドカードを使用できます(ルート・パスへのパス・パラメータおよびワイルドカードの追加を参照)
<method-list>
は、バックエンド・サービスによって受け入れられる1つ以上のメソッドをカンマで区切って指定します。たとえば、"GET, PUT"
です。<backend-type>
は、バックエンド・サービスのタイプを指定します。有効な値は、ORACLE_FUNCTIONS_BACKEND
、HTTP_BACKEND
およびSTOCK_RESPONSE_BACKEND
です。<backend-target>
および<identifier>
は、バックエンド・サービスを指定します。<backend-target>
および<identifier>
の有効な値は、次に示すように<backend-type>
の値に依存します:<backend-type>
をORACLE_FUNCTIONS_BACKEND
に設定した場合は、<backend-target>
をfunctionId
に置き換え、<identifier>
をファンクションのOCIDに置き換えます。たとえば、"functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab5b..."
です。APIゲートウェイ・バックエンドとしてのOCI Functionsでのファンクションの追加を参照してください。<backend-type>
をHTTP_BACKEND
に設定した場合は、<backend-target>
をurl
に置き換え、<identifier>
をバックエンド・サービスのURLに置き換えます。たとえば、"url": "https://api.weather.gov"
です。APIゲートウェイ・バック・エンドとしてのHTTPまたはHTTPS URLの追加を参照してください。<backend-type>
をSTOCK_RESPONSE_BACKEND
に設定した場合は、<backend-target>
と<identifier>
を適切なキーと値のペアに置き換えます。APIゲートウェイ・バック・エンドとしての標準レスポンスの追加を参照してください。
たとえば、次の基本的なAPIデプロイメント仕様では、OCI Functionsの単純なHello Worldサーバーレス・ファンクションを単一のバック・エンドとして定義しています:
{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } } ] }
複数のバック・エンドを定義する、より複雑な例は、複数のバック・エンドを含むAPIデプロイメント仕様の例を参照してください。
- APIデプロイメント仕様を含むJSONファイルを保存します。
-
APIデプロイメント仕様は、次の方法でAPIデプロイメントを作成または更新するときに使用します:
- JSONファイルをコンソールで「既存のAPIのアップロード」オプションで指定します
- 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"
}
}
]
}