[python] FastAPI와 AWS RDS의 연동

FastAPI는 빠르고 현대적인 웹 프레임워크이며, AWS RDS(Relational Database Service)는 관리형 관계형 데이터베이스 서비스입니다. 이 블로그에서는 FastAPI 웹 애플리케이션을 AWS RDS와 연동하는 방법에 대해 알아보겠습니다.

AWS RDS 설정

우선, AWS 콘솔에 로그인하여 RDS 대시보드로 이동합니다. 새로운 데이터베이스를 생성하고 연결할 수 있는 보안 그룹을 설정합니다. 또한, 액세스 권한을 가진 RDS 데이터베이스 사용자를 생성하고, 애플리케이션에서 사용할 데이터베이스 이름, 엔드포인트, 사용자 이름 및 비밀번호를 확인합니다.

FastAPI 애플리케이션 설정

FastAPI 애플리케이션을 설정하기 전에, 먼저 필요한 패키지를 설치해야 합니다. asyncpg 패키지를 사용하여 PostgreSQL 데이터베이스에 연결할 수 있습니다.

# main.py

from fastapi import FastAPI
import asyncpg

app = FastAPI()

async def connect_to_db():
    conn = await asyncpg.connect(
        user="your_username",
        password="your_password",
        database="your_database",
        host="your_rds_endpoint"
    )
    return conn

@app.on_event("startup")
async def on_startup():
    app.state.db = await connect_to_db()

@app.on_event("shutdown")
async def on_shutdown():
    await app.state.db.close()

위 코드는 FastAPI 애플리케이션에서 데이터베이스에 연결하는 방법을 보여주고 있습니다. 데이터베이스 연결을 위해 connect_to_db 함수를 선언하고, FastAPI 애플리케이션의 시작과 종료 시 데이터베이스 연결을 수행하는 이벤트 리스너를 정의합니다.

데이터베이스 쿼리 실행

이제 데이터베이스에 연결했으므로, 필요에 따라 데이터를 쿼리하고 조작할 수 있습니다.

# main.py

from fastapi import FastAPI
import asyncpg

app = FastAPI()

...

@app.get("/users/")
async def read_users():
    query = "SELECT * FROM users"
    rows = await app.state.db.fetch(query)
    return rows

위 코드는 /users/ 엔드포인트를 통해 사용자 정보를 조회하는 예시입니다.

이제 FastAPI 웹 애플리케이션과 AWS RDS 데이터베이스가 성공적으로 연동되었습니다. 이를 통해 안전하고 확장 가능한 웹 애플리케이션을 개발할 수 있습니다.

더 자세한 내용은 FastAPI 공식 문서AWS RDS 개발자 가이드를 참고하시기 바랍니다.