適用対象: 開発者 |基本 |標準 |プレミアム
このチュートリアルでは、 API Management 開発者ポータルを自己ホストする方法について説明します。 セルフホスティングは、開発者ポータルの機能を 拡張 するためのいくつかのオプションの 1 つです。 たとえば、API Management インスタンスの複数のポータルをさまざまな機能でセルフホストできます。 ポータルを自己ホストすると、そのメンテナンス担当者になり、アップグレードの責任を負います。
Von Bedeutung
開発者ポータルのコードベースのコアを変更する必要がある場合にのみ、開発者ポータルを自己ホストすることを検討してください。 このオプションには、次のような高度な構成が必要です。
- ホスティング プラットフォームへのデプロイ(必要に応じて、可用性とパフォーマンスを向上させるために CDN などのソリューションによって前面に配置される)
- ホスティング インフラストラクチャの保守と管理
- セキュリティ パッチを含む手動更新プログラム。コードベースをアップグレードするときにコードの競合を解決する必要がある場合があります
注
セルフホステッド ポータルでは、マネージド開発者ポータルで使用できる可視性とアクセス制御はサポートされていません。
マネージド ポータルでメディア ファイルを既にアップロードまたは変更している場合は、この記事で後述 する「管理対象からセルフホステッドへの移行」を参照してください。
[前提条件]
ローカル開発環境を設定するには、次のものが必要です。
- API Management サービス インスタンス。 お持ちでない場合は、「 クイック スタート - Azure API Management インスタンスを作成する」を参照してください。
- 静的 Web サイト機能が有効になっている Azure ストレージ アカウント。 ストレージ アカウントの作成を参照してください。
- マシン上の Git。 この Git チュートリアルに従ってインストールします。
- Node.js (LTS バージョン、
v10.15.0
以降) と npm をコンピューターにインストールします。 Node.js と npm のダウンロードとインストールを参照してください。 - Azure CLI。 Azure CLI のインストール手順に従います。
手順 1: ローカル環境を設定する
ローカル環境を設定するには、リポジトリを複製し、開発者ポータルの最新リリースに切り替えて、npm パッケージをインストールする必要があります。
GitHub から api-management-developer-portal リポジトリを複製します。
git clone https://github.com/Azure/api-management-developer-portal.git
リポジトリのローカル コピーに移動します。
cd api-management-developer-portal
ポータルの最新リリースを確認してください。
次のコードを実行する前に、リポジトリの [リリース] セクション で現在のリリース タグを確認し、
<current-release-tag>
値を最新のリリース タグに置き換えます。git checkout <current-release-tag>
使用可能な npm パッケージをインストールします。
npm install
ヒント
常に 最新のポータル リリース を使用し、フォークされたポータル up-to-date のままにします。 ソフトウェア エンジニアは、毎日の開発のために、このリポジトリの master
ブランチを使用します。 これは、ソフトウェアの不安定なバージョンを持っています.
手順 2: JSON ファイル、静的 Web サイト、および CORS 設定を構成する
開発者ポータルでは、コンテンツを管理するために API Management REST API が必要です。
config.design.json ファイル
src
フォルダーに移動し、config.design.json
ファイルを開きます。
{
"environment": "development",
"managementApiUrl": "https://<service-name>.management.azure-api.net",
"managementApiAccessToken": "SharedAccessSignature ...",
"backendUrl": "https://<service-name>.developer.azure-api.net",
"useHipCaptcha": false,
"integration": {
"googleFonts": {
"apiKey": "..."
}
}
}
ファイルを構成します。
managementApiUrl
値で、<service-name>
を API Management インスタンスの名前に置き換えます。 カスタム ドメインを構成した場合は、代わりにカスタム ドメインを使用します (たとえば、https://management.contoso.com
)。{ ... "managementApiUrl": "https://contoso-api.management.azure-api.net" ...
SAS トークンを手動で作成 して、API Management インスタンスへの直接 REST API アクセスを有効にします。
生成されたトークンをコピーし、
managementApiAccessToken
値として貼り付けます。backendUrl
値で、<service-name>
を API Management インスタンスの名前に置き換えます。 カスタム ドメインを構成した場合は、代わりにカスタム ドメインを使用します (たとえば、https://portal.contoso.com
)。{ ... "backendUrl": "https://contoso-api.developer.azure-api.net" ...
開発者ポータルで CAPTCHA を有効にする場合は、
"useHipCaptcha": true
設定します。 開発者ポータル バックエンドの CORS 設定を必ず構成してください。integration
の [googleFonts
] で、必要に応じてapiKey
を、Web フォント開発者 API へのアクセスを許可する Google API キーに設定します。 このキーは、開発者ポータル エディターの [スタイル] セクションで Google フォントを追加する場合にのみ必要です。まだキーがない場合は、Google Cloud コンソールを使用してキーを構成できます。 次の手順に従います。
- Google Cloud コンソールを開きます。
- Web フォント開発者 API が有効になっているかどうかを確認します。 有効になっていない場合は、 有効にします。
- [ 資格情報の作成>API キー] を選択します。
- 開いているダイアログで、生成されたキーをコピーし、
apiKey
ファイル内のconfig.design.json
の値として貼り付けます。 - [ API キーの編集] を選択してキー エディターを開きます。
- エディターの [ API の制限] で、[ キーの制限] を選択します。 ドロップダウンで、[ Web フォント開発者 API] を選択します。
- 保存 を選択します。
config.publish.json ファイル
src
フォルダーに移動し、config.publish.json
ファイルを開きます。
{
"environment": "publishing",
"managementApiUrl": "https://<service-name>.management.azure-api.net",
"managementApiAccessToken": "SharedAccessSignature...",
"useHipCaptcha": false
}
ファイルを構成します。
前の構成ファイルの
managementApiUrl
とmanagementApiAccessToken
の値をコピーして貼り付けます。開発者ポータルで CAPTCHA を有効にする場合は、
"useHipCaptcha": true
設定します。 開発者ポータル バックエンドの CORS 設定を必ず構成してください。
config.runtime.json ファイル
src
フォルダーに移動し、config.runtime.json
ファイルを開きます。
{
"environment": "runtime",
"managementApiUrl": "https://<service-name>.management.azure-api.net",
"backendUrl": "https://<service-name>.developer.azure-api.net"
}
ファイルを構成します。
前の構成ファイルの
managementApiUrl
値をコピーして貼り付けます。backendUrl
値で、<service-name>
を API Management インスタンスの名前に置き換えます。 カスタム ドメインを構成した場合は、代わりにカスタム ドメインを使用します (例:https://portal.contoso.com
)。{ ... "backendUrl": "https://contoso-api.developer.azure-api.net" ...
静的 Web サイトを構成する
インデックスページとエラー ページへのルートを指定して、ストレージ アカウントで 静的 Web サイト 機能を構成します。
Azure portal でストレージ アカウントに移動し、左側のメニューから [静的 Web サイト ] を選択します。
[ 静的な Web サイト ] ページで、[ 有効] を選択します。
[ インデックス ドキュメント名 ] フィールドに「 index.html」と入力します。
[ エラードキュメントパス ]フィールドに「 404/index.html」と入力します。
保存 を選択します。
ストレージ アカウントの CORS 設定を構成する
ストレージ アカウントのクロスオリジン リソース共有 (CORS) 設定を構成します。
Azure portal でストレージ アカウントに移動し、左側のメニューから CORS を選択します。
[BLOB サービス] タブで、次の規則を構成します。
規則 価値 許可されるオリジン * 使用できるメソッド すべての HTTP 動詞を選択します。 許可されるヘッダー * 公開されるヘッダー * 最大年齢 0 保存 を選択します。
開発者ポータル バックエンドの CORS 設定を構成する
開発者ポータル バックエンドの CORS 設定を構成して、セルフホステッド開発者ポータルから送信された要求を許可します。 セルフホステッド開発者ポータルは、開発者ポータルのバックエンド エンドポイント (ポータル構成ファイルの backendUrl
で設定) に依存して、次のようないくつかの機能を有効にします。
- CAPTCHA 検証
- テスト コンソールでの OAuth 2.0 承認
- ユーザー認証と製品サブスクリプションの委任
CORS 設定を追加するには:
- Azure portal で API Management インスタンスに移動し、左側のメニューから [開発者ポータル>ポータル設定 ] を選択します。
- [ セルフホステッド ポータルの構成 ] タブで、1 つ以上の Origin ドメイン値を追加します。 例えば:
- セルフホステッド ポータルがホストされているドメイン (例:
https://www.contoso.com
-
localhost
該当する場合には、ローカル開発用として、http://localhost:8080
やhttps://localhost:8080
- セルフホステッド ポータルがホストされているドメイン (例:
- 保存 を選択します。
手順 3: ポータルを実行する
これで、開発モードでローカル ポータル インスタンスをビルドして実行できます。 開発モードでは、すべての最適化がオフになり、ソース マップがオンになります。
次のコマンドを実行します。
npm start
しばらくすると、既定のブラウザーがローカルの開発者ポータル インスタンスと共に自動的に開きます。 既定のアドレスは http://localhost:8080
ですが、 8080
が既に占有されている場合はポートが変更される可能性があります。 プロジェクトのコードベースを変更すると、リビルドがトリガーされ、ブラウザー ウィンドウが更新されます。
手順 4: ビジュアル エディターを使用して編集する
ビジュアル エディターを使用して、次のタスクを実行します。
- ポータルをカスタマイズする
- 作成者コンテンツ
- Web サイトの構造を整理する
- 外観のスタイルを設定する
「チュートリアル: 開発者ポータルにアクセスしてカスタマイズする」を参照してください。 管理ユーザー インターフェイスの基本について説明し、既定のコンテンツに対する推奨される変更の一覧を示します。 すべての変更をローカル環境に保存し、 Ctrl キーを押しながら C キーを押して閉じます。
手順 5: ローカルに発行する
ポータル データは、厳密に型指定されたオブジェクトの形式で生成されます。 次のコマンドは、それらを静的ファイルに変換し、出力を ./dist/website
ディレクトリに配置します。
npm run publish
手順 6: 静的ファイルを BLOB にアップロードする
Azure CLI を使用してローカルで生成された静的ファイルを BLOB にアップロードし、訪問者がアクセスできることを確認します。
Windows コマンド プロンプト、PowerShell、またはその他のコマンド シェルを開きます。
次の Azure CLI コマンドを実行します。
<account-connection-string>
をストレージ アカウントの接続文字列に置き換えます。 ストレージ アカウントの [アクセス キー ] セクションから取得できます。az storage blob upload-batch --source dist/website \ --destination '$web' \ --connection-string <account-connection-string>
手順 7: Web サイトに移動する
Web サイトは、Azure Storage のプロパティ (静的 Web サイトのプライマリ エンドポイント) で指定されたホスト名の下に存在するようになりました。
手順 8: API Management 通知テンプレートを変更する
API Management 通知テンプレートの開発者ポータルの URL を、セルフホステッド ポータルを指すように置き換えます。 Azure API Management で通知と電子メール テンプレートを構成する方法を参照してください。
特に、既定のテンプレートに対して次の変更を実行します。
注
次の 更新 されたセクションの値は、 https://portal.contoso.com/でポータルをホストしていることを前提としています。
電子メールの変更の確認
電子メール変更確認通知テンプレートで開発者ポータルの URL を更新します。
元のコンテンツ
<a id="confirmUrl" href="$ConfirmUrl" style="text-decoration:none">
<strong>$ConfirmUrl</strong></a>
更新
<a id="confirmUrl" href="https://portal.contoso.com/signup?$ConfirmQuery" style="text-decoration:none">
<strong>https://portal.contoso.com/signup?$ConfirmQuery</strong></a>
新しい開発者アカウントの確認
新しい開発者アカウントの確認通知テンプレートで開発者ポータルの URL を更新します。
元のコンテンツ
<a id="confirmUrl" href="$ConfirmUrl" style="text-decoration:none">
<strong>$ConfirmUrl</strong></a>
更新
<a id="confirmUrl" href="https://portal.contoso.com/signup?$ConfirmQuery" style="text-decoration:none">
<strong>https://portal.contoso.com/signup?$ConfirmQuery</strong></a>
ユーザーを招待
ユーザーの招待通知テンプレートで開発者ポータルの URL を更新します。
元のコンテンツ
<a href="$ConfirmUrl">$ConfirmUrl</a>
更新
<a href="https://portal.contoso.com/confirm-v2/identities/basic/invite?$ConfirmQuery">https://portal.contoso.com/confirm-v2/identities/basic/invite?$ConfirmQuery</a>
アクティブ化された新しいサブスクリプション
新しいサブスクリプションがアクティブ化された通知テンプレートで、開発者ポータルの URL を更新します。
元のコンテンツ
Thank you for subscribing to the <a href="http://$DevPortalUrl/products/$ProdId"><strong>$ProdName</strong></a> and welcome to the $OrganizationName developer community. We are delighted to have you as part of the team and are looking forward to the amazing applications you will build using our API!
更新
Thank you for subscribing to the <a href="https://portal.contoso.com/product#product=$ProdId"><strong>$ProdName</strong></a> and welcome to the $OrganizationName developer community. We are delighted to have you as part of the team and are looking forward to the amazing applications you will build using our API!
元のコンテンツ
Visit the developer <a href="http://$DevPortalUrl/developer">profile area</a> to manage your subscription and subscription keys
更新
Visit the developer <a href="https://portal.contoso.com/profile">profile area</a> to manage your subscription and subscription keys
元のコンテンツ
<a href="http://$DevPortalUrl/docs/services?product=$ProdId">Learn about the API</a>
更新
<a href="https://portal.contoso.com/product#product=$ProdId">Learn about the API</a>
元のコンテンツ
<p style="font-size:12pt;font-family:'Segoe UI'">
<strong>
<a href="http://$DevPortalUrl/applications">Feature your app in the app gallery</a>
</strong>
</p>
<p style="font-size:12pt;font-family:'Segoe UI'">You can publish your application on our gallery for increased visibility to potential new users.</p>
<p style="font-size:12pt;font-family:'Segoe UI'">
<strong>
<a href="http://$DevPortalUrl/issues">Stay in touch</a>
</strong>
</p>
<p style="font-size:12pt;font-family:'Segoe UI'">
If you have an issue, a question, a suggestion, a request, or if you just want to tell us something, go to the <a href="http://$DevPortalUrl/issues">Issues</a> page on the developer portal and create a new topic.
</p>
更新
<!--Remove the entire block of HTML code above.-->
パスワードの変更確認
パスワード変更確認通知テンプレートで開発者ポータルの URL を更新します。
元のコンテンツ
<a href="$DevPortalUrl">$DevPortalUrl</a>
更新
<a href="https://portal.contoso.com/confirm-password?$ConfirmQuery">https://portal.contoso.com/confirm-password?$ConfirmQuery</a>
すべてのテンプレート
フッターにリンクがあるテンプレートの開発者ポータルの URL を更新します。
元のコンテンツ
<a href="$DevPortalUrl">$DevPortalUrl</a>
更新
<a href="https://portal.contoso.com/">https://portal.contoso.com/</a>
マネージド開発者ポータルからセルフホステッド開発者ポータルへの移行
時間の経過と伴い、ビジネス要件が変わる可能性があります。 最終的に、API Management 開発者ポータルのマネージド バージョンがニーズを満たさない状況になります。 たとえば、新しい要件により、サードパーティのデータ プロバイダーと統合されるカスタム ウィジェットを作成することが強制される場合があります。 マネージド バージョンとは異なり、セルフホステッド バージョンのポータルでは、完全な柔軟性と拡張性が提供されます。
移行プロセス
マネージド バージョンから、同じ API Management サービス インスタンス内のセルフホステッド バージョンに移行できます。 このプロセスでは、ポータルのマネージド バージョンで実行した変更が保持されます。 ポータルのコンテンツを事前にバックアップしてください。 バックアップ スクリプトは、API Management 開発者ポータル scripts
の フォルダーにあります。
変換プロセスは、この記事の前の手順に示すように、汎用のセルフホステッド ポータルの設定とほぼ同じです。 構成手順には例外が 1 つあります。
config.design.json
ファイル内のストレージ アカウントは、ポータルのマネージド バージョンのストレージ アカウントと同じである必要があります。 SAS URL を取得する方法については、「 チュートリアル: Linux VM のシステム割り当て ID を使用して SAS 資格情報を使用して Azure Storage にアクセス する」を参照してください。
ヒント
config.publish.json
ファイルでは、別のストレージ アカウントを使用することをお勧めします。 この方法を使用すると、ポータルのホスティング サービスをより詳細に制御し、管理を簡略化できます。
関連コンテンツ
- セルフホスティングの代替アプローチについて説明します