プログラミング逆引き辞典

~ 多言語対応のプログラミングレシピ ~

Azure FunctionsでAzure Storageのファイル内容を読み込む方法

■サンプル

using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using System;
using System.Configuration;

namespace GetStorageFunc
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([TimerTrigger("0 */1 * * * *")]TimerInfo myTimer, ILogger log)
        {
            log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");

            // local.settings.jsonのValueからTestの値を取得する事ができる
            var str = ConfigurationManager.AppSettings.Get("Test");
            Console.WriteLine(str);

            // Azure Storageの接続文字列からAzure Storageアカウントを解析
            // ConfigurationManager.ConnectionStrings["StorageConStr"].ConnectionStringで
            // local.settings.jsonの「ConnectionStrings」に記載した「StorageConStr」を参照する
            // "ConnectionStrings" : {"StorageConStr" : "ストレージの接続文字列"}
            CloudStorageAccount account = CloudStorageAccount.Parse(
                ConfigurationManager.ConnectionStrings["StorageConStr"].ConnectionString);

            // Blobクライアント生成
            CloudBlobClient client = account.CreateCloudBlobClient();

            // Blobクライアントにコンテナー名をセットして、Azure Storageのコンテナーを参照できるようにする
            CloudBlobContainer container = client.GetContainerReference("test");

            // コンテナーが存在してない場合は作成
            container.CreateIfNotExistsAsync().Wait();

            // コンテナーからファイル内容を取得(第一引数:プレフィックス文字 第二引数:フラットリストにblobを一覧表示するかどうか)
            foreach (IListBlobItem item in container.ListBlobs(null, false))
            {
                // CloudBlockBlob型にキャスト
                CloudBlockBlob blob = (CloudBlockBlob)item;

                // ファイル名
                string fileName = blob.Name;

                // ファイル内容
                var fileContents = blob.DownloadTextAsync().Result;
            }
        }
    }
}