Azure Functions アプリの設定について
Tailwind Traders のエンジニアであるあなたは、データベースに接続する API を操作しています。 この API は、データベース接続文字列を使用してそのデータベースに接続されます。 このモジュールでは、Azure Functions API で接続文字列などの機密情報を格納するためのベスト プラクティスについて説明します。
接続文字列をアプリ設定として格納する
接続文字列はハードコーディングしないことをお勧めします。 おそらく、さまざまなファイルで接続文字列を使用することになりますが、将来、接続文字列は変更される可能性があります。
接続文字列をアプリ設定として格納する必要があります。
- アプリ設定は 1 か所で指定され、アプリ全体で参照されます。
- コードを変更しなくても、将来いつでも簡単に変更できます。
- アプリ設定がソース管理にチェックインされることはありません。
Azure Functions プロジェクトには、local.settings.json
ファイルがあります。 このファイルには、ローカルで開発するときにアプリで構成値として使用されるキーと値のペアのセットが含まれます。 Values
オブジェクトには、独自の項目を追加できます。 これらの値にはコードからアクセスできます。
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "",
"FUNCTIONS_WORKER_RUNTIME": "node",
"AzureWebJobsFeatureFlags": "EnableWorkerIndexing"
}
}
接続文字列を追加する場合は、"CONNECTION_STRING" という名前 (または任意の名前) の別のプロパティを追加し、接続文字列をデータベースに渡すことができます。
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "",
"FUNCTIONS_WORKER_RUNTIME": "node",
"AzureWebJobsFeatureFlags": "EnableWorkerIndexing",
"CONNECTION_STRING": "AccountEndpoint=https://tailwind-traders-7071.documents.azure.com:443/;AccountKey=123456;"
}
}
Azure Functions コードでアプリ設定にアクセスする
JavaScript から Azure Functions のこれらの構成値にアクセスするには、process.env
オブジェクトを使用します。 これには、local.settings.json
ファイルに指定されているすべてのキーと値のペアが含まれることになります。
./api/src/services/product.services.ts
にある次のコードは、process.env
オブジェクトから接続文字列を読み取って、Azure Cosmos DB サービスにアクセスするための CosmosClient オブジェクトを作成します。
let client = new CosmosClient(process.env.CONNECTION_STRING);
これで、ローカルで開発する際に接続文字列を安全に格納する方法と、その文字列をアプリケーションで参照する方法がわかりました。