このページの本文へ

FIXER cloud.config Tech Blog

実用性重視!AzureのマネージドID活用のサンプルコード(アプリコード)

2022年09月08日 10時00分更新

文● 松枝宏樹/FIXER

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「実用性重視!AzureのマネージドID活用のサンプルコード(アプリコード)」を再編集したものです。

下記のサンプル実装のアプリコード部分を解説します。

https://github.com/hirokimatsueda/azure-managed-id-sample

アプリ処理詳細

 コードはこちら:https://github.com/hirokimatsueda/azure-managed-id-sample/blob/main/applications/DataApis

詳細と言うほどのものではないですが…。

GetData

 リクエストパラメーターからIDとcategoryを読み取って、対象のデータをCosmos DBから取得し返却します。

PutData

 リクエストボディのデータをCosmos DBにUpsertします。

実装のポイント

 マネージドIDという観点で言うと、CosmosClientに渡すクレデンシャル情報に new DefaultAzureCredential() を指定するくらいです。

private static CosmosClientInitializeCosmosClient()
{
 return new CosmosClient(Environment.GetEnvironmentVariable("COSMOS_ENDPOINT", EnvironmentVariableTarget.Process), new DefaultAzureCredential());
}

 これによりFunctions上ではマネージドIDのクレデンシャルが使用されます。

 ローカルPC上で実行する場合は、ローカルPC上の認証情報を使用してくれるので、例えばaz loginしたユーザーがCosmos DBのデータへのアクセス権限を持っていればローカルPCでデバッグが可能です。

 ほかのポイントとしては、CosmosClientをメソッド呼び出し時に生成するのではなくStatic変数として持っておき、Lazyクラスを活用した初期化を実施しています。

private static Lazy lazyClient = new Lazy(InitializeCosmosClient);

 これにより CosmosClientの初期化というコストの高い処理回数を削減しています。

まとめ

 アプリ開発のポイントを整理しました。

 ポイントと言いつつも、インターネットで探せば見つかる情報ばかりではありますね。

 インフラの設定が整っていればアプリの実装はシンプルなのでありがたいです。

 これでマネージドIDの使用有無はプロジェクトの進行に影響なしですね?

松枝 宏樹/FIXER
愛知県在住、リモートワーク気味なエンジニア。
得意分野はC#、ASP.NET、terraform、AKSなど。

カテゴリートップへ