AWS Lambda는 서버리스 컴퓨팅 서비스로, 코드를 실행하기 위한 서버를 관리하지 않고도 원하는 작업을 수행할 수 있습니다. S3는 Amazon에서 제공하는 강력한 스토리지 서비스로, 파일을 저장하고 관리할 수 있습니다. 이 두 가지 서비스를 함께 사용하여 이미지 처리 및 변환 작업을 수행하는 방법을 알아보겠습니다.
1. AWS Lambda 함수 생성하기
처음으로, AWS Lambda에서 사용할 함수를 생성해야 합니다. 다음은 Python을 사용하여 함수를 생성하는 예제입니다.
import boto3
def lambda_handler(event, context):
# S3 객체 생성
s3 = boto3.client('s3')
# S3 버킷에서 이미지 파일 다운로드
bucket_name = event['Records'][0]['s3']['bucket']['name']
object_key = event['Records'][0]['s3']['object']['key']
s3.download_file(bucket_name, object_key, '/tmp/image.jpg')
# 이미지 처리 및 변환 작업
# TODO: 이미지 처리 및 변환 코드 작성
# 처리된 이미지를 S3에 업로드
s3.upload_file('/tmp/processed_image.jpg', bucket_name, 'processed_image.jpg')
위의 예제 코드에서는 lambda_handler
함수가 AWS Lambda의 이벤트를 처리합니다. S3에서 이미지 파일을 다운로드한 후, 이미지 처리 및 변환 작업을 수행하고 처리된 이미지를 다시 S3에 업로드합니다. s3.download_file
및 s3.upload_file
함수를 사용하여 S3에 파일을 다운로드 및 업로드할 수 있습니다.
2. S3 이벤트 트리거 설정하기
이제 Lambda 함수가 S3에 저장된 이미지 파일을 자동으로 처리하게 하기 위해, S3 이벤트 트리거를 설정해야 합니다. 다음은 이벤트 트리거를 설정하는 방법입니다.
- AWS Management Console에 로그인하고, S3 콘솔로 이동합니다.
- 이미지 파일을 저장하고 있는 S3 버킷을 선택합니다.
- “속성” 탭으로 이동한 후, “이벤트” 섹션에서 “이벤트 추가” 버튼을 클릭합니다.
- 이벤트 구성을 설정합니다. 이벤트 트리거로 “PUT” 또는 “POST” 이벤트를 선택하고, 해당 이벤트에 대한 로그 및 Lambda 함수를 설정합니다.
- 변경 사항을 저장하고 S3 버킷에 이미지 파일을 업로드하면, Lambda 함수가 자동으로 실행되어 이미지 처리 및 변환 작업을 수행합니다.
3. 이미지 처리 및 변환 코드 작성하기
Lambda 함수에서 호출되는 lambda_handler
함수 내에서, 원하는 이미지 처리 및 변환 작업을 수행할 수 있습니다. 예를 들어, 이미지를 크기 조정하거나 필터를 적용하는 등 다양한 작업을 수행할 수 있습니다.
다음은 Python의 PIL
(Python Imaging Library)을 사용하여 이미지 크기를 조정하는 예제 코드입니다.
from PIL import Image
def resize_image(image_path, output_path, size):
img = Image.open(image_path)
img.thumbnail(size)
img.save(output_path)
이 예제에서는 resize_image
함수를 사용하여 이미지 파일을 읽고, 지정한 크기로 줄이고, 새로운 파일로 저장합니다.
4. Lambda 함수 배포 및 테스트하기
Lambda 함수를 배포하여 실제 이미지 처리 및 변환 작업을 수행해 볼 수 있습니다. 다음은 배포 및 테스트하는 방법입니다.
- AWS Management Console에 로그인하고, Lambda 콘솔로 이동합니다.
- “함수 생성” 버튼을 클릭하여 새로운 함수를 생성합니다.
- 함수 설정을 구성합니다. 함수 이름, 런타임 (Python 3.x), 역할, 타임아웃 등을 설정합니다.
- 코드 편집기에서 앞서 작성한
lambda_handler
함수를 붙여넣고, 필요한 패키지를 추가합니다. - 변경 사항을 저장하고, 테스트 이벤트를 생성하여 Lambda 함수를 실행해 볼 수 있습니다.
Lambda 함수가 이미지 처리 및 변환 작업을 수행하고, 처리된 이미지를 S3에 업로드하는지 확인하세요.
이제 AWS Lambda와 S3를 활용하여 신속하고 효율적으로 이미지 처리 및 변환 작업을 수행할 수 있습니다. 이를 통해 서버 관리 및 인프라 구성에 대한 부담을 줄이고, 더욱 빠르고 확장 가능한 애플리케이션을 개발할 수 있습니다.