イベントドリブンのサーバーレス コンピューティング プラットフォームを提供する Azure サービス。
こんにちは 武次夢太郎,
Microsoft Q&A にお問い合わせいただきありがとうございます.
Azure Functions のログ送信設定を、Log Analytics で Shared Key 認証から Managed Identity 認証へ移行しようとしているようですね。
以下の手順で対応できます。
Managed Identity の設定
まず、Azure Function に システム割り当てまたはユーザー割り当ての Managed Identity が設定されていることを確認してください。 未設定の場合は、Azure ポータルの Function の設定画面から有効化する必要があります。
権限の割り当て
Managed Identity に、Log Analytics Workspace へデータを送信するための必要な権限を付与します。 具体的には、対象の Log Analytics Workspace に対して「Log Analytics Contributor」ロールを割り当ててください。
Azure Function コードの更新
Shared Key の代わりに Managed Identity を使って認証するよう、Azure Function のコードを修正します。 以下のようにして Log Analytics 用のアクセストークンを取得できます。
var azureServiceTokenProvider = new AzureServiceTokenProvider();
string token = await azureServiceTokenProvider.GetAccessTokenAsync("https://api.loganalytics.io/");
データ送信
取得したトークンを Authorization ヘッダーに含めて、Log Analytics へデータを送信します。 例は以下の通りです。
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token);
// Log Analytics にデータを送信する処理
}
テスト
変更後は、Shared Key を使わずにログが正しく Log Analytics に送信されていることを必ずテストしてください。
役に立てば嬉しいです!