バインドを使用して関数を Azure サービスに接続する

関数を作成するときには、一連のトリガー テンプレートから、言語固有のトリガー コードがプロジェクトに追加されます。 入力または出力のバインドを使用して関数を他のサービスに接続する場合は、その関数に特定のバインド定義を追加する必要があります。 バインドの詳細については、「Azure Functions でのトリガーとバインドの概念」を参照してください。

ローカル開発

関数をローカルで開発する場合は、関数コードを更新してバインドを追加する必要があります。 Visual Studio Code には、function.json を使用する言語向けの、関数にバインドを追加するツールが用意されています。

例に基づいて手動でバインドを追加する

既存の関数にバインドを追加する場合は、コード内の関数定義に、バインドに特有の属性を追加する必要があります。

既存の関数にバインドを追加する場合は、コード内の関数定義に、バインドに特有の注釈を追加する必要があります。

既存の関数にバインドを追加する場合は、関数コードに変更を加え、function.json 構成ファイルに定義を追加する必要があります。

既存の関数にバインドを追加する場合は、以下のように、モデルに応じて関数定義に変更を加える必要があります。

コード内の関数定義に、バインドに特有の注釈を追加する必要があります。

次の例は、キュー ストレージの出力バインドHTTP によってトリガーされる関数に追加した後の関数の定義を示しています。

HTTP によってトリガーされる関数は HTTP 応答も返すため、この関数は、HTTP とキューの両方の出力を表す MultiResponse オブジェクトを返します。

[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req,
    FunctionContext executionContext)
{

この出力バインディングを含む MultiResponse オブジェクトの定義の例をこちらに示します。

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public IActionResult HttpResponse { get; set; }
}

この例を独自のプロジェクトに適用する際には、ASP.NET Core 統合を使用しているかどうかによって、HttpRequestHttpRequestData に、IActionResultHttpResponseData に変更する必要がある場合があります。

メッセージは、関数が完了したときにキューに送信されます。 出力バインドを定義する方法は、プロセス モデルによって異なります。 参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。

@FunctionName("HttpExample")
public HttpResponseMessage run(
        @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) 
        HttpRequestMessage<Optional<String>> request, 
        @QueueOutput(name = "msg", queueName = "outqueue", 
        connection = "AzureWebJobsStorage") OutputBinding<String> msg, 
        final ExecutionContext context) {

参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。

Node.js モデル v4 のバインド例は、まだ提供されていません。

出力バインドを定義する方法は、Node.js モデルのバージョンによって異なります。 参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。

$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg

参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。

@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out [func.QueueMessage]) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

出力バインドを定義する方法は、Python モデルのバージョンによって異なります。 参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。

Node.js モデル v4 のバインド例は、まだ提供されていません。

出力バインドを定義する方法は、Node.js モデルのバージョンによって異なります。 参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。

次の表を使用して、既存の関数を更新する際の参考に利用できる特定のバインドの種類の例を見つけてください。 まず、実際のプロジェクトに対応する言語のタブを選択します。

C# のバインド コードは、具体的なプロセス モデルによって異なります。

サービス サンプル
BLOB ストレージ トリガー
入力
出力
リンク
Azure Cosmos DB トリガー
入力
出力
リンク
Azure Data Explorer 入力
出力
リンク
Azure SQL トリガー
入力
出力
リンク
Event Grid トリガー
出力
リンク
Event Hubs トリガー
出力
IoT Hub トリガー
出力
HTTP トリガー リンク
ストレージ トリガー
出力
リンク
RabbitMQ トリガー
出力
SendGrid 出力
Service Bus トリガー
出力
リンク
SignalR トリガー
入力
出力
テーブル ストレージ 入力
出力
Timer トリガー リンク
Twilio 出力 リンク
サービス サンプル
BLOB ストレージ トリガー
入力
出力
リンク
Azure Cosmos DB トリガー
入力
出力
リンク
Azure Data Explorer 入力
出力
リンク
Azure SQL トリガー
入力
出力
Event Grid トリガー
出力
リンク
Event Hubs トリガー
出力
IoT Hub トリガー
出力
HTTP トリガー リンク
ストレージ トリガー
出力
リンク
RabbitMQ トリガー
出力
SendGrid 出力
Service Bus トリガー
出力
リンク
SignalR トリガー
入力
出力
テーブル ストレージ 入力
出力
Timer トリガー リンク
Twilio 出力 リンク
サービス サンプル
BLOB ストレージ トリガー
入力
出力
リンク
Azure Cosmos DB トリガー
入力
出力
リンク
Azure Data Explorer 入力
出力
Azure SQL トリガー
入力
出力
リンク
Event Grid トリガー
出力
リンク
Event Hubs トリガー
出力
IoT Hub トリガー
出力
HTTP トリガー リンク
ストレージ トリガー
出力
リンク
RabbitMQ トリガー
出力
SendGrid 出力
Service Bus トリガー
出力
リンク
SignalR トリガー
入力
出力
テーブル ストレージ 入力
出力
Timer トリガー リンク
Twilio 出力 リンク
サービス サンプル
BLOB ストレージ トリガー
入力
出力
リンク
Azure Cosmos DB トリガー
入力
出力
リンク
Azure SQL トリガー
入力
出力
Event Grid トリガー
出力
リンク
Event Hubs トリガー
出力
IoT Hub トリガー
出力
HTTP トリガー リンク
ストレージ トリガー
出力
リンク
RabbitMQ トリガー
出力
SendGrid 出力
Service Bus トリガー
出力
リンク
SignalR トリガー
入力
出力
テーブル ストレージ 入力
出力
Timer トリガー リンク
Twilio 出力 リンク

Python のバインド コードは、Python モデルのバージョンによって異なります。

サービス サンプル
BLOB ストレージ トリガー
入力
出力
リンク
Azure Cosmos DB トリガー
入力
出力
リンク
Azure Data Explorer 入力
出力
Azure SQL トリガー
入力
出力
リンク
Event Grid トリガー
出力
リンク
Event Hubs トリガー
出力
IoT Hub トリガー
出力
HTTP トリガー リンク
ストレージ トリガー
出力
リンク
RabbitMQ トリガー
出力
SendGrid 出力
Service Bus トリガー
出力
リンク
SignalR トリガー
入力
出力
テーブル ストレージ 入力
出力
Timer トリガー リンク
Twilio 出力 リンク

Visual Studio Code

Visual Studio Code を使用して関数を開発し、その関数で function.json ファイルを使用すると、Azure Functions 拡張機能によって、既存の function.json ファイルにバインドが自動的に追加されます。 詳細については、「入出力バインドを追加する」を参照してください。

Azure portal

Azure portal で関数を開発するときには、特定の関数の [統合] タブで、入出力バインドを追加します。 新しいバインドは、言語に応じて、function.json ファイルまたはメソッドの属性のいずれかに追加されます。 以下の記事では、ポータルで既存の関数にバインドを追加する方法の例を示しています。

次のステップ