Azure Functions でのトリガーとバインドの概念Azure Functions triggers and bindings concepts

この記事では、関数のトリガーとバインドに関する概念の概要について学習します。In this article you learn the high-level concepts surrounding functions triggers and bindings.

トリガーは、関数が実行される原因です。Triggers are what cause a function to run. トリガーで関数の呼び出し方法が定義されます。1 つの関数には正確に 1 つのトリガーを含める必要があります。A trigger defines how a function is invoked and a function must have exactly one trigger. トリガーにはデータが関連付けられていて、多くの場合、関数のペイロードとして提供されます。Triggers have associated data, which is often provided as the payload of the function.

関数へのバインドは、関数に別のリソースを宣言的に接続する方法です。バインドは入力バインド または出力バインド、あるいは両方として接続される場合があります。Binding to a function is a way of declaratively connecting another resource to the function; bindings may be connected as input bindings, output bindings, or both. バインドからのデータは、パラメーターとして関数に提供されます。Data from bindings is provided to the function as parameters.

ニーズに合わせて、さまざまなバインドを組み合わせることができます。You can mix and match different bindings to suit your needs. バインドは省略可能であり、関数には 1 つまたは複数の入力または出力バインドがある場合があります。Bindings are optional and a function might have one or multiple input and/or output bindings.

トリガーとバインドによって、他のサービスへのアクセスのハードコーディングを回避することができます。Triggers and bindings let you avoid hardcoding access to other services. 関数は、関数パラメーターでデータ (キュー メッセージの内容など) を受信します。Your function receives data (for example, the content of a queue message) in function parameters. 関数の戻り値を使用して、(たとえば、キュー メッセージを作成するために) データを送信します。You send data (for example, to create a queue message) by using the return value of the function.

さまざまな関数の実装方法の以下の例について考えてみます。Consider the following examples of how you could implement different functions.

サンプル シナリオExample scenario トリガーTrigger 入力バインドInput binding 出力バインドOutput binding
新しいキュー メッセージが到着し、別のキューに書き込むための関数が実行されます。A new queue message arrives which runs a function to write to another queue. キュー*Queue* なしNone キュー*Queue*
スケジュールされたジョブで Blob Storage のコンテンツが読み取られ、新しい Cosmos DB ドキュメントが作成されます。A scheduled job reads Blob Storage contents and creates a new Cosmos DB document. TimerTimer Blob StorageBlob Storage Cosmos DBCosmos DB
Event Grid は、Blob Storage からイメージを読み取り、Cosmos DB からドキュメントを読み取って、メールを送信するために使用されます。The Event Grid is used to read an image from Blob Storage and a document from Cosmos DB to send an email. Event GridEvent Grid Blob Storage と Cosmos DBBlob Storage and Cosmos DB SendGridSendGrid
Microsoft Graph を使用して Excel シートを更新する webhook。A webhook that uses Microsoft Graph to update an Excel sheet. HTTPHTTP なしNone Microsoft GraphMicrosoft Graph

* さまざまなキューを表します* Represents different queues

これらの例には、すべて網羅されているわけではなく、トリガーとバインドを一緒に使用できる方法を示すために提供されています。These examples are not meant to be exhaustive, but are provided to illustrate how you can use triggers and bindings together.

トリガーとバインドの定義Trigger and binding definitions

トリガーとバインドは、開発方法に応じて異なる方法で定義されます。Triggers and bindings are defined differently depending on the development approach.

プラットフォームPlatform トリガーとバインドは、以下を行うことで構成されますTriggers and bindings are configured by...
C# クラス ライブラリC# class library      C# 属性でのメソッドとパラメーターの修飾     decorating methods and parameters with C# attributes
他のすべて (Azure portal を含む)All others (including Azure portal)      function.json (スキーマ) の更新     updating function.json (schema)

ポータルではこの構成のために UI が提供されますが、関数の [統合] タブで使用できる 詳細エディターを開いて直接ファイルを編集できます。The portal provides a UI for this configuration, but you can edit the file directly by opening the Advanced editor available via the Integrate tab of your function.

.NET では、パラメーター型で入力データのデータ型が定義されます。In .NET, the parameter type defines the data type for input data. たとえば、キュー トリガーのテキストにバインドするには string を、バイナリとして読み取るにはバイト配列を、オブジェクトを逆シリアル化するにはカスタム型を使用します。For instance, use string to bind to the text of a queue trigger, a byte array to read as binary and a custom type to de-serialize to an object.

JavaScript などの動的に型指定される言語の場合は、function.json ファイルの dataType プロパティを使用します。For languages that are dynamically typed such as JavaScript, use the dataType property in the function.json file. たとえば、バイナリ形式で HTTP 要求のコンテンツを読み取るには、dataTypebinary に設定します。For example, to read the content of an HTTP request in binary format, set dataType to binary:

{
    "dataType": "binary",
    "type": "httpTrigger",
    "name": "req",
    "direction": "in"
}

dataType のその他のオプションは、streamstring です。Other options for dataType are stream and string.

バインドの方向Binding direction

すべてのトリガーとバインドには、function.json ファイルに direction プロパティがあります。All triggers and bindings have a direction property in the function.json file:

  • トリガーの場合、方向は常に in ですFor triggers, the direction is always in
  • 入出力バインドは inout を使用しますInput and output bindings use in and out
  • 一部のバインドは、特殊な方向の inout をサポートしてします。Some bindings support a special direction inout. inout を使用する場合、ポータルの [統合] タブで使用できるのは詳細エディターのみです。If you use inout, only the Advanced editor is available via the Integrate tab in the portal.

クラス ライブラリの属性を使用してトリガーとバインドを構成した場合、その方向は属性コンストラクターで提供されるか、またはパラメーター型から推論されます。When you use attributes in a class library to configure triggers and bindings, the direction is provided in an attribute constructor or inferred from the parameter type.

サポートされるバインディングSupported bindings

次の表は、Azure Functions の 2 つのメジャー バージョンのランタイムでサポートされているバインディングを示します。The following table shows the bindings that are supported in the two major versions of the Azure Functions runtime.

TypeType 1.x1.x 2.x12.x1 トリガーTrigger 入力Input OutputOutput
Blob StorageBlob Storage
Cosmos DBCosmos DB
Event GridEvent Grid
Event HubsEvent Hubs
HTTP と WebhooksHTTP & Webhooks
Microsoft Graph
Excel テーブル
Microsoft Graph
Excel tables
Microsoft Graph
OneDrive ファイル
Microsoft Graph
OneDrive files
Microsoft Graph
Outlook メール
Microsoft Graph
Outlook email
Microsoft Graph
Events
Microsoft Graph
Events
Microsoft Graph
Auth トークン
Microsoft Graph
Auth tokens
Mobile AppsMobile Apps
Notification HubsNotification Hubs
Queue StorageQueue storage
SendGridSendGrid
Service BusService Bus
SignalRSignalR
Table StorageTable storage
TimerTimer
TwilioTwilio

1 2.x では、HTTP と Timer を除くすべてのバインドを登録する必要があります。1 In 2.x, all bindings except HTTP and Timer must be registered. バインディング拡張機能を登録する」を参照してください。See Register binding extensions.

どのバインディングがプレビューでどのバインディングが実稼働環境で承認されているかについては、サポートされている言語に関する記事をご覧ください。For information about which bindings are in preview or are approved for production use, see Supported languages.

リソースResources

次の手順Next steps