0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的備忘録:FastAPI の環境構成を開発と本番で切り替えるシンプルな方法②

Last updated at Posted at 2025-05-11

はじめに

本記事では、FastAPIやPythonアプリをAWS ECS Fargate上にデプロイする際の環境変数の管理方法についてまとめています。

個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。

ローカルと本番環境での環境変数の扱いを切り替えることで、安全かつ効率的な運用を目指します。

書こうと思ったきっかけ

受講しているITスクールのハッカソンの開発の一環で、開発環境と本番環境で異なる環境変数の管理が必要となったため、混乱を避けるためにも設定方法を記事として記録しておくことにしました。

内容

環境ごとの.env利用有無

環境 .env 読み込み 備考
ローカル 読み込む .env に値を記載
本番(Fargate) 読み込まない Secrets Managerやタスク定義から注入

方法①:マネジメントコンソールから設定する手順

  1. ECS → タスク定義 → 対象のタスク定義を選択 → 新しいリビジョンを作成
  2. [コンテナの定義] → 編集 → 環境変数セクションへ移動

Screenshot 2025-05-12 at 7.31.39.png

  1. 以下を追加:
名前 値(例)
ENV production
DATABASE_URL mysql+pymysql://user:password@host:3306/dbname
  1. 保存してリビジョンを作成
  2. 新しいリビジョンでサービスを更新(またはタスクを再起動)

なぜ ENV=production が必要?

"name": "ENV", "value": "production" をタスク定義の環境変数に追加する理由は、アプリケーション側で「本番環境かどうか」を判定するためです。

if os.getenv("ENV") != "production":
    load_dotenv()

このように、ENVproduction であれば .env ファイルを読み込まないようにしています。

  • .env を読み込んでしまうと、ECSに設定した環境変数よりも .env の値が優先される可能性がある
  • .env が存在しない状態で load_dotenv() を呼ぶとエラーになる場合がある(意図しない挙動)
  • ローカルと本番の動作切り替えを簡単に行える

つまり「ENV=production」は、本番環境で.envを無効化するためのスイッチのような役割を果たしており、セキュリティや安定運用のために重要です。

方法②:JSONのタスク定義で書く場合

{
  "containerDefinitions": [
    {
      "name": "your-container-name",
      "image": "your-image",
      "environment": [
        {
          "name": "ENV",
          "value": "production"
        },
        {
          "name": "DATABASE_URL",
          "value": "mysql+pymysql://user:password@host:3306/dbname"
        }
      ]
    }
  ]
}

セキュリティ面の注意

DATABASE_URL にはパスワードなどの機密情報が含まれるため、本番環境では Secrets Manager や SSM パラメータストアを使って管理するのがベストプラクティスです。

ECSのタスク定義では secrets セクションを利用することで、Secrets Manager に格納された情報を直接環境変数として注入することができます。

まとめ

  • ローカルでは .env に記載した環境変数を使用
  • 本番では Secrets Manager やタスク定義で注入し、.env は使わない
  • ENV=production によって本番と開発の切り替えを制御
  • 安全で柔軟な環境変数管理のため、AWSリソースと連携した設計を行う
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?