Share via


Azure API Management から API Center に API をインポートする

この記事では、Azure CLI を使用して Azure API Management インスタンスから API Center に API をインポート (追加) する方法について説明します。 API Management から API インベントリに API を追加すると、開発者、API プログラム マネージャー、組織内の他の利害関係者が API を検出してアクセスできるようになります。

この記事では、Azure CLI を使用して API Management から API Center に API を追加するための 2 つのオプションを示します。

  • オプション 1 - az apim api export コマンドを使用して API Management インスタンスから API 定義をエクスポートします。 次に、API Center にその定義をインポートします。

    API Management からエクスポートされた API 定義をインポートするには、次のような方法があります。

  • オプション 2 - az apic service import-from-apim コマンドを使用して API Management から API Center に直接 API をインポートします。

API Management から API 定義または API をインポートした後、API Center にメタデータとドキュメントを追加して、関係者が API を検出、理解、使用できるようにすることができます。

前提条件

  • Azure サブスクリプション内の API センター。 作成していない場合は、「クイック スタート: API Center を作成する」を参照してください。

  • 同じサブスクリプションまたは別のサブスクリプション内の Azure API Management の 1 つ以上のインスタンス。 API Management から API を直接インポートする場合、API Management インスタンスと API Center は同じディレクトリに存在する必要があります。 まだ作成していない場合は、「Azure API Management インスタンスの作成」を参照してください。

  • API Management インスタンスで管理されている、API Center に追加したい 1 つ以上の API。

  • Azure CLI の場合

    • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

    • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

      • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

      • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

      • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

    Note

    az apic コマンドには、apic-extensionAzure CLI 拡張機能が必要です。 az apic コマンドを使用したことがない場合は、初めて az apic コマンドを実行するときに拡張機能が動的にインストールされます。 Azure CLI 拡張機能の詳細については、こちらを参照してください。

    Note

    この記事の Azure CLI コマンドの例は、PowerShell または bash シェルで実行できます。 変数の構文が異なるために必要な場合は、2 つのシェルで個別のコマンド例が提供されています。

オプション 1: API Management から API 定義をエクスポートし、API Center にインポートする

まず、az apim api export コマンドを使用して、API Management インスタンスから API 定義へ API をエクスポート します。 シナリオに応じて、API 定義はローカル ファイルまたは URL にエクスポートできます。

API をローカル API 定義ファイルへエクスポートする

次のコマンド例では、API の myAPIManagement インスタンスに識別子 my-api を持つ API をエクスポートします。 API は OpenApiJson 形式で、specificationFile.json という名前のローカル OpenAPI 定義ファイルにエクスポートされます。

#! /bin/bash
az apim api export --api-id my-api --resource-group myResourceGroup \
    --service-name myAPIManagement --export-format OpenApiJsonFile \
    --file-path "/path/to/folder"
#! PowerShell syntax
az apim api export --api-id my-api --resource-group myResourceGroup `
    --service-name myAPIManagement --export-format OpenApiJsonFile `
    --file-path '/path/to/folder'

API を URL にエクスポートする

次の例では、az apim api export は、識別子 my-api を持つ OpenApiJson 形式の API を Azure Storage の URL にエクスポートします。 この URL は約 5 分間使用できます。 ここでは、URL の値は $link 変数に保存されています。

#! /bin/bash
link=$(az apim api export --api-id my-api --resource-group myResourceGroup \
    --service-name myAPIManagement --export-format OpenApiJsonUrl --query properties.value.link \
    --output tsv)
# PowerShell syntax
$link=$(az apim api export --api-id my-api --resource-group myResourceGroup `
    --service-name myAPIManagement --export-format OpenApiJsonUrl --query properties.value.link `
    --output tsv)

エクスポートされた API 定義から API Center に API を登録する

az apic api register コマンドを使用して、エクスポートされた定義から API Center に 新しい API を登録できます。

次の例では、definitionFile.json という名前のローカルの OpenAPI 定義ファイルから、myAPICenter API Center に API を登録します。

az apic api register --resource-group myResourceGroup --service myAPICenter --api-location "/path/to/definitionFile.json"

API Center の既存の API に API 定義をインポートする

次の例では、az apic api definition import-specification コマンドを使用して、myAPICenter API Center の既存の API に API 定義をインポートします。 ここで、API 定義は、$link 変数に保存されている URL からインポートされます。

この例では、my-api という名前の API と、関連付けられている API バージョン v1-0-0 と定義エンティティ openapi がAPI Center にあることを前提としています。 そうでない場合は、「API Center に API を追加する」を参照してください。

#! /bin/bash
az apic api definition import-specification \
    --resource-group myResourceGroup --service myAPICenter \
    --api-id my-api --version-id v1-0-0 \
    --definition-id openapi --format "link" --value '$link' \
    --specification '{"name":"openapi","version":"3.0.2"}'
# PowerShell syntax
az apic api definition import-specification `
    --resource-group myResourceGroup --service myAPICenter `
    --api-id my-api --version-id v1-0-0 `
    --definition-id openapi --format "link" --value '$link' `
    --specification '{"name":"openapi","version":"3.0.2"}'

オプション 2: API Management インスタンスから直接 API をインポートする

az apic service import-from-apim コマンドを使用して API Management インスタンスから API Center に API をインポートする手順を次に示します。 このコマンドは、API Management から API Center に複数の API をインポートする場合に便利ですが、単一の API をインポートすることもできます。

az apic service import-from-apim を使用して API Management インスタンスから API Center に API を追加すると、次の処理が自動的に行われます。

  • 各 API の バージョン定義配置情報が API Center にコピーされます。
  • API は、API Center でシステムにより生成された API 名を受け取ります。 表示名 (タイトル) は、API Management のものが保持されます。
  • API のライフサイクル ステージは [デザイン] に設定されます。
  • Azure API Management が環境として追加されます。

API Center にマネージド ID を追加する

このシナリオでは、API Center はマネージド ID を使用 して API Management インスタンス内の API にアクセスします。 必要に応じて、1 つのシステム割り当て、または 1 つ以上のユーザー割り当てマネージド ID のどちらかを構成します。

次の例では、Azure portal または Azure CLI を使って、システム割り当てマネージド ID を構成する方法を示します。 大まかに言うと、構成手順はユーザー割り当てマネージド ID の場合も同様です。

  1. ポータルで、API Center に移動します。
  2. 左側のメニューの [セキュリティ] で、[マネージド ID] を選択します。
  3. [システム割り当て済み] を選択し、状態を [オン] に設定します。
  4. [保存] を選択します。

API Management サービス閲覧者ロールをマネージド ID に割り当てる

API のインポートを許可するには、API Management インスタンスで API Center のマネージド ID に API Management サービス閲覧者ロールを割り当てます。 Azure portal か、Azure CLI を使用できます。

  1. portal で、API Management インスタンスに移動します。
  2. 左側のメニューで [アクセス制御 (IAM)] を選択します。
  3. [ロールの割り当ての追加] を選択します。
  4. [ロールの割り当ての追加] ペインで、次のように値を設定します。
    1. [ロール] のタブで、[API Management サービス閲覧者] を選択します。
    2. [メンバー] タブの [アクセスの割り当て先] で、[マネージド ID]>[+ メンバーの選択] を選びます。
    3. [マネージド ID の 選択] ページで、前のセクションで追加した API Center のシステム割り当てマネージド ID を選択します。 [選択] をクリックします。
    4. [レビューと割り当て] を選択します。

API Management から API をインポートする

az apic service import-from-apim コマンドを使用して、API Management インスタンスから API Center に 1 つ以上の API をインポートします。

Note

  • このコマンドは、API Center で構成されたマネージド ID で、API Management インスタンスに対する読み取りアクセス許可を持つものに依存します。 マネージド ID を追加または構成していない場合は、この記事の「API Center でマネージド ID を追加する」を参照してください。

  • API Center に複数のマネージド ID がある場合、コマンドはまずシステム割り当て ID を検索します。 見つからない場合は、リスト内の最初のユーザー割り当て ID を選択します。

API Management インスタンスからすべての API をインポートする

ワイルドカード (*) を使用して、API Management インスタンスのすべての API を指定します。

  1. az apim show コマンドを使用して、API Management インスタンスのリソース ID を取得します。

    #! /bin/bash
    apimID=$(az apim show --name <apim-name> --resource-group <resource-group-name> --query id --output tsv)
    
    # PowerShell syntax
    $apimID=$(az apim show --name <apim-name> --resource-group <resource-group-name> --query id --output tsv)
    
  2. az apic service import-from-apim コマンドを使用して API をインポートします。 自分の API Center とリソース グループの名前に置き換え、* を使用して API Management インスタンスからすべての API を指定します。

    az apic service import-from-apim --service-name <api-center-name> --resource-group <resource-group-name> --source-resource-ids $apimID/apis/*  
    

    Note

    API Management インスタンスに多数の API がある場合は、API Center へのインポートに時間がかかる場合があります。

API Management インスタンスから特定の API をインポートする

API Management インスタンスからインポートする API を、その名前を使用して指定します。

  1. az apim show コマンドを使用して、API Management インスタンスのリソース ID を取得します。

    #! /bin/bash
    apimID=$(az apim show --name <apim-name> --resource-group <resource-group-name> --query id --output tsv)
    
    # PowerShell syntax
    $apimID=$(az apim show --name <apim-name> --resource-group <resource-group-name> --query id --output tsv)
    
  2. az apic service import-from-apim コマンドを使用して API をインポートします。 自分の API Center とリソース グループの名前に置き換え、API Management インスタンスの API 名を指定します。

    az apic service import-from-apim --service-name <api-center-name> --resource-group <resource-group-name> --source-resource-ids $apimID/apis/<api-name>    
    

    Note

    表示名ではなく、API Management インスタンスでの API リソース名を使用して <api-name> を指定します。 たとえば、Petstore API の代わりに petstore-api を使用します。

API Management から API をインポートした後、API Center でインポートされた API を表示および管理できます。