[파이썬] AWS Lambda와 Amazon S3 연동

AWS Lambda는 Amazon Web Services에서 제공하는 서비스로, 서버리스 애플리케이션을 작성하고 실행하는 데 사용됩니다. AWS Lambda는 이벤트 기반 아키텍처로 동작하며, 특정 이벤트가 발생했을 때 코드를 실행하고 필요한 리소스를 할당해줍니다. 이러한 AWS Lambda를 사용하여 Amazon S3와 연동하는 방법을 알아보겠습니다.

Amazon S3란?

Amazon S3(Simple Storage Service)는 Amazon Web Services에서 제공하는 스토리지 서비스로, 인터넷에서 손쉽게 데이터를 저장하고 검색할 수 있습니다. S3는 웹 사이트 호스팅, 백업 및 복원, 데이터 아카이빙, 비디오 및 사진 스트리밍 등 다양한 용도로 사용됩니다.

AWS Lambda를 사용하여 Amazon S3에 파일 업로드하기

  1. AWS Lambda 함수 생성하기

    먼저, AWS Management Console에 로그인하고 AWS Lambda 서비스로 이동합니다. 새로운 Lambda 함수를 생성하기 위해 Create function을 클릭합니다.

    • Function name에 Lambda 함수의 이름을 입력합니다.
    • Runtime에서 Python을 선택합니다.
    • Permissions에서 Lambda 함수에 대한 역할(Role)을 생성합니다.
    • Create function을 클릭하여 함수를 생성합니다.
  2. S3 버킷 생성하기

    AWS Management Console에서 Amazon S3 서비스로 이동합니다. 새로운 S3 버킷을 생성하기 위해 Create bucket을 클릭합니다.

    • Bucket name에 버킷의 이름을 입력합니다.
    • Region에서 원하는 지역을 선택합니다.
    • Create bucket을 클릭하여 버킷을 생성합니다.
  3. Lambda 함수에 Amazon S3 연동 코드 작성하기

    이제, 생성한 Lambda 함수에 Amazon S3와 연동하기 위한 코드를 작성해보겠습니다. 아래는 예시 코드입니다.

    import boto3
    
    def lambda_handler(event, context):
        s3 = boto3.client('s3')
        s3.upload_file('/path/to/local/file', 'your-bucket-name', 'destination/file')
    
    • boto3 라이브러리를 사용하여 AWS 서비스와 상호 작용합니다.
    • s3.upload_file() 함수를 사용하여 로컬 파일을 Amazon S3 버킷에 업로드합니다. 업로드할 파일의 경로를 지정하고, 대상 버킷의 이름과 업로드할 파일의 경로를 지정합니다.
  4. Lambda 함수 트리거 설정하기

    Lambda 함수를 트리거하기 위해 Amazon S3에서 이벤트를 설정해야 합니다. AWS Management Console에서 Lambda 함수를 열고 Add trigger을 클릭하여 트리거를 추가합니다.

    • Trigger configuration에서 버킷 이름을 선택하고, 업로드 이벤트를 선택합니다.
    • Add을 클릭하여 트리거를 추가합니다.

Amazon S3에서 파일 다운로드하기

Lambda 함수를 사용하여 Amazon S3에서 파일을 다운로드하는 것도 가능합니다. 예를 들어, 다운로드할 파일의 이름을 입력 받아 Lambda 함수 내에서 해당 파일을 다운로드하고 저장할 수 있습니다.

import boto3

def lambda_handler(event, context):
    s3 = boto3.client('s3')
    s3.download_file('your-bucket-name', 'source/file', '/path/to/local/file')

download_file() 함수를 사용하여 Amazon S3에서 파일을 다운로드하고, 로컬 파일의 경로를 지정합니다.

결론

AWS Lambda와 Amazon S3를 연동하여 데이터를 업로드하고 다운로드하는 방법을 알아보았습니다. 이를 통해 서버리스 환경에서도 쉽게 파일 관리를 할 수 있으며, 이벤트 기반 아키텍처를 효율적으로 구성할 수 있습니다. AWS Lambda와 Amazon S3의 다양한 기능을 활용하여 웹 애플리케이션 및 데이터 처리 작업을 보다 간편하게 구현해보세요.