前回のAzure Functions 2.0基礎編に引き続き、 今回も基礎的な内容を試してみようと思います。
初めに
前回作成したFunctions Appをそのまま使い回しています。
Function Appの作成は下記を参照してください。
onarimonstudio.hatenablog.com
今回やりたいこと
Blobストレージ内でファイルがアップロードされたことをトリガーにして、
ファイルの名前と容量を取得し、ログに出力する。
※Azureポータルからの簡単な作成。
作成手順
監視するBlobストレージを作成します
Functionsで認識できるようにするため、
ストレージの種類を"汎用アカウント"で作成してください。
作成したBlobストレージにコンテナーを追加します。
項目名 | 入力値 |
---|---|
名前 | 今回はsamples-workitems と入力 |
パブリックアクセスレベル | プライベート |
Azure Blob Storage Triggerを使用した関数を作成します
まず、前回作成したFunctions Appを開き、関数の右にある"+"ボタンをクリックします。
そうすると下記の画面が表示されるため、"Azure Blob Trigger"を選択します。
下記のように「拡張機能がインストールされていません」とメッセージが表示されたときは、インストールをクリックします。
関数の設定画面を入力します
項目名 | 入力値 |
---|---|
名前 | 関数の名前を各自設定してください |
パス | <管理するコンテナー名>/{name} 今回は samples-workitems/{name} と入力します。このように設定するとBlob のファイル名は、name パラメーターとしてバインディングで渡されます。 |
ストレージアカウント接続 | 今までFunction Appに接続したストレージのリストが表示されます。 今回監視を行うストレージアカウントを選択しましょう。 リストにない場合は"新規"ボタンをクリックしてストレージを追加します。 汎用ストレージ以外は表示されないようなので注意です。 |
作成を押すと、関数が自動的に作成されます。 コードも下記のようなコードが自動的に作成されていると思います。
public static void Run(Stream myBlob, string name, ILogger log) { log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes"); }
ログ監視ウィンドウを開く
作成した関数画面の一番下にログボタンがあるのでクリックするとログを表示する画面が表示されます。
現在はストレージに何もアップロードしていないのでログは表示されていません。
何かトリガーが動いた場合、こちらに情報が出力されます。
Blobストレージにファイルをアップロードする
今回はパソコンに入ってた"salmon.PNG"をアップロードします。
作成したストレージアカウント→コンテナ→アップロード
サーモン?の画像をアップロードします。
そうすると先ほどのログ画面にアップロードしたファイルの名前と容量が下記の通り出力されました。
2018-11-27T09:31:16 Welcome, you are now connected to log-streaming service. 2018-11-27T09:32:16 No new trace in the past 1 min(s). 2018-11-27T09:33:16 No new trace in the past 2 min(s). 2018-11-27T09:34:07.830 [Information] Executing 'Functions.BlobTriggerTest1' (Reason='New blob detected: samples-workitems/salmon.PNG', Id=c040abbf-4c8c-41bc-8340-65a79d34d710) 2018-11-27T09:34:07.860 [Information] C# Blob trigger function Processed blob Name:salmon.PNG Size: 39635 Bytes 2018-11-27T09:34:08.116 [Information] Executed 'Functions.BlobTriggerTest1' (Succeeded, Id=c040abbf-4c8c-41bc-8340-65a79d34d710)
完成!!
functions2.0「Blob Storage Trigger」の使い道
以前、Tech Summit 2018で参加した服部さんのセッションでは、
モバイルアプリで取った写真をBlobにアップロードして、
自動的に写真をスケーリングするシナリオが紹介されていました。
服部さんのセッションについて、詳しくはこちら onarimonstudio.hatenablog.com
blobストレージにアップロードした画像を自動的に加工したり、移動したりする用途で使われるのかなと思います。