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);

これで、ローカルで開発する際に接続文字列を安全に格納する方法と、その文字列をアプリケーションで参照する方法がわかりました。