🔌
Azure Functions (PowerShell) で BLOB ストレージのファイルを取得する
はじめに
最近さまざまな要件で Azure Functions を使うことが多く、備忘録的に記事も多くなってきています。今回は最終ゴールとして、 Azure Functions を使用して、BLOB ストレージに格納した CSV ファイルログを Azure Monitor のデータ インジェスト API から Sentinel (Log Analytics ワークスペース) に送信することを実現します。
そのために、まずは Azure Functions の BLOB Storage Trigger の関数で BLOB ストレージ内のファイルを取得できるところまでの基本的な動作を確認します。なお、言語は PowerShell を使用しています。
設定
まず Azure Functions 作成時にファイルを取得したいストレージ アカウントを接続先に指定します。
Azure Functions 作成後、 Azure Storage Blob Trigger の関数を作成します。Path は <コンテナ名>/{name}
を指定します。この設定によって、指定したコンテナで新規にファイルが追加された場合にファイルをパラメータとして関数がトリガーされます。
デフォルトは以下のようになっています。$InputBlob
がトリガーされた BLOB の内容が格納されます。byte[] が示す通り、$InputBlob
はバイト配列として格納されます。
そのため、以下のように UTF-8 エンコーディングを使用して文字列に変換して出力します。
# Input bindings are passed in via param block.
param([byte[]] $InputBlob, $TriggerMetadata)
# Write out the blob name and size to the information log.
# Write-Host "PowerShell Blob trigger function Processed blob! Name: $($TriggerMetadata.Name) Size: $($InputBlob.Length) bytes"
#byte array を string へ Blob を変換
$blobContent = [System.Text.Encoding]::UTF8.GetString($inputBlob)
Write-Host $blobContent
検証
対象のコンテナに以下のようなファイルを格納します。
1-2 分後、関数がトリガーされ、以下のようにファイル内容が出力できていることが確認できました。
Discussion