1. .env
ファイルとは
.env
ファイルは、環境変数を定義するための設定ファイルです。開発環境やステージング、本番環境など、各種環境で異なる設定を簡単に管理するために使用されます。通常、以下のようにキーバリュー形式で定義されます。
KEY=value
DATABASE_URL=mysql://user:pass@localhost:3306/mydb
SECRET_KEY=your_secret_key
2. .env
ファイルの用途
.env
ファイルは、アプリケーションの設定や機密情報(APIキー、データベース接続情報など)を外部から管理するために利用されます。これにより、ソースコードを変更せずに環境設定を切り替えることができ、セキュリティリスクを軽減できます。
主な用途
- APIキーやトークンの管理:APIキーや認証トークンなどの機密情報をソースコードから分離し、外部に保存します。
- 環境依存の設定:ローカル、ステージング、本番など異なる環境ごとに設定を切り替えます。
- デプロイ時の設定:環境変数を使って、デプロイ先の環境設定を簡単に適用します。
3. 環境変数の設定方法
3.1 ローカル環境での使用
ローカルで開発する場合、.env
ファイルをプロジェクトのルートディレクトリに置きます。アプリケーションがこのファイルを読み込んで、設定された環境変数を使用します。
例:
# .envファイル
DATABASE_URL=mysql://user:password@localhost:3306/mydb
SECRET_KEY=supersecretkey
3.2 本番環境での使用
本番環境では、.env
ファイルを使用することは推奨されません。代わりに、クラウドプロバイダやCI/CDツールで環境変数を管理します。
4. .env
ファイルの読み込み
.env
ファイルは、一般的には専用のライブラリを使ってアプリケーションに読み込ませます。
4.1 Pythonでの読み込み
Pythonでは、python-dotenv
ライブラリを使用して.env
ファイルを読み込みます。
from dotenv import load_dotenv
import os
# .envファイルを読み込む
load_dotenv()
# 環境変数の取得
db_url = os.getenv('DATABASE_URL')
secret_key = os.getenv('SECRET_KEY')
4.2 Azure Functionsでの使用
Azure Functionsでは、ローカル開発時に.env
ファイルを読み込むためにpython-dotenv
を使うことが推奨されますが、本番環境ではAzure PortalやARMテンプレートで環境変数を設定します。
from dotenv import load_dotenv
import os
# 環境変数を読み込む
load_dotenv()
5. 本番環境での環境変数設定
本番環境での環境変数は、.env
ファイルを使わずにAzure PortalやCI/CDツールを利用して管理します。
5.1 Azure Portalの「Application Settings」から設定
Azure Functionsの本番環境で環境変数を設定する場合、Azure Portalから行います。
手順
- Azure Portalにログインし、Function Appを選択。
- 左側のメニューから「構成」を選択。
- 「アプリケーション設定」のタブで環境変数を追加、編集。
5.2 CI/CDツールでの設定
CI/CDパイプラインを利用して、デプロイ時に環境変数を自動的に設定します。たとえば、Azure DevOpsやGitHub Actionsを使用して、デプロイ先に適用します。
# GitHub Actionsの例
jobs:
deploy:
steps:
- name: Set environment variables
run: echo "API_KEY=${{ secrets.API_KEY }}"
5.3 ARMテンプレートやBicepを使った設定
Azure Resource Manager (ARM) テンプレートやBicepファイルを使って、環境変数をデプロイ時に設定します。
{
"type": "Microsoft.Web/sites",
"apiVersion": "2021-02-01",
"name": "[variables('functionAppName')]",
"properties": {
"siteConfig": {
"appSettings": [
{
"name": "API_KEY",
"value": "[parameters('apiKey')]"
}
]
}
}
}
5.4 Azure App Configurationの利用
Azure App Configurationを使って、環境設定や機密情報を集中管理できます。
主な特徴
- 環境ごとに設定を分けることができる。
- バージョニングやキーのローテーションが容易。
6. セキュリティ上の注意点
.env
ファイルには機密情報が含まれるため、以下の点に注意してください。
-
バージョン管理に含めない:
.gitignore
に.env
ファイルを追加し、リポジトリにプッシュしないようにします。 - アクセス権の管理:環境変数やAPIキーにアクセスできるユーザーやサービスを適切に制限します。
- 定期的なローテーション:APIキーやパスワードは定期的に変更し、リスクを最小限に抑えます。
7. トラブルシューティング
-
環境変数が読み込まれない:
load_dotenv()
が正しく呼び出されているか、.env
ファイルが適切な場所にあるか確認します。 -
ローカルでは動作するが本番で動作しない:本番環境では、
.env
ファイルを使わず、Azure PortalやCI/CDで環境変数が設定されているか確認します。