バインドを使用して関数を 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 統合を使用しているかどうかによって、HttpRequest
を HttpRequestData
に、IActionResult
を HttpResponseData
に変更する必要がある場合があります。
メッセージは、関数が完了したときにキューに送信されます。 出力バインドを定義する方法は、プロセス モデルによって異なります。 参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。
@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 モデルのバージョンによって異なります。 参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。
$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 モデルのバージョンによって異なります。 参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。
次の表を使用して、既存の関数を更新する際の参考に利用できる特定のバインドの種類の例を見つけてください。 まず、実際のプロジェクトに対応する言語のタブを選択します。
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 ファイルまたはメソッドの属性のいずれかに追加されます。 以下の記事では、ポータルで既存の関数にバインドを追加する方法の例を示しています。