Azure Functionsを解説 【シリーズ Azureサービスいちから紹介】

このエントリはQiita Advent Calendar 2017 Microsoft Azureサービスいちから紹介 の17日目です。

ナレッジコミュニケーションの大柳です(@oyngtmhr)

17日目はAzure Functionsです。今はやりのサーバレスアーキテクチャで、サーバを立てずにコードを実行できます

概要

Azure Functionsは、クラウド上でコード(関数)をサーバなしに手軽に実行できるサービスです。利用者はサーバの管理を気にする必要はなく、アプリケーションロジックに集中することができます。サーバ使用料は不要で、関数を実行した回数と時間に対して課金されます。。

機能

・利用できるプログラミング言語

試験段階、プレビューのものも含めるとC#、JavaScript、F#、Java、Python、PHP、TypeScript、バッチ(.cmd、.bat)、Bash、PowerShellが利用可能です。
1.xの試験段階の言語は、スケーリングが適切に行われず、パフォーマンスが出ないといった可能性があるので、運用時は注意が必要です。


https://docs.microsoft.com/ja-jp/azure/azure-functions/supported-languages から引用

・トリガー

Blob Storageにファイルが格納された時など、イベントをトリガーにしてFunctions関数を起動できます。サポートされるトリガーは、以下の通りです。

HTTPTrigger:HTTP要求をトリガーに、コードを起動します
TimerTrigger:時刻を指定してコードを起動します。cron相当のスケジュール管理ができます。
GitHub webhook:GitHubリポジトリで発生するイベントをトリガーにコードを起動します。
汎用webhook:外部Webサービスのwebhookをトリガーにコードを起動します。
CosmosDBTrigger:Azure Cosmos DBへのデータの追加および更新されたことをトリガーに、コードを起動します。
BlobTrigger:Azure Storage BLOBがコンテナーに追加されたことをトリガーに、コードを起動します。
QueueTrigger:Azure Storageキューにメッセージが配信されたことをトリガーに、コードを起動します。
EventHubTrigger:Azureイベント ハブに送信されたことをトリガーに、コードを起動します。IoTでも使いやすいシナリオです。
ServiceBusQueueTrigger:メッセージ・キューをリッスンし、コードを起動します。。
ServiceBusTopicTrigger:トピックをサブスクライブすることで、コードを起動します。

・スケール

コード実行時に必要なインスタンスが自動的に追加・削除されます。メモリも必要に応じて最大1536MBまで自動的に拡張されます

その他

・Azureのサーバレス系サービスは他にも、Microsoft Flow、Azure Logic Apps、Azure App Service WebJobsがある。

・メモリ使用量を明示的に設定する必要はない。

料金

・従量課金プランとApp Serviceプランがあります。

・従量課金プランの場合は、実行回数とリソース使用量(メモリ使用量×時間)に対して課金されます。

・従量課金プランの場合は、リソース使用量は、平均メモリサイズ(GB)に実行にかかった時間(ミリ秒)を乗じて計算されます。単位はギガバイト秒(GB秒)です。メモリ使用量は、128MB単位で切り上げて測定されます。

・従量課金プランの場合は、月間無料使用分として、月あたり100万回のリクエストと、400,000GB秒のリソース使用量が含まれます。

まとめ

試験段階のものもありますが、多くの種類の言語でコードを記述できます。.cmd、.batのようなレガシーなものがあるのも驚きです。コードの発火元となるトリガーの様々なものを選択でき、Azure Functionsだけで、いろいろな処理を手軽に実装、実行できそうです。

この記事を書いた人

azure-recipe-user