5.6. OpenAPI 定義のインポート
新しいサービスを作成する場合、または既存のサービスを更新する場合は、ローカルファイルまたは URL から OpenAPI 定義をインポートすることができます。インポートのデフォルトのサービス名は、OpenAPI 定義の info.title
で指定されます。ただし、--target_system_name=<NEW NAME>
を使用して、このサービス名を上書きできます。この場合、そのサービス名がすでに存在する場合は更新され、存在しない場合は新しいサービス名が作成されます。
import openapi
コマンドのフォーマットは以下のとおりです。
3scale import openapi [opts] -d=<destination> <specification>
OpenAPI <specification>
は、以下のいずれかです。
-
/path/to/your/definition/file.[json|yaml|yml]
-
http[s]://domain/resource/path.[json|yaml|yml]
例
$ podman run registry.redhat.io/3scale-amp2/toolbox-rhel8:3scale2.11 3scale import openapi [opts] -d=https://{DEST_KEY}@{3SCALE_ADMIN}-admin.{DOMAIN_NAME} my-test-api.json
コマンドオプション
import openapi
コマンドのオプションは以下のとおりです。
-d --destination=<value>
-
3scale のターゲットインスタンス (
http[s]://<authentication>@3scale_domain
形式) -t --target_system_name=<value>
- 3scale のターゲットシステム名
--backend-api-secret-token=<value>
- API ゲートウェイによってバックエンド API に送信されるカスタムシークレットトークン
--backend-api-host-header=<value>
- API ゲートウェイによってバックエンド API に送信されるカスタムホストヘッダー
その他のオプションについては、3scale import openapi --help
コマンドを参照してください。
OpenAPI のインポートルール
サポートされるセキュリティースキームは、apiKey
および oauth2
(任意の OAuth フロータイプに対応) です。
OpenAPI 仕様は、以下の値のいずれかでなければなりません。利用可能なパスのファイル名。 toolbox がコンテンツをダウンロードすることのできる URL。サポートされるスキームは http
および https
です。** stdin
標準入力ストリームから読み取ります。これは、値に -
を設定することで制御されます。
OpenAPI 定義をインポートする場合、以下の追加ルールが適用されます。
- 定義は OpenAPI 2.0 または OpenAPI 3.0 として検証される。
- OpenAPI 定義のすべてのマッピングルールがインポートされる。これらについては API > Integration で確認できます。
- 3scale プロダクトのすべてのマッピングルールは置き換えられる。
- OpenAPI 定義に含まれるメソッドのみが変更される。
-
OpenAPI 定義にしか存在していなかったすべてのメソッドが、
Hits
メトリクスにアタッチされる。 -
メソッドを置き換えるには、パターンの完全一致の使用により、メソッドの名前が OpenAPI 定義
operation.operationId
で定義されるメソッドと同一でなければならない。
仕様にセキュリティー要件がない場合、サービスは Open API とみなされます。ポリシーチェーンに default_credentials
ポリシー (anonymous_policy
とも呼ばれる) がまだない場合、toolbox はこのポリシーを追加します。default_credentials
ポリシーは、オプションのパラメーター --default-credentials-userkey
で提供される ユーザーキー で設定されます。
OpenAPI 3.0 の制約
OpenAPI 3.0 定義をインポートする場合、以下の制約が適用されます。
-
servers
リストの最初のserver.url
要素だけがプライベート URL として処理される。server.url
要素のpath
コンポーネントが、OpenAPI のbasePath
プロパティーとして使用されます。 - toolbox は、パス項目および操作オブジェクトのサーバーを処理しない。
- セキュリティースキームオブジェクトでは、複数のフローはサポートされない。