[python] FastAPI에서 AWS S3와의 파일 업로드 연동

FastAPI는 빠르고 현대적인 API를 빌드하기 위한 Python 웹 프레임워크입니다. 이번에는 FastAPI를 사용하여 AWS S3와의 파일 업로드를 어떻게 연동하는지 알아보겠습니다.

필수 패키지 설치

먼저, 필요한 패키지들을 설치해야 합니다. 다음 명령어를 사용하여 boto3python-multipart를 설치합니다.

pip install boto3 python-multipart

AWS 인증 설정

AWS SDK for Python인 boto3를 사용하여 S3와 통신하기 위해서는 AWS 계정에 액세스할 수 있는 인증 정보가 필요합니다. AWS Management Console을 사용하여 액세스 키와 시크릿 키를 생성하고, 해당 정보를 시스템 환경 변수로 설정하거나 AWS 자격 증명 프로필을 사용하여 설정할 수 있습니다.

FastAPI 앱 설정

이제 FastAPI 앱을 설정해봅시다. 먼저, FastAPI를 임포트하고 앱을 생성합니다.

from fastapi import FastAPI, File, UploadFile
import boto3
from botocore.exceptions import NoCredentialsError
import os

app = FastAPI()

그런 다음, 업로드된 파일을 S3로 전송하는 엔드포인트를 정의합니다.

@app.post("/upload/")
async def upload_file(file: UploadFile = File(...)):
    s3 = boto3.client('s3')

    try:
        s3.upload_fileobj(file.file, 'bucket_name', file.filename)
        return {"message": "파일이 성공적으로 업로드되었습니다."}
    except NoCredentialsError:
        return {"error": "AWS 자격 증명 정보를 찾을 수 없습니다."}

이제 FastAPI 앱이 POST /upload/ 엔드포인트로 파일 업로드를 처리할 수 있게 되었습니다.

결론

FastAPI를 사용하여 AWS S3와의 파일 업로드를 쉽게 연동하는 방법을 살펴보았습니다. 이제 이러한 기능을 통해 빠르고 효율적으로 파일을 업로드하고 관리할 수 있습니다. FastAPI 및 AWS SDK for Python의 문서를 참조하여 더 많은 기능을 익힐 수 있습니다.

참고 자료: