[Azure] Service Connector の使い方を追ってみた
Azure の Service Connector が GA されたとのこと。
ドキュメントおよびチュートリアルを見ていたのですが、それだけだと使い方にピンとこなかったので調べてみました。
ドキュメントおよびチュートリアル
今回追ってみたサンプルは、上記のチュートリアルで使われている下記のサンプルです。
使い方
Service Connector の設定
App Service 側から Blob Storage へのアクセスは、App Service の Managed ID で接続するように構成しています。
az webapp connection create storage-blob -g ServiceConnector-tutorial-rg -n <app-name> --tg ServiceConnector-tutorial-rg --account <storage-name> --system-identity
アプリ側での呼び出し
直接の呼び出しは Pages/Index.cshtml.cs
の下記の箇所。
StorageHelper.UploadBlob(Environment.GetEnvironmentVariable(Const.ENDPOINT_ENV_KEY), Const.CONTAINER_NAME, Const.BLOB_NAME, content).Wait();
StorageHelper 側での UploadBlob
関数の定義は下記の通りです。
static public async Task UploadBlob(string containerEndpoint, string containerName, string blobName, string blobContents)
{
var blobContainerUri = new Uri(new Uri(containerEndpoint), containerName);
BlobContainerClient containerClient = new BlobContainerClient(blobContainerUri, new DefaultAzureCredential());
...
また、Const.ENDPOINT_ENV_KEY
はアプリ内部で定義されています。
public class Const
{
public const string ENDPOINT_ENV_KEY = "AZURE_STORAGEBLOB_RESOURCEENDPOINT";
public const string CONTAINER_NAME = "default";
public const string BLOB_NAME = "HelloWorld";
}
ということで、アクセスする URL は Environment.GetEnvironmentVariable(Const.ENDPOINT_ENV_KEY)
つまり、環境変数の AZURE_STORAGEBLOB_RESOURCEENDPOINT
を取得してきて加工しているということですね。
App Service (Service Connector) 側での動作
この AZURE_STORAGEBLOB_RESOURCEENDPOINT
環境変数が、Service Connector を作成した際に自動で定義されるようになっています。
結果として、今回のチュートリアルのような実装を行うことで Blob Storage へのアクセスを実現できるというわけでした。
まとめ
こういう処理を Service Connector 作成時に行ってくれることで、アプリ側での直接指定を無くしたり、個別に手動で環境変数を設定したりする手間を省いてくれている、ということですね!
Discussion