LoginSignup
5
1

More than 3 years have passed since last update.

Azure Functions の環境変数から値を取得する方法

Last updated at Posted at 2020-07-19

TL;DR

ConfigurationManager を利用した方法では値を取得できなくなっていたため, Environment を利用した。

はじめに

Azure Functions 開発をしている際に環境変数を利用することは多くあると思います。
その取得方法については ConfigurationManager クラスをオススメするものが日本語・英語の記事を問わずほとんどだと思います。
しかし, 今回 v3 で開発をし始めてみるとうまく取得できなかったため, 初心に戻って Microsoft Docs を参考に開発をしたらすんなりできたので, それの備忘録となります。

方法

事前条件

以下のような環境変数設定がされている前提で話を進めていきます。

json
{
  "IsEncrypted": false,
  "Values": {
    "SAMPLE_VALUE": "This is Sample Value"
  },
  "ConnectionStrings": {
    "DB_CONNECTION_STRING": {
      "ConnectionString": "This is Connection string",
      "ProviderName": "System.Data.SqlClient"
    }
  }
}

Values: 環境変数の取得

環境変数の取得はとてもシンプルで, Environment.GetEnvironmentVariable(string, EnvironmentVariableTarget) にキーを渡してあげるだけで簡単に取得できます。

sample.cs
namespace Sample
{
    public static class SampleFunction
    {
        [FunctionName("sample")]
        public static async Task<IActionResult> Run (
            [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req,
            ILogger log )
        {
            var x = Environment.GetEnvironmentVariable("SAMPLE_VALUE", EnvironmentVariableTarget.Process);
            return new OkObjectResult($"### { x }");
        }
    }
}

上記の Functions を起動し, ブラウザでアクセスすると以下のような出力がされると思います。
image.png

ConnectionStrings: 接続文字列の取得

では, 接続文字列の場合はどのように取得するのでしょうか?
これも非常にシンプルに解決でき, キーの前に ConnectionStrings: というプレフィクスを付けてあげるだけで取得できます。

sample.cs
namespace Sample
{
    public static class SampleFunction
    {
        [FunctionName("sample")]
        public static async Task<IActionResult> Run (
            [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req,
            ILogger log )
        {
            var x = Environment.GetEnvironmentVariable("ConnectionStrings:DB_CONNECTION_STRING", EnvironmentVariableTarget.Process);
            return new OkObjectResult($"### { x }");
        }
    }
}

上記の Functions を起動し, ブラウザでアクセスすると以下のような出力がされると思います。
image.png

おわりに

2020/07/20 現在の公式ドキュメントでは Environment.GetEnvironmentVariable(string, EnvironmentVariableTarget) を利用するように勧めているので, 素直にこれに従っておくのが良いでしょう。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1