多くの場合、一連の重要なイベントに対応するシステムを構築します。 Web API を構築する場合でも、データベースの変更に応答する場合でも、イベント ストリームやメッセージを処理する場合でも、Azure Functionsを使用してこれらのシステムを実装できます。
多くの場合、関数は、さまざまなクラウド サービスと連携して多機能な実装を実現します。 次の一覧は、Azure Functionsの一般的な (ただし、決して網羅的な) シナリオを示しています。
記事の冒頭で、使用する開発言語を選択してください。
ファイルのアップロードを処理する
関数を活用して、Blob Storage コンテナーとの間でファイルを処理することができます。 BLOB コンテナーにトリガーを設定するオプションの詳細については、ベスト プラクティスドキュメントの「BLOB の操作」を参照してください。
たとえば、小売ソリューションでは、パートナー システムは製品カタログ情報をファイルとして BLOB ストレージに送信できます。 BLOB によってトリガーされる関数を使用して、ファイルをアップロードするときに、ファイルをメイン システムに検証、変換、および処理できます。
次のチュートリアルでは、Azure BLOB トリガー (Azure Event Grid ベース) を使用して BLOB コンテナー内のファイルを処理します。
- クイックスタート: Azure Functions を使用して BLOB ストレージ イベントに応答する
- サンプル: Event Grid をソースとする Blob トリガー
- Tutorial (イベント): イベント サブスクリプションを使用して BLOB コンテナーのAzure Functionsをトリガーします
- チュートリアル(ポーリング):Azure Functions と Blob Storage を使用し、ファイルをアップロードして分析する
たとえば、BLOB コンテナーのイベント サブスクリプションで BLOB トリガーを使用できます。
[FunctionName("ProcessCatalogData")]
public static async Task Run([BlobTrigger("catalog-uploads/{name}", Source = BlobTriggerSource.EventGrid, Connection = "<NAMED_STORAGE_CONNECTION>")] Stream myCatalogData, string name, ILogger log)
{
log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myCatalogData.Length} Bytes");
using (var reader = new StreamReader(myCatalogData))
{
var catalogEntry = await reader.ReadLineAsync();
while(catalogEntry !=null)
{
// Process the catalog entry
// ...
catalogEntry = await reader.ReadLineAsync();
}
}
}
リアルタイム ストリームとイベント処理
クラウド アプリケーション、IoT デバイス、およびネットワーク デバイスは、大量の顧客データを生成して収集します。 Azure Functionsは、そのデータをホット パスとしてほぼリアルタイムで処理し、分析ダッシュボードで使用するために Azure Cosmos DB に格納できます。
関数では、Event Grid などの待機時間の短いイベント トリガーや SignalR などのリアルタイム出力を使用して、ほぼリアルタイムでデータを処理することもできます。
たとえば、イベント ハブ トリガーを使用してイベント ハブから読み取り、出力バインドを使用して、イベントをデバッチして変換した後でイベント ハブに書き込むことができます。
[FunctionName("ProcessorFunction")]
public static async Task Run(
[EventHubTrigger(
"%Input_EH_Name%",
Connection = "InputEventHubConnectionSetting",
ConsumerGroup = "%Input_EH_ConsumerGroup%")] EventData[] inputMessages,
[EventHub(
"%Output_EH_Name%",
Connection = "OutputEventHubConnectionSetting")] IAsyncCollector<SensorDataRecord> outputMessages,
PartitionContext partitionContext,
ILogger log)
{
var debatcher = new Debatcher(log);
var debatchedMessages = await debatcher.Debatch(inputMessages, partitionContext.PartitionId);
var xformer = new Transformer(log);
await xformer.Transform(debatchedMessages, partitionContext.PartitionId, outputMessages);
}
- サンプル: Azure Event Hubs、Azure Functions、および Azure SQL を使用した大規模ストリーミング
- サンプル: Azure Event Hubs、Functions、Cosmos DB を使用した大規模なストリーミング
- サンプル: Kafka プロデューサーを使用したAzure Event Hubs、Kafka トリガーを使用した Functions、Cosmos DB を使用した大規模なストリーミング
- サンプル: Azure IoT Hub、Azure Functions、および Azure SQL を使用した大規模なストリーミング
- Azure Functions 向けの Azure Event Hubs トリガー
- Azure Functions の Apache Kafka トリガー
機械学習と AI
Azure Functionsは、AI および Azure サービスと統合して、クラウドでホストされるインテリジェント アプリケーションの構築を効率化するサーバーレス コンピューティング リソースを提供します。 Functions プログラミング モデルを使用すると、リモート モデル コンテンツ プロトコル (MCP) サーバーを作成してホストし、さまざまな AI ツールを実装できます。 詳細については、 ツールおよび MCP サーバーを参照してください。
Azure OpenAI バインド拡張機能を使用すると、Azure OpenAI の AI 機能と動作 (取得拡張生成 (RAG) など) を関数コードの実行に統合できます。 詳細については、「 検索拡張生成」を参照してください。
関数は、TensorFlow モデルまたは Foundry Tools を呼び出して、画像のストリームを処理および分類することもできます。
Quickstart: Azure Functions - クイックスタート: Azure Functions で MCP SDK を使用して構築されたホスト サーバーをホストする
サンプル: Azure Functions サンプル: Azure Functions
Quickstart: Azure Functions サンプル: Azure Functions
Quickstart: Azure Functions クイックスタート: MCP SDK を利用して構築されたホストサーバーを Azure Functions 上でホストする サンプル: Azure Functions サンプル: Azure Functions
Quickstart: Azure Functions - クイックスタート: MCP SDKs で構築されたホストサーバーを Azure Functions 上でホスト
詳細については、「
スケジュールされたタスクを実行する
Functions では、定義した cron スケジュールに基づいてコードを実行できます。
詳細については、「スケジュールに従って実行されるAzure ポータルで関数を作成する」を参照>。
たとえば、同じ顧客に複数の通信が送信されないように、15 分ごとに金融サービスの顧客データベースで重複するエントリを分析できます。
例については、次のコード スニペットを参照してください。
[FunctionName("TimerTriggerCSharp")]
public static void Run([TimerTrigger("0 */15 * * * *")]TimerInfo myTimer, ILogger log)
{
if (myTimer.IsPastDue)
{
log.LogInformation("Timer is running late!");
}
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
// Perform the database deduplication
}
Quickstart: Azure Functions
例については、次のコード スニペットを参照してください。
Quickstart: Azure Functions
スケーラブルな Web API を構築する
HTTP によってトリガーされる関数は、HTTP エンドポイントを定義します。 これらのエンドポイントでは、他のサービスに直接、またはバインド拡張機能を使用して接続できる関数コードを実行します。 エンドポイントを Web ベースの API に組み込むことができます。
http によってトリガーされる関数エンドポイントは、webhook の統合として使用することもできます (GitHub webhook など)。 この方法では、GitHubイベントからのデータを処理する関数を作成できます。 詳細については、「Azure Functions HTTP トリガー」を参照してください。
例については、次のコード スニペットを参照してください。
[FunctionName("InsertName")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req,
[CosmosDB(
databaseName: "my-database",
collectionName: "my-container",
ConnectionStringSetting = "CosmosDbConnectionString")]IAsyncCollector<dynamic> documentsOut,
ILogger log)
{
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
string name = data?.name;
if (name == null)
{
return new BadRequestObjectResult("Please pass a name in the request body json");
}
// Add a JSON document to the output container.
await documentsOut.AddAsync(new
{
// create a random ID
id = System.Guid.NewGuid().ToString(),
name = name
});
return new OkResult();
}
Quickstart: Azure Functions - Azure Functions と API Management の統合を使用して、Visual Studioにサーバーレス API を作成します
Azure API Management - サンプル: Static Web Appsおよび Functions 上の C# API と Azure SQL DB を使用した Web アプリケーション
Quickstart: Azure Functions
Quickstart: Azure Functions
Quickstart: Azure Functions
Quickstart: Azure Functions
Quickstart: Azure Functions
サーバーレス ワークフローを作成する
関数は、多くの場合、Logic Apps ワークフローなどのサーバーレス ワークフロー トポロジのコンピューティング コンポーネントとして機能します。 Durable Functions拡張機能を使用して、実行時間の長いオーケストレーションを作成することもできます。 詳細については、「Durable Functionsの概要を参照してください。
Azure Functions を使用した一連の具体的なサーバーレスワークフローの組み合わせ図。
- Quickstart: Python を使用して Azure で最初の耐久関数を作成します
- Tutorial: マウントされたAzure Files シェアを使用した耐久性のあるテキスト分析
- サンプル: Azureファイル ストレージ マウントを使用した耐久性のあるテキスト分析
トレーニング: Azure Functions、Logic Apps、および Azure SQL Database
データベースの変更に対処する
一部のプロセスでは、保存されたデータが変更されたときに、ログ記録、監査、またはその他の操作を実行する必要があります。 Functions トリガーは、このような操作を開始するためにデータ変更の通知を受けるための方法として適しています。
次のような例を考えてみてください。
クイック スタート: Azure Functions を使用して Azure Cosmos DB のデータベース変更に応答する クイックスタート: Azure Functions を使用して Azure SQL Database でのデータベースの変更に応答する
信頼性の高いメッセージ システムを作成する
Azure メッセージング サービスで Functions を使用して、高度なイベント ドリブン メッセージング ソリューションを作成できます。
たとえば、一連の関数実行を連結する方法として、Azure Storage キューでトリガーを使用できます。 または、オンライン注文システムの場合は、サービス バスのキューとトリガーを使用します。
次の記事では、ストレージ キューに出力を書き込む方法を示します。
- Visual Studio Code を使用してAzure FunctionsをAzure Storageに接続します。
- Azure Queue Storage によってトリガーされる関数を作成します (Azure ポータル)
- Visual Studio Code を使用して Azure Functions を Azure Storage に接続します。
- Azure Queue ストレージ(Azure ポータル)によってトリガーされる関数を作成する
- Visual Studio Codeを使用してAzure FunctionsをAzure Storageに接続します。
- Azure Queue Storage によってトリガーされる関数を作成する (Azure ポータル)
- Visual Studio Code を使用して Azure Functions を Azure Storage に接続します
- Azure Queue Storage によってトリガーされる関数を作成する (Azure ポータル)
- Visual Studio Code を使用して Azure Functions を Azure Storage に接続します
- Azure Queue Storage によってトリガーされる関数を作成する (Azure ポータル)
これらの記事では、Azure Service Bus キューまたはトピックからトリガーする方法について説明します。
- Azure Functions の Azure Service Bus トリガー
- Azure Functions の Azure Service Bus トリガー
- Azure Functions の
Azure Service Bus トリガー
- Azure Functions の Azure Service Bus トリガー