目次
検証環境
- Azure Functions v3
- Azure Blob Storage
- Azure.Storage.Blobs v12.8.0 (ライブラリ)
直書き
サンプルコード向けなら直書き。
var blobServiceClient = new BlobServiceClient("connectionString"); var blobContainerClient = blobServiceClient.GetBlobContainerClient("blobContainerName"); var blobClient = blobContainerClient.GetBlobClient("blobName");
設定情報から取得
設定
ポータルで Azure Functions の構成からアプリケーション設定と接続文字列を設定できる。
アプリケーション設定には環境変数を設定する。
接続文字列にはDBの接続文字列を設定する。一応 Custom
を選択するとストレージの接続文字列も使えなくはない。
Azure Functions をローカル実行する時は、local.settings.json
が設定として使われる。
AzureWebJobsStorage
は、Azure Functions 作成時にリンクしたストレージの接続文字列が設定される。local.settings.json
で UseDevelopmentStorage=true
が設定されている場合は、ストレージエミュレーターに接続される。
今回は、Values
に APPLICTION_SETTINGS_VALUE
、ConnectionStrings
に DB_CONNECTION_STRING
を追加した。
ポータル上だと次の通り。
local.settings.json
では次のようになる。
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "APPLICTION_SETTINGS_VALUE": "ApplicationSettingsValue" }, "ConnectionStrings": { "DB_CONNECTION_STRING": "DBConnectionString" } }
実装
.NET Framework 版である v1 では、ConfigurationManager
を使用していた。
.NET Core 版である v2 以降では、ConfigurationMBuilder
を使用する。
ConfigurationMBuilder
に local.settings.json
を追加してから Build()
する。
ローカル実行の設定が不要な場合は、Configuration = new ConfigurationBuilder().Build();
でも動く。
Values
は、Configuration[<key>]
で取得する。
ConnectionStrings
は、Configuration.GetConnectionString(<key>)
で取得する。
using Microsoft.Extensions.Configuration; public static class Function1 { private static IConfigurationRoot Configuration { get; } static Function1() { var builder = new ConfigurationBuilder() .AddJsonFile("local.settings.json", true) .AddEnvironmentVariables(); Configuration = builder.Build(); } [FunctionName("Function1")] public static async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log) { var appSettingsValue = Configuration["APPLICTION_SETTIGS_VALUE"]; var connectionString = Configuration.GetConnectionString("DB_CONNECTION_STRING");
実際は接続に必要な情報を設定した上で利用する。
var blobServiceClient = new BlobServiceClient(Configuration["connectionString"]); var blobContainerClient = blobServiceClient.GetBlobContainerClient(Configuration["blobContainerName"]); var blobClient = blobContainerClient.GetBlobClient(Configuration["blobName"]);
参考
関連記事
- Azure Functions で Azure Cosmos DB (Table) を操作する
- Azure Functions で Azure Table Storage を操作する
- Azure Functions で Azure Queue Storage を操作する
- Azure Functions で Azure Blob Storage にファイルを保存する
- Azure Functions で Azure Blob Storage からファイルを取得する
- Azure Functions で Azure Key Valut から設定を読み込む
- Azure Functions で Startup クラスを定義して DI を利用する
- Azure Managed ID を利用する