次の方法で共有


Azure API Management から Azure Service Bus にメッセージを送信する方法

適用対象: 開発者 |基本 |標準 |プレミアム

この記事では、ポリシー ベースの統合を使用して API Management から Azure Service Bus にメッセージを送信する方法について説明します。 API Management を使用して、Service Bus にメッセージを送信するセキュリティで保護されたスケーラブルな方法を提供します。

メッセージング用の Service Bus と API Management の統合の図。

Azure Service Bus は、アプリケーションとサービスを分離し、分散システム間で信頼性の高いクラウド メッセージングを可能にするように設計された、フル マネージドのエンタープライズ メッセージング サービスです。 システムがメッセージ キュー にメッセージを送信して 1 対 1 の通信を行い、発行/サブスクライブ パターンの トピック を送信するための AMQP (Advanced Message Queuing Protocol) をサポートします。 Service Bus は、ハイブリッド クラウド環境全体で非同期操作、負荷平準化、または統合を必要とするシナリオに最適です。 詳細については、 Azure Service Bus のドキュメントを参照してください

ポリシーベースの統合により、API Management では次の機能が提供されます。

  • 外部クライアント向けのセキュリティで保護された REST ベースのメッセージング - ネイティブ AMQP サポートがない外部システムとモバイル アプリは、API Management 経由で標準の HTTP/REST API を使用して Service Bus にメッセージを送信できます。 この方法では、カスタム仲介者の必要性を排除することで、統合が簡素化され、セキュリティが強化されます。
  • 管理されたサード パーティの統合 - 企業は、組み込みのマネージド ID 認証を使用して API Management を通じて Service Bus エンドポイントを公開し、パートナーやサードパーティのアプリケーションに対してセキュリティで保護された監視可能なメッセージング パターンを実現できます。
  • モデルの起動と忘れ - Service Bus にメッセージを送信するために他のバックエンド サービスは必要ありません。これにより、アーキテクチャがシンプルになり、運用オーバーヘッドが削減されます。

  • API Management と Service Bus の統合は現在プレビュー段階です。
  • Service Bus へのメッセージの送信のみがサポートされています。

現在、この機能はワークスペースでは利用できません。

[前提条件]

Service Bus へのアクセスを構成する

サービス バスにメッセージを送信するには、API Management インスタンスのマネージド ID を構成する必要があります。

  1. API Management インスタンスで API Management のシステム割り当てマネージド ID またはユーザー割り当て マネージド ID を 有効にします。

    • ユーザー割り当てマネージド ID を有効にする場合は、ID の クライアント ID を書き留めます。
  2. ID に Azure Service Bus データ送信者 ロールを、サービス バスをスコープとする形で割り当てます。 ロールを割り当てるには、 Azure portal またはその他の Azure ツールを使用します。

send-service-bus-message ポリシーを構成する

目的のキューまたはトピックにメッセージを送信するように send-service-bus-message ポリシーを構成します。

たとえば、受信ポリシー セクションの send-service-bus-message ポリシーを使用して、ゲートウェイが受信したときに API 要求の要求本文を送信します。

  1. Azure portal で、API Management インスタンスに移動します。

  2. 左側のメニューで [ API] を選択し、ポリシーを追加する API を選択します。

  3. [すべての操作] を選択します。

  4. 画面の上部にある [ デザイン ] タブを選択します。

  5. [ 受信処理 ] ウィンドウまたは [ 送信処理 ] ウィンドウで、 </> (コード エディター) アイコンを選択します。 詳細については、「 ポリシーを設定または編集する方法」を参照してください。

  6. inboundまたは outbound ポリシー セクションにカーソルを置く。

  7. send-service-bus-message ポリシーをポリシー構成に追加し、必要に応じて属性と要素を構成します。

    たとえば、要求本文をメッセージとして送信します。

    <send-service-bus-message queue-name="my-queue">
        <payload>@(context.Request.Body.As<string>())</payload>
    </send-service-bus-message>
    

    payload要素の値として文字列を返す任意の式を使用できます。

  8. [ 保存] を 選択して、更新されたポリシー構成を保存します。 保存するとすぐにポリシーがアクティブになり、メッセージが指定されたサービス バスに送信されます。