[파이썬] web2py에서의 클라우드 스토리지 연동

웹 개발 프레임워크인 web2py를 사용하여 클라우드 스토리지와의 연동을 구현하는 방법을 알아보겠습니다. 클라우드 스토리지는 대용량 파일 저장 및 관리를 위해 많은 기업과 개인이 활용하는 중요한 도구입니다. 이 글에서는 Python의 boto3 라이브러리를 사용하여 AWS S3와의 연동을 예시로 설명하겠습니다.

AWS S3 설정

먼저 AWS S3의 계정을 생성하고 버킷을 생성해야 합니다. AWS 콘솔에 로그인하여 S3 서비스로 이동하고 새로운 버킷을 생성합니다. 이때 버킷 이름은 고유해야 하며, 해당 버킷에 접근할 수 있는 액세스 키와 시크릿 키를 얻습니다.

web2py 프로젝트 설정

boto3 라이브러리 설치

먼저 web2py 프로젝트에 boto3 라이브러리를 설치해야 합니다. 이를 위해 터미널에서 다음 명령어를 실행합니다:

$ pip install boto3

AWS 액세스 키 및 시크릿 키 설정

web2py 프로젝트의 models 폴더에 aws_settings.py 파일을 생성합니다. 이 파일에 AWS S3의 액세스 키와 시크릿 키를 설정합니다. 다음은 aws_settings.py 파일의 예시입니다:

ACCESS_KEY = 'your-access-key'
SECRET_KEY = 'your-secret-key'

클라우드 스토리지 연동 코드 작성

이제 web2py 프로젝트에서 클라우드 스토리지와 연동하는 코드를 작성해보겠습니다. 예를 들어, 웹 애플리케이션에서 사용자가 파일을 업로드하고 해당 파일을 S3에 저장하는 기능을 구현하려고 합니다.

controllers/default.py 파일을 열고 다음 코드를 추가합니다:

from aws_settings import ACCESS_KEY, SECRET_KEY
import boto3

def index():
    form = FORM(INPUT(_type='file'), INPUT(_type='submit'))

    if form.process().accepted:
        file = request.vars[form.vars.keys()[0]]
        s3 = boto3.client('s3', aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY)
        s3.upload_fileobj(file.file, 'your-bucket-name', file.filename)

    return dict(form=form)

위 코드에서 aws_settings.py 파일에 저장한 액세스 키와 시크릿 키를 가져와 boto3.client를 호출할 때 사용합니다. upload_fileobj 메서드를 사용하여 파일을 S3 버킷에 업로드합니다.

웹 애플리케이션에서 사용

웹 애플리케이션에서 파일을 업로드하는 기능을 사용하려면 views/default/index.html 파일을 열고 다음 코드를 추가합니다:


{{extend 'layout.html'}}

<form action="{{=URL('default', 'index')}}" method="post" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="submit" value="Upload" />
</form>

위 코드는 파일 업로드를 위한 HTML 폼을 생성합니다.

결론

위의 예시를 통해 web2py에서 클라우드 스토리지와 연동하는 방법을 알아보았습니다. 실제로 사용하는 클라우드 스토리지에 따라 코드가 다를 수 있으므로, 해당 클라우드 스토리지의 API 문서를 참조하여 코드를 작성하시기 바랍니다.