[python] Flask와 Amazon S3를 이용한 파일 업로드 및 관리 방법

파일 업로드 및 저장은 웹 애플리케이션에서 흔히 사용되며, Amazon S3는 클라우드 기반의 안정적이고 확장 가능한 파일 스토리지 서비스로 널리 사용됩니다. 이번 블로그에서는 Python의 Flask 프레임워크를 사용하여 파일을 업로드하고 Amazon S3에 저장하는 방법에 대해 살펴보겠습니다.

목차

  1. Flask 애플리케이션 설정
  2. 파일 업로드 기능 구현
  3. Amazon S3 연동 설정
  4. 파일 업로드 및 관리

1. Flask 애플리케이션 설정

먼저, Flask 애플리케이션을 설정합니다. 다음은 간단한 Flask 애플리케이션 예제입니다.

from flask import Flask, request, render_template
app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/upload', methods=['POST'])
def upload_file():
    if request.method == 'POST':
        file = request.files['file']
        # 파일 처리 로직 추가
        return "파일 업로드 완료"

2. 파일 업로드 기능 구현

Flask 애플리케이션의 라우트를 통해 파일 업로드 기능을 구현할 수 있습니다. 위 예제에서 /upload 엔드포인트를 통해 파일을 업로드하는 방법을 확인할 수 있습니다.

3. Amazon S3 연동 설정

Amazon S3를 사용하여 파일을 저장하려면, 먼저 Amazon Web Services(AWS) 계정을 생성하고, AWS SDK를 사용하여 액세스 키 및 시크릿 키를 설정해야 합니다.

import boto3
s3 = boto3.client('s3', aws_access_key_id='YOUR_ACCESS_KEY', aws_secret_access_key='YOUR_SECRET_KEY')

# 파일 업로드
s3.upload_file('FILE_NAME', 'BUCKET_NAME', 'OBJECT_NAME')

4. 파일 업로드 및 관리

이제 Flask를 사용하여 파일을 업로드하고, boto3 라이브러리를 사용하여 Amazon S3에 파일을 저장할 수 있습니다. 또한, 해당 파일에 대한 고유한 URL을 생성하여 웹 애플리케이션에서 파일을 관리할 수 있습니다.

요약

이렇게하면 Flask를 사용하여 파일을 업로드하고, Amazon S3를 사용하여 안정적이고 확장 가능한 파일 스토리지 서비스를 통해 파일을 관리할 수 있습니다. 이를 통해 웹 애플리케이션에서 파일 업로드 및 관리를 손쉽게 구현할 수 있습니다.

참고문헌: AWS 공식 문서, Flask 공식 문서