トリガー出力バインド

適用対象: Developer | Premium

invoke-dapr-binding ポリシーでは、送信 Dapr バインドをトリガーするように API Management ゲートウェイに指示します。 このポリシーでは、http://localhost:3500/v1.0/bindings/{{bind-name}}, への HTTP POST 要求を実行することによってこれを実現します。この際、テンプレート パラメーターが置き換えられ、ポリシー ステートメントで指定されたコンテンツが追加されます。

このポリシーでは、Dapr ランタイムがゲートウェイと同じポッドのサイドカー コンテナーで実行されていることを前提としています。 Dapr ランタイムは、バインドによって表される外部リソースの呼び出しを担当します。 API Management との Dapr 統合の詳細をご確認ください。

Note

ポリシーの要素と子要素を、ポリシー ステートメントで指定された順序で設定します。 API Management ポリシーを設定または編集する方法について説明します。

ポリシー ステートメント

<invoke-dapr-binding name="bind-name" operation="op-name" ignore-error="false | true" response-variable-name="resp-var-name" timeout="in seconds" template="Liquid" content-type="application/json">
    <metadata>
        <item key="item-name"><!-- item-value --></item>
    </metadata>
    <data>
        <!-- message content -->
    </data>
</invoke-dapr-binding>

属性

属性 説明 必要 Default
name ターゲット バインドの名前。 Dapr で定義されているバインドの名前と一致している必要があります。 ポリシー式を使用できます。 はい 該当なし
操作 ターゲット操作の名前 (バインディング固有)。 Dapr の operation プロパティにマップされます。 ポリシー式は使用できません。 いいえ なし
ignore-error true に設定すると、Dapr ランタイムからエラーを受信したときに "on-error" セクションをトリガーしないようにポリシーに指示します。 ポリシー式は使用できません。 いいえ false
response-variable-name Dapr ランタイムからの応答を格納するために使用する Variables コレクションのエントリの名前。 ポリシー式は使用できません。 いいえ なし
timeout Dapr ランタイムが応答するのを待機する時間 (秒)。 範囲は 1 ~ 240 秒です。 ポリシー式を使用できます。 いいえ 5
template メッセージの内容を変換するために使用するテンプレート エンジン。 サポートされている値は "Liquid" のみです。 いいえ なし
content-type メッセージ コンテンツの種類。 現在、サポートされている値は "application/json" のみです。 いいえ なし

要素

要素 説明 必須
metadata キーと値のペアの形式による、バインド固有のメタデータ。 Dapr の metadata プロパティにマップされます。 いいえ
[データ] メッセージの内容。 Dapr の data プロパティにマップされます。 ポリシー式を使用できます。 いいえ

使用法

使用上の注意

Dapr のサポートは、セルフホステッド ゲートウェイで有効にする必要があります。

次の例では、"external-systems" という名前の送信バインドのトリガーを示しています。操作名は "create" で、メタデータは "source" と "client-ip" という名前の 2 つのキー/値の項目で構成されており、本文は元の要求のものです。 Dapr ランタイムから受信された応答は、 context オブジェクトの Variables コレクションの "bind-response" エントリにキャプチャされます。

Dapr ランタイムがなんらかの理由で失敗してエラーを返した場合は、"on-error" セクションがトリガーされ、Dapr ランタイムから受信された応答が呼び出し元に逐語的に返されます。 それ以外の場合は、既定の 200 OK 応答が返されます。

"backend" セクションは空で、要求はバックエンドに転送されません。

<policies>
     <inbound>
        <base />
        <invoke-dapr-binding
                      name="external-system"
                      operation="create"
                      response-variable-name="bind-response">
            <metadata>
                <item key="source">api-management</item>
                <item key="client-ip">@(context.Request.IpAddress )</item>
            </metadata>
            <data>
                @(context.Request.Body.As<string>() )
            </data>
        </invoke-dapr-binding>
    </inbound>
    <backend>
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
        <return-response response-variable-name="bind-response" />
    </on-error>
</policies>

ポリシーに対する処理の詳細については、次のトピックを参照してください。