Python: シークレット(環境変数)の管理
このドキュメントは高度な使用法ガイドの一部です。完全なガイドはこちらからご覧いただけます:Pythonデプロイメントをさらに進める。
👋 Stackheroのドキュメントへようこそ!
Stackheroは、数多くの利点を提供するPythonクラウドソリューションを提供しています。主な利点は以下の通りです:
- シンプルな
git pushでアプリケーションを数秒でデプロイ。- 独自のドメイン名を使用し、HTTPS証明書の自動設定による強化されたセキュリティを享受。
- 自動バックアップ、ワンクリックアップデート、そしてシンプルで透明性のある予測可能な価格設定で安心を提供。
- プライベートで専用のVMによる最適なパフォーマンスと強固なセキュリティを実現。
時間を節約し、生活を簡素化: StackheroのPythonクラウドホスティングソリューションを試すのに5分しかかかりません!
データベースやサードパーティサービスのトークンやパスワードなどのシークレットを保存する必要がある時が来ます。これらを安全に保存することが重要です。リポジトリやコードに直接埋め込むことは、重大なセキュリティリスクを生むため避けてください。
環境変数を使用することには2つの重要な利点があります。
- シークレットがGitリポジトリに保存されないため、不正アクセスのリスクが減少します。
- 異なる環境で異なる資格情報を使用できます。例えば、本番環境では本番データベースを使用し、開発中は開発データベースを使用します。
開発用の環境変数の設定
開発環境では、プロジェクトのルートに.envファイルを作成します。このファイルはGitから除外され、コミットされないようにします。
.envファイルを自動的に読み込むには、python-dotenvモジュールを使用できます。
pip install python-dotenv
pip freeze > requirements.txt
次に、プロジェクトのルートに.envファイルを作成し、変数を追加します。
ENV="development"
DATABASE_PASSWORD="secretPassword"
THIRD_API_PRIVATE_KEY="secretKey"
# ...
最後に、.envファイルがGitから除外されるように、.gitignoreに追加します。
echo ".env" >> .gitignore
ステージングおよび本番用の環境変数の設定
.envファイルはステージングおよび本番環境には十分に安全ではありません。代わりに、StackheroではPythonサービスの設定に環境変数を安全に保存できます。
StackheroダッシュボードでPythonサービスを選択し、「Configure」ボタンをクリックしてこれらの変数を設定できます。
StackheroのPython環境変数
Pythonでの環境変数へのアクセス
Pythonで環境変数にアクセスするのは簡単です。以下のようにos.environ.get()を使用します。
import os
print(os.environ.get('ENV'))
例えば、環境変数を使用してRedisサーバーに接続するには、次のようにします。
import os
import redis
r = redis.from_url(os.environ.get("REDIS_URL"))
開発環境では、.envファイルでREDIS_URLを次のように設定します。
REDIS_URL="redis://localhost:6379"
本番およびステージングでは、StackheroダッシュボードのPythonサービス設定でREDIS_URLを定義します。
REDIS_URL="rediss://default:<yourPassword>@<XXXXXX>.stackhero-network.com:6380"