こんにちは、Michaelです。
今回は、前回作成したAzure FunctionsのPython関数でトリガー設定を変更し、Azure StorageのBlobコンテナーにデータがアップロードされた場合に動作する関数を検証します。
トリガー設定の変更
前回作成したPython関数では、ストレージキューを監視して関数が動作するようにトリガーが設定されていました。今回はトリガーをBlobコンテナーとするため、トリガー設定の変更を行い、アップロードされたテキストファイルの内容を表示するように設定します。
Azureポータルで前回作成したFunction Appの関数エディタを開きます。設定を変更するPython関数を選択すると、関数にサブメニューが表示されるため、サブメニューから「統合」をクリックします。
「統合」を開くと、「トリガー」に「Azure Queue Storage trigger」が設定されているため、削除をクリックしてトリガー設定を解除します。
「+新しいトリガー」をクリックすると、新たにトリガーを設定できます。今回は、Blobコンテナーを監視するため、一覧から「Azure Blobストレージ」を選択します。
Azure Blobストレージtriggerの設定が表示されたら、「BLOBパラメータ名」、「パス」、「ストレージアカウント接続」をそれぞれ設定します。「BLOBパラメータ名」には任意の名称、「パス」、「ストレージアカウント接続」には監視を行うBlobコンテナーのパスとそのストレージアカウントを設定します。「パス」ではBlob名のパターンを設定することができ、今回は「(コンテナー名)/{name}.txt」としてテキストファイル(.txt)がアップロードされた場合を監視するように設定しています。最後に、「保存」をクリックして設定を適応させます。
トリガーを設定したら、入力したテキストファイルの内容をログ画面に出力するようスクリプトにも変更を加えます。os.evironのキーをトリガーで設定した「BLOBパラメータ名」に変更すると、Function Appの一時ファイルのパスが取得できます。一時ファイルにはアップロードしたデータのコピーが格納されるため、以下の簡易的なスクリプトでアップロードしたテキストの内容を表示します。スクリプトを変更したら「保存および実行」をクリックし、関数を開始します。
1 2 3 4 5 |
import os # テキストの確認 inputText = open(os.environ['inputBlob']).read() print(inputText) |
試しに、「Hey Cortana!!」と入力した「test01.txt」というファイルをトリガー設定したBlobコンテナーにアップロードすると、アップロード時刻の約10秒後に関数が開始され、ログにテキストが表示されました。
一方、「Hey,Cortana!!」と入力した「test02.csv」というCSVファイルをアップロードした場合には、40秒以上経っても関数は開始されず、Blob名のパターンに合わせて処理が行われていることがわかりました。
今回は、Blobコンテナーをトリガーに実行する関数を作成しました。これを利用すれば、Blobコンテナーにアップロードされた画像を、そのままCognitive Servicesで分析、振り分けするといった用途にも応用できるのではないでしょうか。
次回もお楽しみに!