[파이썬] AWS Lambda와 S3를 활용한 파일 처리 및 변환

AWS Lambda는 서버리스 컴퓨팅 서비스로써, 코드를 실행하고 스케일링을 자동으로 처리해주는 기능을 제공합니다. S3는 Amazon Simple Storage Service로서, 파일 및 데이터를 안전하게 저장하고 검색할 수 있는 스토리지 솔루션입니다. 이 두 서비스를 함께 사용하여 파일 처리 및 변환 작업을 수행할 수 있습니다.

이번 블로그 포스트에서는 AWS Lambda와 S3를 사용하여 파일을 처리하고 변환하는 과정을 알아보겠습니다. 이를 위해 Python을 사용하겠습니다.

1. AWS Lambda 함수 생성

먼저 AWS Lambda 함수를 생성해야 합니다.

  1. AWS Management Console에 로그인합니다.
  2. Lambda 콘솔로 이동합니다.
  3. “함수 생성”을 클릭합니다.
  4. 함수 생성 페이지에서 다음과 같이 설정합니다:
    • 함수 이름: 원하는 이름을 입력합니다.
    • 런타임: Python 3.x를 선택합니다.
    • 실행 역할: Lambda 함수가 사용할 권한을 선택합니다. 필요에 따라 새로운 역할을 생성하거나 기존의 역할을 선택할 수 있습니다.
  5. “함수 생성”을 클릭하여 Lambda 함수를 생성합니다.

2. S3 버킷 설정

다음으로 S3 버킷을 설정해야 합니다.

  1. AWS Management Console에 로그인합니다.
  2. S3 콘솔로 이동합니다.
  3. 원하는 위치에서 “버킷 생성”을 클릭합니다.
  4. 버킷 이름을 입력하고 원하는 설정을 선택한 후 “생성”을 클릭합니다.
  5. 생성된 버킷에 파일을 업로드합니다.

3. Lambda 함수 코드 작성

이제 AWS Lambda 함수에 파일 처리 및 변환을 위한 코드를 작성해야 합니다. 아래는 Python 코드의 예입니다. 이 코드는 S3 버킷에 저장된 파일을 읽고, 특정한 변환 작업을 수행한 후에 결과를 다시 S3에 저장합니다.

import boto3

def lambda_handler(event, context):
    # S3 클라이언트 생성
    s3 = boto3.client('s3')
    
    # 이벤트에서 버킷 및 파일 이름 추출
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']
    
    # S3에서 파일 읽기
    response = s3.get_object(Bucket=bucket, Key=key)
    content = response['Body'].read().decode('utf-8')
    
    # 파일 변환 작업 수행 (예: 대문자로 변환)
    transformed_content = content.upper()
    
    # 변환된 결과를 새로운 파일로 S3에 저장
    new_key = key + '.transformed'
    s3.put_object(Bucket=bucket, Key=new_key, Body=transformed_content.encode('utf-8'))
    
    return {
        'statusCode': 200
    }

위 코드에서는 boto3 라이브러리를 사용하여 S3 클라이언트를 생성하고, 이벤트에서 버킷과 파일 이름을 추출합니다. 그 후, S3에서 파일을 읽고 특정 작업을 수행한 다음, 변환된 결과를 새로운 파일로 S3에 저장합니다.

4. Lambda 함수 트리거 설정

Lambda 함수를 실행하기 위해 S3 변경 알림을 트리거로 설정해야 합니다.

  1. AWS Management Console에 로그인합니다.
  2. S3 콘솔로 이동합니다.
  3. 트리거를 설정할 버킷을 선택합니다.
  4. “속성” 탭에서 “이벤트” 섹션으로 이동합니다.
  5. “이벤트 추가”를 클릭합니다.
  6. “이벤트 유형”에서 “모든 객체 생성 이벤트”를 선택하고, Lambda 함수를 선택합니다.
  7. “저장”을 클릭하여 트리거를 설정합니다.

이제 S3 버킷에 파일을 업로드하면 Lambda 함수가 자동으로 실행되어 파일 처리 및 변환 작업을 수행합니다.

AWS Lambda와 S3를 함께 사용하여 파일 처리 및 변환 작업을 자동화할 수 있습니다. 이를 통해 효율적으로 파일 관리 및 작업을 수행할 수 있습니다.