0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Functions Worker 2.0.0 でユーザーシークレット

Posted at

やりたいこと

.NET 9 のタイミングでリリースされた Microsoft.Azure.Functions.Worker 2.0.0 で FunctionsApplication が追加され、Program.cs の書き方が少し変わりました。
ローカルで実行する際のシークレットはこれまでユーザーシークレットで管理していたので、同じようにできる方法を確認します。

環境

  • Visual Studio Community 2022 Version 17.12.3
  • Azure Functions .NET 9 Isolatad

やり方

Program.cs のテンプレート

Visual Studio で Azure Functions プロジェクトを作成したときのテンプレートがこちら。

using Microsoft.Azure.Functions.Worker.Builder;
using Microsoft.Extensions.Hosting;

var builder = FunctionsApplication.CreateBuilder(args);

builder.ConfigureFunctionsWebApplication();

// Application Insights isn't enabled by default. See https://aka.ms/AAt8mw4.
// builder.Services
//     .AddApplicationInsightsTelemetryWorkerService()
//     .ConfigureFunctionsApplicationInsights();

builder.Build().Run();

以前の HostBuilder を使う方式よりも ASP.NET Core のように簡潔に記述できます。
コメントアウトされている部分は Application Insights の設定部分なので、今回は説明を割愛します。

ユーザーシークレットファイルの追加

  1. プロジェクトを右クリック
  2. ユーザーシークレットの管理(G)
  3. secrets.json にシークレットを追加
secrets.json
{
  "Message": "Hello World"
}

ユーザーシークレットをプログラムに追加

Program.cs に追加して先ほどのユーザーシークレットを読み込み、コンソールに出力してみます。

Program.cs
using Microsoft.Azure.Functions.Worker.Builder;
+ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;

var builder = FunctionsApplication.CreateBuilder(args);

builder.ConfigureFunctionsWebApplication();
+
+ builder.Configuration.AddUserSecrets(typeof(Program).Assembly, optional: true, reloadOnChange: false);
+ string message = builder.Configuration["Message"] ?? "failed";
+ Console.WriteLine(message);

// Application Insights isn't enabled by default. See https://aka.ms/AAt8mw4.
// builder.Services
//     .AddApplicationInsightsTelemetryWorkerService()
//     .ConfigureFunctionsApplicationInsights();

builder.Build().Run();

動作確認

プロジェクトを実行します。

[2024-12-07T02:17:10.101Z] Azure Functions .NET Worker (PID: 25428) initialized in debug mode. Waiting for debugger to attach...
[2024-12-07T02:17:10.103Z] Hello World

ユーザーシークレットから文字列を読み込んで表示できました。

まとめ

非常に簡単に Azure Functions へユーザーシークレットを追加することができました。いい感じです。

参考

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?