Share via


Azure Functions と Cosmos DB によるサーバーレス・コンピューティング

Microsoft Japan Data Platform Tech Sales Team

森本 信次

Azure Functions とは?
まず始めに簡単に Azure Functions について触れておきます。Azure Functions は 小さなプログラムコードを、「関数」(Function)として定義・実行することができます。アプリケーション全体や、プログラムを実行する仮想マシンなどの環境を意識しなくてもよいので、サーバレス・コンピューティングとも呼ばれていて、手軽に実行することができます。機能の詳細についてははこちらのドキュメントをご参照ください。

サーバーレス・コンピューティングを体感してみましょう
前回は フルテキスト検索機能を提供する Azure Search と Cosmos DB の連携について取り上げましたが、今回は Azure Functions と Cosmos DB を連携させることで、従来の手法よりもはるかに少ないコードですばやく簡単に Cosmos DB にデータを格納できる様子を Step 1~3 の流れに沿ってご紹介します。

Step 1. Azure Cosmos DB アカウントを作成
Azure Portal から 前回同様 Cosmos DB アカウント ("planet-cosmos")を作成します
CosmosDB_CreateAccount

Step 2. Azure Functions の作成と設定
Azure Portal から Azure Functions (planet-cosmos-funcapp)を作成します。
AzureFunctions_01
関数を新規に作成します。
AzureFunctions_03 [webhook + API] を選択後 [この関数を作成する] を選択します。今回は CSharp (C#) を言語として使用します。
AzureFunctions_04
webhook とは? ここで “webhook” という見慣れない言葉で出てきましたが、webhook は Web アプリケーションでイベントが実行された際、外部サービスに HTTP で通知する仕組みです。今回の例では、イベントが HTTP Request で、外部サービスが Cosmos DB に相当します。 AzureFunctions_webhook_01

webhook 要求を受け取る度に実行される関数用のC#テンプレートを選択します。関数名として “MyTaskList” としました。 AzureFunctions_07_01 新しい出力として “Azure DocumentDB ドキュメント” を選択します。
AzureFunctions_09
Step 1. で事前に準備しておいた CosmosDB アカウント情報を指定して、データベース名、コレクション名を指定します。 AzureFunctions_11
作成した関数 “MyTaskList” のパラメータを JSON 形式のデータとして組み立てて Cosmos DB に保存するためのコードを記述します。
AzureFunctions_12
[関数] タブで、ポータルの右側にある [テスト] リンクをクリックし、パラメーターの追加 で 次の HTTP クエリ文字列を入力して、[保存] します。 AzureFunctions_15
Step 3. テストを実行してデータが格納されているかを確認
最後に Azure Portal から Step 2 で作成した Azure Functions ("planet-cosmos-funcapp") のテスト実行を行い、Cosmos DB にデータが格納されているかを確認します。
CosmosDB_Result
作成した Azure Functions を他のアプリから呼び出すには、Azure Functions の [関数のURLの取得] から入手できる URLにアクセスします。
AzureFunctions_18

最後に
いかがだったでしょうか? 今回は Azure Functions を使用して Cosmos DB にデータを格納する流れをご紹介しました。開発者にとっての Azure Functions を使用するメリットは C#, F#, Node.js, Java, PHP などの開発言語を引き続き使用できる一方で、OS やミドルウェアを意識する必要がなくなり、アプリケーションロジックのみに集中できるようになることです。今回は C# のコーディングを一例としてご紹介しましたが、これ以外の言語についてもこちらにサンプルが公開されていますので、お好みの言語を使って サーバーレス・コンピューティングを体感頂ければと思います。