最近巷で話題になっている、クラウドサービスを活用したサーバレスの構成ですが、AWSの場合は「AWS Lambda」が有名かと思いますが、今回はAzureのAWSで使われているLambdaのようにプログラムを実行できるサービスは何か調べてみたところ「Azure Functions」なるものがそれにあたるということがわかりました。では、この「Azure Functions」どんなことができるのか調べてみました。
概要
概要を知るにはまず公式サイトからということで、公式サイトのドキュメントから抜粋させて頂きます。
Azure Functionsは、データの処理、システムの統合、モノのインターネット (IoT) の操作、単純なAPIとマイクロサービスの構築に適した優れたソリューションです。Azure Functionsは、画像処理や注文処理、ファイルの保守、バックグラウンドスレッドで実行する実行時間の長いタスクや、スケジュールに従って実行するタスクにサーバを立てずにコード実行ができるサービスです。
【主な特長】
■利用可能言語
C#、F#、Node.js、Python、PHP、Batch、Bash等
■様々なライブラリにも対応
Node.JSのNPMや.NETのNugetなどの外部ライブラリにも対応
■開発も柔軟に
関数をポータル内で直接作成することも、継続的な統合を設定し、GitHubやVisual Studio Team Services などのサポート対象開発ツールを使ってコードをデプロイすることもできます。
※Visual Studio Team Servicesとは
チームがコードを共有し、作業を追跡し、ソフトウェアを出荷するためのサービスです。
コード実行に用いられる機能
Azure Functionss は、コードの実行を開始する機能(トリガー)とデータの入出力用コードを単純化する機能(バインド)をサポートしています。
※トリガー機能
カスタムコードを実行するために使用されるイベント応答のことです。
※バインド機能
コードを目的のトリガーや関連する入出力データに接続するために使用される必要なメタデータを表します。 各関数の Function.json ファイルには、すべての関連バインドが含まれます。 関数の入力バインドと出力バインドの数に制限はありません。 ただし、各関数でサポートされるトリガーのバインドは 1 つのみです。
以下は、シナリオに合わせたトリガーとバインドについて表にまとめたものになります。
■主なトリガー
・BlobTrigger – Azure Storage BLOBがコンテナーに追加されたときに、それを処理します。 画像のサイズ変更時などのタスクで利用ができます。
・EventHubTrigger – Azureイベントハブに送信されたイベントに応答します。
主に、IoTがらみのタスクで利用ができます。
・HTTPTrigger – HTTP 要求を使用して、コードの実行をトリガーします。
・QueueTrigger – Azure Storage キューにメッセージが配信されたときに応答します。
・ServiceBusQueueTrigger – メッセージキューを受け、コードを他のAzureサービスまたはオンプレミスのサービスに接続します。
・ServiceBusTopicTrigger – トピックを書くことで、コードを他のAzureサービスまたはオンプレミスのサービスに接続します。
・TimerTrigger – 事前定義されたスケジュールに従ってクリーンアップなどのバッチタスクを実行します。
料金
さて、概要機能を紹介してきましたが、気になる料金について紹介したいと思います。
Azure Functions従量課金プランでは、リソースの使用量と実行回数に基づいて課金されます。以下の料金表は、従量課金プランでの料金となります。
また、Azure FunctionsをApp Serviceプランの中で実行することもできます。その場合は、App Servicesの利用料になります。
今回Azure Functionsを調べてみて、使い方によって、様々なメリットを発揮できるサービスではないかと感じました。
今回はここまでになります。
最後まで、ご覧いただきありがとうございました。
次回もお楽しみに。