0
1

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 + SQLAlchemy アプリケーションにおける環境変数の管理方法についてまとめています。

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

特に、本番環境と開発環境での環境変数の読み込み方法を切り替える方法を紹介します。

書こうと思ったきっかけ

受講しているITスクールのハッカソンの開発の一環で、データベース接続情報などの機密情報を安全に管理しつつ、開発時には柔軟に変更できる仕組みを残しておきたかったため、この記事を備忘録としてまとめています。

内容

以下のコードでは、開発環境では .env ファイルを読み込み、本番環境(例:AWS Fargate)では .env に依存せず、事前に設定された環境変数(Secrets Managerなど)から読み込む構成にしています。

import os
from dotenv import load_dotenv
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, declarative_base
from core.config import settings

# 本番以外のときだけ .env を読み込む
if os.getenv("ENV") != "production":
    load_dotenv()

DATABASE_URL = os.getenv("DATABASE_URL")

engine = create_engine(DATABASE_URL, echo=True, future=True)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()

def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()

このようにすることで、開発時は .env に接続情報を記述し、本番時はタスク定義やSecrets Managerから環境変数を注入するだけで切り替えが可能になります。

まとめ

  • .env の読み込みは ENV != "production" のときに限定
  • 本番環境では AWS Fargate のタスク定義や Secrets Manager を利用
  • 開発環境と本番環境の切り分けが簡単になる

セキュアかつ柔軟な構成を実現できるため、今後のプロジェクトでも活用していきたいと考えています...!

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?