Python: シークレット(環境変数)の管理

このドキュメントは高度な使用法ガイドの一部です。完全なガイドはこちらからご覧いただけます:Pythonデプロイメントをさらに進める

👋 Stackheroのドキュメントへようこそ!

Stackheroは、数多くの利点を提供するPythonクラウドソリューションを提供しています。主な利点は以下の通りです:

  • シンプルなgit pushでアプリケーションを数秒でデプロイ
  • 独自のドメイン名を使用し、HTTPS証明書の自動設定による強化されたセキュリティを享受。
  • 自動バックアップワンクリックアップデート、そしてシンプルで透明性のある予測可能な価格設定で安心を提供。
  • プライベートで専用のVMによる最適なパフォーマンスと強固なセキュリティを実現。

時間を節約し、生活を簡素化: StackheroのPythonクラウドホスティングソリューションを試すのに5分しかかかりません

データベースやサードパーティサービスのトークンやパスワードなどのシークレットを保存する必要がある時が来ます。これらを安全に保存することが重要です。リポジトリやコードに直接埋め込むことは、重大なセキュリティリスクを生むため避けてください。

環境変数を使用することには2つの重要な利点があります。

  1. シークレットがGitリポジトリに保存されないため、不正アクセスのリスクが減少します。
  2. 異なる環境で異なる資格情報を使用できます。例えば、本番環境では本番データベースを使用し、開発中は開発データベースを使用します。

開発環境では、プロジェクトのルートに.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環境変数Stackheroの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"