[파이썬] AWS Lambda와 S3를 통한 파일 변환 및 가공

AWS Lambda와 S3는 클라우드 기반의 서비스로, 파일 변환가공 작업을 쉽게 처리할 수 있게 해줍니다. 이 글에서는 Python을 사용하여 AWS Lambda와 S3를 연동하여 파일 변환 및 가공을 수행하는 방법에 대해 알아보겠습니다.

1. AWS Lambda란?

AWS Lambda는 이벤트에 응답하여 실행되는 서버리스 컴퓨팅 서비스입니다. 예를 들어, S3에 파일이 업로드되면 Lambda 함수가 자동으로 실행되는 것과 같은 방식으로 작동합니다. Lambda 함수는 필요한 리소스만 사용하므로 비용 효율적이고 확장성이 뛰어납니다.

2. S3 버킷 설정

먼저, 파일 변환 및 가공 작업을 위해 S3 버킷을 설정해야 합니다. S3 버킷은 파일을 저장하는 데 사용되며, Lambda 함수에서 이를 처리할 수 있습니다.

  1. AWS 콘솔에 로그인하고 S3 서비스로 이동합니다.
  2. “버킷 만들기”를 클릭하고 버킷 이름 및 기타 설정을 입력합니다.
  3. 버킷을 만든 후, 업로드할 파일을 선택하여 파일을 업로드합니다.

3. AWS Lambda 함수 생성

이제 AWS Lambda 함수를 생성해야 합니다. 이 함수는 S3 버킷에 업로드된 파일을 변환하고 가공하는 역할을 수행할 것입니다.

  1. AWS 콘솔에서 Lambda 서비스로 이동합니다.
  2. “함수 만들기”를 클릭하고 필요한 함수 이름과 설명을 입력합니다.
  3. “런타임”에는 Python 버전을 선택합니다.
  4. “퍼블리싱” 탭에서 “애플리케이션 템플릿”을 선택한 다음 “S3 이벤트 처리” 템플릿을 선택합니다.
  5. S3 이벤트 트리거는 S3 버킷 및 업로드 이벤트를 선택하여 설정합니다.
  6. 함수 코드에서 변환 및 가공 작업을 구현합니다. 예를 들어, 이미지 변환을 위해 Pillow 라이브러리를 사용할 수 있습니다. 아래는 예시 코드입니다.
import boto3
from PIL import Image

def lambda_handler(event, context):
    s3_client = boto3.client('s3')
    for record in event['Records']:
        bucket_name = record['s3']['bucket']['name']
        object_key = record['s3']['object']['key']
        image_obj = s3_client.get_object(Bucket=bucket_name, Key=object_key)
        
        # 변환 및 가공 작업 수행
        image = Image.open(image_obj['Body'])
        resized_image = image.resize((800, 600))
        
        # 변환된 이미지를 S3에 저장
        output_image_key = object_key.split('.')[0] + '_processed.jpg'
        s3_client.put_object(Body=resized_image, Bucket=bucket_name, Key=output_image_key)

위 코드는 업로드된 이미지를 800x600 픽셀로 리사이징하여 같은 S3 버킷에 저장하는 예시입니다.

4. Lambda 함수 테스트 및 배포

  1. Lambda 함수 코드를 작성하고 “테스트” 버튼을 클릭하여 함수가 예상대로 작동하는지 확인합니다. 테스트 이벤트 메시지를 입력하여 S3 이벤트를 모방할 수도 있습니다.
  2. 함수가 예상대로 작동하는 경우 “배포” 버튼을 클릭하여 함수를 배포합니다.

5. 파일 변환 및 가공 확인

이제 파일 변환 및 가공 작업이 정상적으로 수행되는지 확인할 차례입니다.

  1. S3 버킷으로 이동하여 업로드된 파일과 변환된 파일을 확인합니다.
  2. 변환된 파일은 기존 파일과 동일한 경로에 “_processed”를 추가하여 저장되었을 것입니다.

정상적으로 작동하는 경우, 업로드된 파일이 자동으로 변환되고 가공된 파일이 생성되는 것을 확인할 수 있습니다.

이와 같이 Python을 활용하여 AWS Lambda와 S3를 통해 파일 변환 및 가공 작업을 수행할 수 있습니다. 이는 클라우드 기반의 서비스를 활용하여 파일 처리 프로세스를 자동화하는 효과적인 방법입니다.