Git を使用して API Management サービス構成を保存および構成する方法How to save and configure your API Management service configuration using Git

各 API Management サービス インスタンスは、サービス インスタンスの構成とメタデータに関する情報が格納されている構成データベースを保持します。Each API Management service instance maintains a configuration database that contains information about the configuration and metadata for the service instance. サービス インスタンスへの変更は、Azure Portal の設定変更、PowerShell コマンドレットの使用、または REST API 呼び出しによって行うことができます。Changes can be made to the service instance by changing a setting in the Azure portal, using a PowerShell cmdlet, or making a REST API call. これらの方法のほか、Git を使用してサービス インスタンスの構成を管理することもできます。Git を使用すると、次のようなサービス管理のシナリオが可能になります。In addition to these methods, you can also manage your service instance configuration using Git, enabling service management scenarios such as:

  • 構成のバージョン管理 - サービス構成のさまざまなバージョンをダウンロードして保存するConfiguration versioning - download and store different versions of your service configuration
  • 構成の一括変更 - ローカル リポジトリ内のサービス構成の複数の部分を変更し、1 回の操作で変更をサーバーに返して統合するBulk configuration changes - make changes to multiple parts of your service configuration in your local repository and integrate the changes back to the server with a single operation
  • 慣れ親しんだ Git のツールチェーンとワークフロー - 既に使い慣れた Git ツールとワークフローを使用するFamiliar Git toolchain and workflow - use the Git tooling and workflows that you are already familiar with

次の図は、API Management サービス インスタンスを構成するためのさまざまな方法の概要を示しています。The following diagram shows an overview of the different ways to configure your API Management service instance.

Git configure

Azure Portal、PowerShell コマンドレット、または REST API を使用してサービスに変更を加える場合は、図の右側に示されているように、サービス構成データベースの管理に https://{name}.management.azure-api.net エンドポイントを使用します。When you make changes to your service using the Azure portal, PowerShell cmdlets, or the REST API, you are managing your service configuration database using the https://{name}.management.azure-api.net endpoint, as shown on the right side of the diagram. 図の左側では、Git を使用してサービス構成を管理する方法を示しています。この場合、https://{name}.scm.azure-api.net にあるご利用のサービスの Git リポジトリを使用します。The left side of the diagram illustrates how you can manage your service configuration using Git and Git repository for your service located at https://{name}.scm.azure-api.net.

Git を使用して API Management サービス インスタンスを管理する手順の概要は次のとおりです。The following steps provide an overview of managing your API Management service instance using Git.

  1. サービスの Git 構成にアクセスするAccess Git configuration in your service
  2. サービス構成データベースを Git リポジトリに保存するSave your service configuration database to your Git repository
  3. Git リポジトリをローカル コンピューターに複製するClone the Git repo to your local machine
  4. 最新のリポジトリをローカル コンピューターにプルし、変更をコミットしてリポジトリにプッシュするPull the latest repo down to your local machine, and commit and push changes back to your repo
  5. リポジトリからサービス構成データベースに変更をデプロイするDeploy the changes from your repo into your service configuration database

この記事では、Git を有効にして使用し、サービス構成を管理する方法について説明します。また、Git リポジトリ内のファイルとフォルダーに関するリファレンス情報も提供します。This article describes how to enable and use Git to manage your service configuration and provides a reference for the files and folders in the Git repository.

可用性Availability

重要

この機能は、API Management の PremiumStandardBasicDeveloper レベルで使用できます。This feature is available in the Premium, Standard, Basic and Developer tiers of API Management.

サービスの Git 構成にアクセスするAccess Git configuration in your service

Git 構成設定を表示して構成するには、 [セキュリティ] メニューをクリックし、 [構成リポジトリ] タブに移動します。To view and configure your Git configuration settings, you can click the Security menu and navigate to the Configuration repository tab.

Enable GIT

重要

名前付きの値として定義されていないシークレットはすべて、リポジトリに格納され、Git アクセスを無効にしてから再度有効にするまで履歴に残ります。Any secrets that are not defined as Named Values will be stored in the repository and will remain in its history until you disable and re-enable Git access. 名前付きの値は、すべての API 構成とポリシーの定数文字列値 (シークレットなど) を管理するための安全な場所を提供します。そのため、定数文字列値をポリシー ステートメントに直接格納する必要がありません。Named Values provide a secure place to manage constant string values, including secrets, across all API configuration and policies, so you don't have to store them directly in your policy statements. 詳細については、「Azure API Management ポリシーでの名前付きの値の使用方法」を参照してください。For more information, see How to use Named Values in Azure API Management policies.

REST API を使用して Git アクセスを有効または無効にする方法については、「 Enable or disable Git access using the REST API (REST API を使用して Git アクセスを有効または無効にする)」を参照してください。For information on enabling or disabling Git access using the REST API, see Enable or disable Git access using the REST API.

サービス構成を Git リポジトリに保存するにはTo save the service configuration to the Git repository

まず、リポジトリを複製する前に、サービス構成の現在の状態をリポジトリに保存します。The first step before cloning the repository is to save the current state of the service configuration to the repository. [リポジトリに保存する] をクリックします。Click Save to repository.

必要に応じて確認画面で変更を行い、 [OK] をクリックして保存します。Make any desired changes on the confirmation screen and click Ok to save.

しばらくすると構成が保存されます。また、最後に構成を変更した日時、サービス構成とリポジトリの間で最後に行われた同期の日時など、リポジトリの構成状態が表示されます。After a few moments the configuration is saved, and the configuration status of the repository is displayed, including the date and time of the last configuration change and the last synchronization between the service configuration and the repository.

構成がリポジトリに保存されたら、そのリポジトリを複製できます。Once the configuration is saved to the repository, it can be cloned.

REST API を使用してこの操作を実行する方法については、「 Commit configuration snapshot using the REST API (REST API を使用して構成スナップショットをコミットする)」を参照してください。For information on performing this operation using the REST API, see Commit configuration snapshot using the REST API.

ローカル コンピューターにリポジトリを複製するにはTo clone the repository to your local machine

リポジトリを複製するには、リポジトリの URL、ユーザー名、パスワードが必要です。To clone a repository, you need the URL to your repository, a user name, and a password. ユーザー名と他の資格情報を取得するには、ページの上部にある [アクセス資格情報] をクリックします。To get user name and other credentials, click on Access credentials near the top of the page.

パスワードを生成するには、希望する有効期限の日時を [有効期限] に設定してから、 [生成] をクリックします。To generate a password, first ensure that the Expiry is set to the desired expiration date and time, and then click Generate.

重要

このパスワードを書き留めておいてください。Make a note of this password. このページから移動すると、パスワードが再度表示されることはありません。Once you leave this page the password will not be displayed again.

次の例では Git for Windows の Git Bash ツールを使用していますが、使い慣れた Git ツールも使用できます。The following examples use the Git Bash tool from Git for Windows but you can use any Git tool that you are familiar with.

Git ツールを目的のフォルダーで開き、次のコマンドを実行して、Git リポジトリをローカル マシンに複製します (コマンドは Azure Portal で提供されます)。Open your Git tool in the desired folder and run the following command to clone the git repository to your local machine, using the command provided by the Azure portal.

git clone https://{name}.scm.azure-api.net/

入力を求められたら、ユーザー名とパスワードを入力します。Provide the user name and password when prompted.

エラーが発生する場合は、次の例のように、 git clone コマンドを変更してユーザー名とパスワードを含めてみてください。If you receive any errors, try modifying your git clone command to include the user name and password, as shown in the following example.

git clone https://username:password@{name}.scm.azure-api.net/

それでもエラーが発生する場合は、コマンドのパスワード部分をエンコードする URL を試してください。If this provides an error, try URL encoding the password portion of the command. これを簡単に行う 1 つの方法では、Visual Studio を開き、 [イミディエイト ウィンドウ] で次のコマンドを発行します。One quick way to do this is to open Visual Studio, and issue the following command in the Immediate Window. [イミディエイト ウィンドウ] を開くには、Visual Studio で任意のソリューションまたはプロジェクトを開き (または新しく空のコンソール アプリケーションを作成し)、 [デバッグ] メニューから [ウィンドウ][イミディエイト] の順に選択します。To open the Immediate Window, open any solution or project in Visual Studio (or create a new empty console application), and choose Windows, Immediate from the Debug menu.

?System.Net.WebUtility.UrlEncode("password from the Azure portal")

エンコードされたパスワードをユーザー名とリポジトリの場所と共に使用して Git コマンドを作成します。Use the encoded password along with your user name and repository location to construct the git command.

git clone https://username:url encoded password@{name}.scm.azure-api.net/

リポジトリの複製が完了したら、ローカル ファイル システムのリポジトリを表示して操作できます。Once the repository is cloned, you can view and work with it in your local file system. 詳細については、「 ローカル Git リポジトリのファイルとフォルダーの構造のリファレンス」を参照してください。For more information, see File and folder structure reference of local Git repository.

最新のサービス インスタンス構成を使用してローカル リポジトリを更新するにはTo update your local repository with the most current service instance configuration

Azure Portal または REST API で API Management サービス インスタンスに変更を加える場合、これらの変更をリポジトリに保存しておく必要があります。その後、最新の変更を使用してローカル リポジトリを更新できます。If you make changes to your API Management service instance in the Azure portal or using the REST API, you must save these changes to the repository before you can update your local repository with the latest changes. これを行うには、Azure Portal の [構成リポジトリ] タブで [構成をリポジトリに保存する] をクリックし、ローカル リポジトリで次のコマンドを発行します。To do this, click Save configuration to repository on the Configuration repository tab in the Azure portal, and then issue the following command in your local repository.

git pull

git pull を実行する前に、ローカル リポジトリのフォルダーに移動してください。Before running git pull ensure that you are in the folder for your local repository. git clone コマンドを完了した直後に、次のようなコマンドを使用して、ディレクトリをリポジトリに変更する必要があります。If you have just completed the git clone command, then you must change the directory to your repo by running a command like the following.

cd {name}.scm.azure-api.net/

ローカル リポジトリからサーバー リポジトリに変更をプッシュするにはTo push changes from your local repo to the server repo

ローカル リポジトリからサーバー リポジトリに変更をプッシュするには、変更をコミットした後、サーバー リポジトリにプッシュする必要があります。To push changes from your local repository to the server repository, you must commit your changes and then push them to the server repository. 変更をコミットするには、Git コマンド ツールを開き、ローカル リポジトリのディレクトリに切り替えて、次のコマンドを発行します。To commit your changes, open your Git command tool, switch to the directory of your local repository, and issue the following commands.

git add --all
git commit -m "Description of your changes"

コミットをすべてサーバーにプッシュするには、次のコマンドを実行します。To push all of the commits to the server, run the following command.

git push

API Management サービス インスタンスにサービス構成の変更をデプロイするにはTo deploy any service configuration changes to the API Management service instance

ローカルの変更をコミットし、サーバー リポジトリにプッシュしたら、これらの変更を API Management サービス インスタンスにデプロイできます。Once your local changes are committed and pushed to the server repository, you can deploy them to your API Management service instance.

REST API を使用してこの操作を実行する方法については、「 Deploy Git changes to configuration database using the REST API (REST API を使用して構成データベースに Git の変更をデプロイする)」を参照してください。For information on performing this operation using the REST API, see Deploy Git changes to configuration database using the REST API.

ローカル Git リポジトリのファイルとフォルダーの構造のリファレンスFile and folder structure reference of local Git repository

ローカル Git リポジトリのファイルとフォルダーには、サービス インスタンスに関する構成情報が含まれています。The files and folders in the local git repository contain the configuration information about the service instance.

ItemItem 説明Description
api-management ルート フォルダーroot api-management folder サービス インスタンスの最上位の構成が含まれていますContains top-level configuration for the service instance
apis フォルダーapis folder サービス インスタンス内の API の構成が含まれていますContains the configuration for the apis in the service instance
groups フォルダーgroups folder サービス インスタンス内のグループの構成が含まれていますContains the configuration for the groups in the service instance
policies フォルダーpolicies folder サービス インスタンス内のポリシーが含まれていますContains the policies in the service instance
portalStyles フォルダーportalStyles folder サービス インスタンス内の開発者ポータルのカスタマイズに関する構成が含まれていますContains the configuration for the developer portal customizations in the service instance
products フォルダーproducts folder サービス インスタンス内の製品の構成が含まれていますContains the configuration for the products in the service instance
templates フォルダーtemplates folder サービス インスタンス内の電子メール テンプレートの構成が含まれていますContains the configuration for the email templates in the service instance

各フォルダーには 1 つ以上のファイルを含めることができ、場合によっては 1 つ以上のフォルダーも含めることができます。たとえば、各 API、製品、またはグループに 1 つのフォルダーを含めることができます。Each folder can contain one or more files, and in some cases one or more folders, for example a folder for each API, product, or group. 各フォルダー内のファイルは、フォルダー名で示されるエンティティの種類に固有です。The files within each folder are specific for the entity type described by the folder name.

ファイルの種類File type 目的Purpose
jsonjson 各エンティティの構成情報Configuration information about the respective entity
htmlhtml エンティティについての説明 (多くの場合、開発者ポータルに表示されます)Descriptions about the entity, often displayed in the developer portal
xmlxml ポリシー ステートメントPolicy statements
csscss 開発者ポータルのカスタマイズのスタイル シートStyle sheets for developer portal customization

これらのファイルは、ローカル ファイル システム上で作成、削除、編集、管理できます。また、変更は API Management サービス インスタンスにデプロイして戻すことができます。These files can be created, deleted, edited, and managed on your local file system, and the changes deployed back to your API Management service instance.

注意

次のエンティティは、Git リポジトリに含まれないため、Git を使用して構成することはできません。The following entities are not contained in the Git repository and cannot be configured using Git.

api-management ルート フォルダーRoot api-management folder

api-management ルート フォルダーには、configuration.json ファイルがあります。このファイルには、サービス インスタンスに関する最上位の情報が次の形式で含まれています。The root api-management folder contains a configuration.json file that contains top-level information about the service instance in the following format.

{
  "settings": {
    "RegistrationEnabled": "True",
    "UserRegistrationTerms": null,
    "UserRegistrationTermsEnabled": "False",
    "UserRegistrationTermsConsentRequired": "False",
    "DelegationEnabled": "False",
    "DelegationUrl": "",
    "DelegatedSubscriptionEnabled": "False",
    "DelegationValidationKey": "",
    "RequireUserSigninEnabled": "false"
  },
  "$ref-policy": "api-management/policies/global.xml"
}

最初の 4 つの設定 (RegistrationEnabledUserRegistrationTermsUserRegistrationTermsEnabledUserRegistrationTermsConsentRequired) は、 [セキュリティ] セクションの [ID] タブにある次の設定に対応します。The first four settings (RegistrationEnabled, UserRegistrationTerms, UserRegistrationTermsEnabled, and UserRegistrationTermsConsentRequired) map to the following settings on the Identities tab in the Security section.

ID の設定Identity setting 対応する設定Maps to
RegistrationEnabledRegistrationEnabled ユーザー名とパスワード ID プロバイダーの存在Presence of Username and password identity provider
UserRegistrationTermsUserRegistrationTerms [ユーザー サインアップの使用条件] ボックスTerms of use on user signup textbox
UserRegistrationTermsEnabledUserRegistrationTermsEnabled [サインアップ ページに使用条件を表示する] チェック ボックスShow terms of use on signup page checkbox
UserRegistrationTermsConsentRequiredUserRegistrationTermsConsentRequired [同意を要求する] チェック ボックスRequire consent checkbox
RequireUserSigninEnabledRequireUserSigninEnabled [匿名ユーザーをサインイン ページにリダイレクトする] チェック ボックスRedirect anonymous users to sign-in page checkbox

その次の 4 つの設定 (DelegationEnabledDelegationUrlDelegatedSubscriptionEnabledDelegationValidationKey) は、 [セキュリティ] セクションの [委任] タブにある次の設定に対応します。The next four settings (DelegationEnabled, DelegationUrl, DelegatedSubscriptionEnabled, and DelegationValidationKey) map to the following settings on the Delegation tab in the Security section.

委任の設定Delegation setting 対応する設定Maps to
DelegationEnabledDelegationEnabled [サインインとサインアップを委任する] チェック ボックスDelegate sign-in & sign-up checkbox
DelegationUrlDelegationUrl [委任エンドポイント URL] ボックスDelegation endpoint URL textbox
DelegatedSubscriptionEnabledDelegatedSubscriptionEnabled [製品のサブスクリプションを委任する] チェック ボックスDelegate product subscription checkbox
DelegationValidationKeyDelegationValidationKey [検証キーを委任する] ボックスDelegate Validation Key textbox

最後の設定 $ref-policyは、サービス インスタンスのグローバル ポリシー ステートメントのファイルに対応します。The final setting, $ref-policy, maps to the global policy statements file for the service instance.

apis フォルダーapis folder

apis フォルダーには、サービス インスタンス内の各 API のフォルダーがあります。API のフォルダーには次の項目が含まれます。The apis folder contains a folder for each API in the service instance, which contains the following items.

  • apis\<api name>\configuration.json - これは API の構成で、バックエンド サービス URL と操作に関する情報が含まれています。apis\<api name>\configuration.json - this is the configuration for the API and contains information about the backend service URL and the operations. この情報は、特定の API の取得application/json 形式で export=true を指定して呼び出した場合に返される情報と同じです。This is the same information that would be returned if you were to call Get a specific API with export=true in application/json format.
  • apis\<api name>\api.description.html - これは API の説明で、API エンティティdescription プロパティに対応します。apis\<api name>\api.description.html - this is the description of the API and corresponds to the description property of the API entity.
  • apis\<api name>\operations\ - このフォルダーには、API での操作に対応する <operation name>.description.html ファイルが含まれています。apis\<api name>\operations\ - this folder contains <operation name>.description.html files that map to the operations in the API. 各ファイルには、API での 1 つの操作の説明が含まれています。この操作は、REST API の操作エンティティdescription プロパティに対応します。Each file contains the description of a single operation in the API, which maps to the description property of the operation entity in the REST API.

groups フォルダーgroups folder

groups フォルダーには、サービス インスタンスで定義された各グループのフォルダーが含まれています。The groups folder contains a folder for each group defined in the service instance.

  • groups\<group name>\configuration.json - これはグループの構成です。groups\<group name>\configuration.json - this is the configuration for the group. 特定のグループの取得 操作を呼び出した場合に返される情報と同じです。This is the same information that would be returned if you were to call the Get a specific group operation.
  • groups\<group name>\description.html - これはグループの説明で、グループ エンティティdescription プロパティに対応します。groups\<group name>\description.html - this is the description of the group and corresponds to the description property of the group entity.

policies フォルダーpolicies folder

policies フォルダーには、サービス インスタンスのポリシー ステートメントが含まれています。The policies folder contains the policy statements for your service instance.

  • policies\global.xml - サービス インスタンスのグローバル スコープで定義されたポリシーが含まれています。policies\global.xml - contains policies defined at global scope for your service instance.
  • policies\apis\<api name>\ - API スコープで定義されたポリシーがある場合は、このフォルダーに含まれます。policies\apis\<api name>\ - if you have any policies defined at API scope, they are contained in this folder.
  • policies\apis\<api name>\<operation name>\ フォルダー - 操作スコープで定義されたポリシーがある場合は、このフォルダー内の <operation name>.xml ファイルに含まれます。これらのファイルは、各操作のポリシー ステートメントに対応します。policies\apis\<api name>\<operation name>\ folder - if you have any policies defined at operation scope, they are contained in this folder in <operation name>.xml files that map to the policy statements for each operation.
  • policies\products\ - 製品スコープで定義されたポリシーがある場合は、このフォルダーに含まれます。このフォルダーには、各製品のポリシー ステートメントに対応する <product name>.xml ファイルが含まれています。policies\products\ - if you have any policies defined at product scope, they are contained in this folder, which contains <product name>.xml files that map to the policy statements for each product.

portalStyles フォルダーportalStyles folder

portalStyles フォルダーには、開発者ポータルでのサービス インスタンスのカスタマイズに関する構成とスタイル シートが含まれています。The portalStyles folder contains configuration and style sheets for developer portal customizations for the service instance.

  • portalStyles\configuration.json - 開発者ポータルで使用されるスタイル シートの名前が含まれています。portalStyles\configuration.json - contains the names of the style sheets used by the developer portal
  • portalStyles\<style name>.css - 各 <style name>.css ファイルには、開発者ポータル用のスタイルが含まれています (既定では Preview.cssProduction.css)。portalStyles\<style name>.css - each <style name>.css file contains styles for the developer portal (Preview.css and Production.css by default).

products フォルダーproducts folder

products フォルダーには、サービス インスタンスで定義された各製品のフォルダーが含まれています。The products folder contains a folder for each product defined in the service instance.

  • products\<product name>\configuration.json - これは製品の構成です。products\<product name>\configuration.json - this is the configuration for the product. 特定の製品の取得 操作を呼び出した場合に返される情報と同じです。This is the same information that would be returned if you were to call the Get a specific product operation.
  • products\<product name>\product.description.html - これは製品の説明で、REST API の製品エンティティdescription プロパティに対応します。products\<product name>\product.description.html - this is the description of the product and corresponds to the description property of the product entity in the REST API.

テンプレートtemplates

templates フォルダーには、サービス インスタンスの 電子メール テンプレート の構成が含まれています。The templates folder contains configuration for the email templates of the service instance.

  • <template name>\configuration.json - これは電子メール テンプレートの構成です。<template name>\configuration.json - this is the configuration for the email template.
  • <template name>\body.html - これは電子メール テンプレートの本文です。<template name>\body.html - this is the body of the email template.

次の手順Next steps

サービス インスタンスの他の管理方法については、以下を参照してください。For information on other ways to manage your service instance, see: