この記事では、組織の API センターでの登録後に API の状態を更新するための自動通知ワークフローを設定する方法について説明します。 この例を調整して、API センターの他の種類のイベントのワークフローを自動化します。
通知ワークフローを設定するには、いくつかの利点があります。
- リアルタイム更新: API 登録や API 定義の更新など、特定のイベントが発生するとすぐにアラートを受信します。 問題に迅速に対処するか、これらのイベントに基づいてさらにアクションを実行します。
- 自動化: 時間を節約し、手動監視を減らします。 たとえば、新しい API が登録されたとき、API 定義が変更されたとき、または API 分析レポートが生成されたときのアラートを設定します。
- ユーザー エクスペリエンスの向上: 統合された通知を利用し、要求またはアクションの状態についてユーザーに通知を受け取ります。 アクションには、API の承認プロセスや、条件に基づくカスタム メタデータの変更が含まれる場合があります。
- コラボレーション: ロール (API 管理者、API 開発者など) に基づいてさまざまなチーム メンバーに通知を送信し、適切なユーザーに通知され、適切なアクションを実行できることを確認します。
この記事の例では、次のプロセスをビルドします。
- API センターに API が登録されると、Azure Logic Apps ワークフローを実行するイベント がトリガーされます。
- ワークフローは、指定されたユーザーにMicrosoft Teamsで通知を送信します。
- ユーザーは、Microsoft Teamsの通知から直接 API 登録の状態を決定します。
- ワークフローは、ユーザーの決定に基づいて API 登録の API 状態メタデータを更新します。 API の状態は、API センターで設定したカスタム メタデータ プロパティです。
この例は、API センターに対する組織の通知とガバナンスの要件を満たすように調整できます。 Microsoft Power Automate で同様の自動化されたクラウド ワークフローをトリガーすることもできます。
前提条件
Azure サブスクリプション内の API センター。 サブスクリプションを作成するには、「 クイック スタート: API センターを作成する」を参照してください。
Azure サブスクリプション内のAzure Logic Appsのインスタンス。 この記事の例では、「
Quickstart: Azure portal の手順に従って、従量課金ロジック アプリを作成できます。 リソースのみを作成します。 この記事の後半では、ワークフローにトリガーを追加します。APIセンターでRBACロールを割り当てるための権限。
サブスクリプションに登録されている Event Grid リソース プロバイダー。 Event Grid リソース プロバイダーを登録する必要がある場合は、「 Azure Event Grid を使用してパートナーによって発行されたイベントにサブスクライブする」を参照してください。
API センターにカスタム メタデータ プロパティを追加する
この記事で示すワークフローでは、API センターの サンプル カスタム メタデータ プロパティ の値を設定します。このプロパティは、API 登録の状態を追跡するために使用されます。
API センターでカスタム api-status プロパティを作成します。
Azure portalで、API センターを参照します。
[ インベントリ] を展開し、[ メタデータ] を選択し、[ + 新しいメタデータ] を選択します。
[ 詳細 ] タブで、次の設定を構成します。
[タイトル] の値に「api-status」と入力します。
[種類] の値で、[定義済みの選択肢] を選択します。
選択肢のセットに、new、pending、approved という名前を追加します。 [次へ] を選択します。
[ 割り当て ] タブで、 API の値を [省略可能] に設定します。
(省略可能) [デプロイ と 環境 ] の値に割り当てを行います。 [次へ] を選択します。
構成を確認し、[ 作成] を選択します。
ロジック アプリでマネージド ID を有効にする
このシナリオでは、ロジック アプリはマネージド ID を使用して API センターをaccessします。 必要に応じて、システム割り当てまたはユーザー割り当てマネージド ID のどちらかを有効にします。 マネージド ID を構成するには、Azure Logic Apps でのマネージド ID を使用した Azure リソースへのアクセスおよび接続の認証についてをご覧ください。
マネージド ID にアクセス許可を割り当てる
ロジック アプリのマネージド ID に、API センターをaccessするために必要なアクセス許可を割り当てます。 このシナリオでは、マネージド ID に共同作成者ロールを割り当てます。
Azure portal で、API センターを参照し、Access control (IAM) を選択します。
[+ 追加]>[ロール割り当ての追加] の順に選択します。
[ 特権管理者ロール ] タブを選択します。
ロールの一覧で [ 共同作成者] を選択し、[ 次へ] を選択します。
Members ページの Assign access to で、Managed identity を選択します。
[ メンバー] で、[ + メンバーの選択] を選択します。
[ マネージド ID の選択 ] ページで、 マネージド ID を 新しいロジック アプリに設定し、[選択] を 選択します。
[ ロールの割り当ての追加] で、[ 次へ] を選択します。
ロールの割り当てを確認し、[レビューと割り当て] を選択します。
ロジック アプリ ワークフローを構成する
このセクションでは、API が API センターに登録されたときにロジック アプリ ワークフローをトリガーするイベント サブスクリプションを構成する手動のステップについて説明します。
リソース イベントが発生したときにトリガーする
API センターでイベントが発生したときにロジック アプリ ワークフローをトリガーするワークフロー ステップを構成します。
Azure portalで、ロジック アプリを参照します。
開発ツールを展開し、ロジック アプリ デザイナーを選択します。
デザイナーの表面で、トリガーを追加 を選択します。
Azure Event Grid を検索し、リソース イベントが発生したときに トリガーを選択します。
[ リソース イベントが発生したとき ] ウィンドウで、次の設定を構成します。
[リソースの種類] の値として、[Microsoft.ApiCenter.Services] を選択します。
[ サブスクリプション ] の値で、サブスクリプションを選択します。
[リソース名] の値に、API センターの完全なリソース名を次の形式で入力します。
/subscriptions/<subscription ID>/resourceGroups/<resource group nam>/providers/Microsoft.ApiCenter/services/<API Center name>[イベントの種類項目 - 1] の値として、Microsoft.ApiCenter.ApiAdded を入力または選択します。
ペインを閉じてデザイン画面に戻ります。
API ID の変数を初期化する
登録された API の ID を格納する変数を初期化するワークフロー ステップを追加します。
[ リソース イベントが発生したとき ] トリガー ウィジェットで、プラス記号 +を選択し、[ アクションの追加] を選択します。
変数を検索し、[変数の初期化] を選択します。
[ 変数の初期化 ] ウィンドウで、 新しい変数に対して次の設定を構成します。
[名前] の値に「subjectvar」と入力します。
型の値で、文字列を選択します。
値の場合は、フォワードスラッシュ を入力し、[ 動的コンテンツの挿入 ] を選択します。[リソース イベントが発生したとき] で、[件名] を選択します。
API バージョンの変数を初期化する
API Center の管理 API のバージョンを格納する変数を初期化するワークフロー ステップを追加します。 このバージョンは、ワークフローの HTTP 要求に必要です。
ヒント
バージョンの変数を初期化すると、管理 API が更新されるため、後で値を簡単に変更できます。
[ 変数の初期化 ] ウィンドウで、[ 変数の追加] を選択します。
次の設定を構成します。
[名前] の値に「versionvar」と入力します。
型の値で、文字列を選択します。
[値] の値に「
?api-version=2024-03-01」と入力します。
ペインを閉じてデザイン画面に戻ります。
API の詳細を取得するように HTTP アクションを構成する
API センターから API の詳細を取得するための HTTP GET 要求を行うワークフロー ステップを追加します。
[ 変数の初期化 ] アクション ウィジェットで、プラス記号 +を選択し、[ アクションの追加] を選択します。
HTTP を検索し、[HTTP] を選択します。
HTTP ペインで、次の操作を行います。
URI の値には、
https://management.azure.com/(末尾のスラッシュ/を含む) を入力します。フォワード スラッシュ
/が検出されたら、動的コンテンツの挿入 を選択し、subjectvar 変数を選択します。スラッシュ
/をもう一度入力し、[ 動的コンテンツの挿入] を選択して versionvar 変数を選択します。
最後の値は、URI がスラッシュ
/で終わる次の例のようになります。
メソッドの場合は、[GET] を選択します。
[ 詳細パラメーター] で、ドロップダウン リストを展開し、[ 認証] を選択します。 次の設定を構成します。
[認証の種類] の値で、[マネージド ID] を選択します。
[マネージド ID] の値として、[システム割り当てマネージド ID] を選択します。
Audience 値には、URI 値
https://management.azure.com/を入力します。
ペインを閉じてデザインサーフェスに戻ります。
JSON アクションの出力を解析する
上記の HTTP 要求の JSON 出力を解析するワークフロー ステップを追加します。
HTTP アクション ウィジェットで、プラス記号 +を選択し、[アクションの追加] を選択します。
[JSON の解析] を検索し、[データ操作] で [JSON の解析] を選択します。
[ JSON の解析 ] ウィンドウで、次の設定を構成します。
[Content (コンテンツ(]の値としてスラッシュ (
/) を入力し、[Insert dynamic content (動的コンテンツの挿入)] を選択します。HTTP で Body を選択します。
[スキーマ] 値には、次のコードを入力します。
{ "type": "object", "properties": { "type": { "type": "string" }, "properties": { "type": "object", "properties": { "title": { "type": "string" }, "kind": { "type": "string" }, "description": { "type": "string" }, "lifecycleStage": { "type": "string" }, "externalDocumentation": { "type": "array" }, "contacts": { "type": "array" }, "customProperties": { "type": "object", "properties": {} } } }, "id": { "type": "string" }, "name": { "type": "string" }, "systemData": { "type": "object", "properties": { "createdAt": { "type": "string" }, "lastModifiedAt": { "type": "string" } } } } }
次の図は、[ JSON の解析 ] ペインの構成設定を示しています。
Azure ポータル内のスキーマを使用した JSON 解析アクションのスクリーンショット。
ペインを閉じてデザイン サーフェイスに戻ります。
アダプティブ カードを Teams に投稿する
通知をアダプティブ カードとしてMicrosoft Teamsに投稿するワークフロー ステップを追加します。
[JSON アクションの 解析 ] ウィジェットで、プラス記号 +を選択し、[ アクションの追加] を選択します。
Teams を検索し、Post アダプティブ カードを選択し、Microsoft Teams で応答を待ちます。
このオプションを見つけるには、[ 詳細を表示 ] を選択する必要がある場合があります。 メッセージが表示されたら、Microsoft Teams アカウントにサインインします。
[アダプティブ カードを投稿し応答を待機する] ウィンドウで、次の設定を構成します。
「投稿者」の値として「フローボット」を選択します。
[Post in (投稿先)] の値として、使用している Teams のセットアップに適したオプションを選択します。 テストでは、[フロー ボットとのチャット] を選択できます。
[メッセージ] 値には、アダプティブ カードの次のテキストを入力します。 必要に応じてテキストを変更します。
{ "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "type": "AdaptiveCard", "version": "1.4", "body": [ { "type": "TextBlock", "text": "Hi API Admin,", "weight": "Bolder", "size": "Medium" }, { "type": "TextBlock", "text": "A new API has been registered.", "wrap": true }, { "type": "TextBlock", "text": "API Title: **{{apiTitle}}**", "wrap": true }, { "type": "TextBlock", "text": "Please provide the status for this API:", "wrap": true }, { "type": "Input.ChoiceSet", "id": "apiStatus", "style": "expanded", "choices": [ { "title": "New", "value": "new" }, { "title": "Pending", "value": "pending" }, { "title": "Approved", "value": "approved" } ], "isRequired": true, "errorMessage": "Please select a status." } ], "actions": [ { "type": "Action.Submit", "title": "Submit" } ] }
メッセージのタイトルを調整します。 メッセージ スキーマの
"body"セクションで、"text": "API Title: **{{apiTitle}}**",ステートメントを見つけます。ステートメントの
{{apiTitle}}部分を選択して削除します。スラッシュ
/を入力し、[動的コンテンツの挿入] を選択します。[JSON の解析] で [本文のタイトル] を選択して、選択したテキストを動的コンテンツに置き換えます。
更新された部分は、次の例のようになります。
[ 受信者 ] の値に、通知を受信したユーザーのメール アドレスを入力します。
<a1><a0><sb0>Azure ポータルでの Teams アクションへの投稿アダプティブカードのスクリーンショット</sb0></a0></a1>
ペインを閉じてデザイン サーフェイスに戻ります。
API 状態の変数を初期化する
Teams アダプティブ カードから返された API の状態の値を格納する変数の値を初期化するワークフロー ステップを追加します。
[ アダプティブ カードの投稿] で、応答アクション ウィジェットを待機 し、プラス記号 +を選択し、[ アクションの追加] を選択します。
変数を検索し、[変数の初期化] を選択します。
[ 変数の初期化 ] ウィンドウで、 新しい変数に対して次の設定を構成します。
[名前] の値に「statusvar」と入力します。
型の値で、文字列を選択します。
[値] の値には、スクリプトの
@body('Post_adaptive_card_and_wait_for_a_response')?['data']?['apiStatus']を入力します。スクリプトを入力すると、
body(...)グリフが設定値に追加されます。 グリフをポイントすると、スクリプトが期待どおりに追加されていることを確認できます。
ウィンドウを閉じてデザイン画面に戻ります。
システムは、Initialize 変数 1 という名前の新しいウィジェットをワークフローに追加します。 タイトルの番号は、このワークフローに同じ種類の別のアクションがあることを示します。 アクションの最初のインスタンスは数値 0、2 番目のインスタンスは数値 1 などです。 ウィジェットの名前は、[ 変数の初期化 ] ウィンドウで変更できます。
API プロパティを更新するように HTTP アクションを構成する
API センターで API プロパティを更新するための HTTP PUT 要求を作成するワークフロー ステップを追加します。
[ 変数 1 の初期化 ] アクション ウィジェットで、プラス記号 +を選択し、[ アクションの追加] を選択します。
HTTP を検索し、[HTTP] を選択します。
HTTP ペインで、次の設定を構成します。
URI の値には、
https://management.azure.com/(末尾のスラッシュ/を含む) を入力します。フォワード スラッシュ
/が検出されたら、動的コンテンツの挿入 を選択し、subjectvar 変数を選択します。スラッシュ
/をもう一度入力し、[ 動的コンテンツの挿入] を選択して versionvar 変数を選択します。
最後の値は、URI がスラッシュ
/で終わる次の例のようになります。
[メソッド] の値として 、[PUT] を選択します。
Body 値には、次のコードを入力します。
{ "properties": { "customProperties": { "api-status": "@variables('statusvar')" }, "title": "@body('Parse_JSON')?['properties']?['title']", "description": "@body('Parse_JSON')?['properties']?['description']", "lifecycleStage": "@body('Parse_JSON')?['properties']?['lifecycleStage']", "kind": "@body('Parse_JSON')?['properties']?['kind']" } }[ 詳細パラメーター] で [ 認証] を選択し、次の設定を構成します。
[認証の種類] の値で、[マネージド ID] を選択します。
[マネージド ID] の値として、[システム割り当てマネージド ID] を選択します。
Audience 値に「
https://management.azure.com/」と入力します。
Azure ポータルでの HTTP PUT 要求アクションのスクリーンショット ペインを閉じてデザインサーフェイスに戻ります。
システムは、 HTTP 1 という名前の新しいウィジェットをワークフローに追加します。 HTTP ペインでウィジェットの名前を変更できます。
ワークフローを保存します
ロジック アプリ デザイナーで、メニュー バーの [保存] を選択してワークフローを維持します。 完全なワークフローは、次の例のようになります。
API センターでイベント サブスクリプションが正常に作成されたことを確認します。 イベント サブスクリプションのプロビジョニングには数分かかる場合があります。
Azure portalで、API センターを参照します。
[ イベント ] を展開し、[ イベント サブスクリプション] を選択します。
ロジック アプリが [名前] の下に表示され、 エンドポイント が Webhook に設定されていることを確認します。
イベント サブスクリプションをテストする
API センターに API を登録して、イベント サブスクリプションをテストします。
Azure portalで、API センターを参照します。
API センターに API を登録します。
API が登録されたら、次のアクションを確認します。
- イベント サブスクリプションにより、ロジック アプリ ワークフローがトリガーされます。
- ロジック アプリ ワークフローが実行され、Microsoft Teamsで指定された受信者に通知が送信されます。
Microsoft Teamsで、アダプティブ カードを表示し、API の状態を選択し、Submit を選択します。
Microsoft Teams のワークフローからのアダプティブ カードのスクリーンショット ロジック アプリ ワークフローは、API センターの API 登録の api-status プロパティを更新します。
API センターで API の詳細を表示し、カスタム
api-statusプロパティの更新された値を確認します。
ロジック アプリのプロセス履歴を表示する
ロジック アプリのプロセスの詳細を取得し、問題のトラブルシューティングを行うには:
Azure portalで、ロジック アプリを参照します。
[ 開発ツール] を展開し、[ 実行履歴] を選択します。
実行を選択すると、各ステップの詳細が表示されます。