5.19. プロダクトのインポート
移行元および宛先の 3scale インスタンスにネットワーク接続がない場合に、同じ 3scale プロダクトを複数の 3scale インスタンスで使用するには、ある 3scale インスタンスから 3scale プロダクトをエクスポートし、別の 3scale インスタンスにインポートします。プロダクトをインポートするには、toolbox 3scale product import コマンドを実行します。
2 つの 3scale インスタンスにネットワーク接続がある場合、両方の 3scale インスタンスで同じ 3scale プロダクトを使用するには、toolbox 3scale copy コマンド を使用します。
説明
3scale プロダクトをインポートすると、toolbox は、Product および Backend カスタムリソース定義 (CRD) に準拠する、.yaml 形式のシリアライズされたプロダクト定義を想定します。toolbox 3scale product export コマンドを実行するか、.yaml 形式のプロダクト定義を手動で作成して、この .yaml コンテンツを取得できます。
プロダクトをエクスポートした場合、インポートされた定義にはエクスポートされた内容が含まれます。これには以下が含まれます。
- プロダクトにリンクされたバックエンド。
- リンクされたバックエンドのメトリック、メソッド、およびマッピングルール。
- アプリケーションプランで定義される制限および課金ルール。
- 制限および課金ルールで参照されるメトリックおよびメソッド。
必要であれば、別の 3scale インスタンスにインポートする前に、エクスポートされた .yaml 出力を変更することができます。
import コマンドはべきとう性を持ちます。これを何回でも実行して同じプロダクトをインポートしても、作成される 3scale 設定は同じままとなります。インポートプロセス中にエラーが発生した場合は、コマンドを再実行しても安全性に問題はありません。import プロセスが 3scale インスタンスでプロダクトを見つけられない場合、プロダクトが作成されます。また、.yaml 定義で定義され、3scale インスタンスで見つけられないメトリック、メソッド、またはバックエンドも作成されます。
3scale プロダクトのインポートは、以下の状況を対象としています。
-
移行元および宛先 3scale インスタンス間の接続がない。たとえば、ネットワークに重大な制限があり、複数の 3scale インスタンスで同じプロダクトを使用するときに toolbox の
3scale copyコマンドを実行できない場合などです。 -
Git またはその他のソースコントロールシステムを使用して、
.yaml形式で 3scale プロダクト定義を維持する。
3scale toolbox の export および import コマンドは、プロダクト定義のバックアップおよび復元にも役立つことがあります。
形式
import コマンドを実行するには、この形式を使用します。
$ 3scale product import [<options>] <remote>
import コマンドは、.yaml の入力を stdin またはファイルから取得します。デフォルトは stdin です。
以下のオプションを指定することができます。
-
-fまたは--fileの後にファイル名を指定すると、指定した.yamlファイルから入力が取得されます。このファイルには、3scale のProductおよびBackendCRD に準拠する 3scale プロダクト定義が含まれる必要があります。 -
-oまたは--outputの後にjsonまたはyamlを指定すると、指定した形式でインポートされたものがリストされたレポートが出力されます。デフォルトの出力形式はjsonです。
<remote> を、プロダクトのインポート先の 3scale インスタンスに関連付けられた 3scale プロバイダーアカウントエイリアスまたは URL に置き換えます。これを指定する方法の詳細は、リモートアクセスクレデンシャルの管理 を参照してください。
例
以下のコマンドは、petstore-product.yaml で定義されたプロダクトを、my-3scale-2 プロバイダーアカウントに関連付けられた 3scale インスタンスにインポートします。デフォルトでは、インポートされた内容のレポートは .json 形式になります。
$ 3scale product import -f petstore-product.yaml my-3scale-2
import コマンドは、インポートされたアイテムをリスト表示するレポートを出力します。以下に例を示します。
api:
product_id: 2555417888846
backends:
backend_01:
backend_id: 73310
missing_metrics_created: 1
missing_methods_created: 1
missing_mapping_rules_created: 1
backend_02:
backend_id: 73311
missing_metrics_created: 0
missing_methods_created: 2
missing_mapping_rules_created: 1
missing_methods_created: 1
missing_metrics_created: 1
missing_mapping_rules_created: 2
missing_application_plans_created: 2
application_plans:
basic:
application_plan_id: 2357356246461
missing_limits_created: 7
missing_pricing_rules_created: 7
unlimited:
application_plan_id: 2357356246462
missing_limits_created: 1
missing_pricing_rules_created: 0
シリアライズされたプロダクト定義の例は、プロダクトのエクスポート の最後にあります。