[F5]キーを押すなどしてデバッグ実行を始めると、次のようなウィンドウが表示される(あるいはAzure Functions Core Toolsのダウンロードとインストールを行うようにいわれるかもしれない。そのときにはこれをダウンロード、インストールする必要がある)。
また、次のようにファイアウォールでコマンドラインツールに許可を与える必要もあるかもしれない。
デバッグ実行を開始したら、先ほど見たBLOBコンテナの内容を一覧するウィンドウでファイルのアップロードを行ってみよう。ウィンドウ上部の[BLOB のアップロード]ボタン(上向きの矢印)をクリックすると、以下に示すダイアログが表示されるので、何か適当なファイルを選択し、[OK]ボタンをクリックする。
アップロードが終わると、ウィンドウの表示が次のように変わる。
そして、Azure Functionsのコマンドラインツールには次のように関数の実行が始まったこと、関数を実行した結果(ファイル名とファイルサイズの表示)、関数の実行が終了したことが表示される。
Azure Functionsプロジェクトをデバッグ実行しようとすると、「HTTP が URL http://localhost:7071/ を登録できませんでした」といったメッセージが表示され、デバッグ実行を行えないときがある。これはデバッグで使用するローカルホストの7071ポートが既に登録済みとなっていることが原因で発生する。これを回避するには管理者としてコマンドプロンプトを起動して「netsh http delete urlacl url=http://+:7071/」を実行するとよい。あるいはlocal.settings.jsonファイルで使用するポートを変更してもよい。
もちろん、ブレークポイントを設定して、各種パラメーターの値を確認するといったことも可能だ。ただし、本稿ではプロジェクトテンプレートから生成されたコードのままなので、これについては割愛する。
最後に、作成したAzure FunctionsプロジェクトをAzureに発行する手順を見てみよう。
Azure FunctionsプロジェクトをAzureに発行するには、ソリューションエクスプローラーでプロジェクトを右クリックして、コンテキストメニューから[発行]を選択する。すると、次のようなウィンドウが表示される。
ここで[Azure 関数アプリ]と[新規作成]ラジオボタンを選択して、[発行]ボタンをクリックしよう(既にAzureポータルなどでAzure Functionsアプリを作成している場合は[既存のものを選択]ラジオボタンを選択してもよいが、本稿では新規に作成することにしよう)。[発行]ボタンをクリックすると、次のようなダイアログが表示される。
アプリの名前、使用するAzureのサブスクリプション、アプリを作成するリソースグループ、課金プラン、ストレージアカウントを設定して、[作成]ボタンをクリックすると、発行の処理が開始される。
発行したAzure FunctionsアプリはAzureポータルからも確認できる。例えば、以下はAzureへの発行後にファイルをストレージアカウントにファイルをアップロードしたところだ。ウィンドウ下部の[ログ]に「C# Blob trigger function Processed blob」と表示され、その下にファイル名とファイルサイズが続いていることから、この関数が正常に実行されたことが分かる。
[ログ]の上に表示されているのは、このアプリの構成情報を記したfunction.jsonファイルだ(現在は読み取り専用となっているのでグレーで表示)。その内容を以下に示す。
{
"generatedBy": "Microsoft.NET.Sdk.Functions-1.0.0.0",
"configurationSource": "attributes",
"bindings": [
{
"type": "blobTrigger",
"connection": "AzureWebJobsStorage",
"path": "samples-workitems/{name}",
"name": "myBlob"
}
],
"disabled": false,
"scriptFile": "..\\bin\\FunctionApp1.dll",
"entryPoint": "FunctionApp1.Function1.Run"
}
種類が[Blob trigger]で、接続文字列にはAzureWebJobsStorageに指定したものが使われ、BLOBコンテナには「samples-workitems」が使われることなど、これまでに見てきた設定と同様なものが記述されていることが分かるはずだ。
今回はVS 2017を使って、BLOBコンテナへのファイルアップロードをトリガーとして実行される関数を例に、Azure Functionsプロジェクトの新規作成からデバッグ実行、Azureへの発行までの流れを見た。次回はAzure Functionsが提供する強力な「バインド」機能を取り上げる。
Copyright© Digital Advantage Corp. All Rights Reserved.