AWS Lambda@Edge는 Amazon Web Services의 서비스로, 웹 애플리케이션에서 정적 및 동적 컨텐츠를 빠르고 안정적으로 제공하기 위한 서버리스 컴퓨팅 서비스입니다. 람다 함수를 사용하여 컨텐츠를 처리하고 캐시 및 라우팅 규칙을 설정할 수 있습니다.
파이썬 Zappa는 람다 함수를 배포하고 관리하기 위한 편리한 도구로, 웹 애플리케이션을 람다 함수로 변환하고 Amazon API Gateway와 같은 AWS 서비스와 통합할 수 있습니다. 이번 블로그 포스트에서는 파이썬 Zappa를 사용하여 AWS Lambda@Edge를 통한 람다 실행 환경을 구축하는 방법을 알아보겠습니다.
Prerequisites
이 튜토리얼을 완료하기 위해서는 다음 사항들이 필요합니다:
- AWS 계정
- AWS CLI 설치 및 구성
- 파이썬 설치
- 가상환경(Virtual Environment) 설정
1. Lambda 함수 생성
먼저, AWS Lambda 콘솔에서 새로운 람다 함수를 생성합니다. 람다 함수는 이벤트를 트리거로 실행되며, Lambda@Edge에서는 Amazon CloudFront 이벤트를 트리거로 사용할 수 있습니다.
- AWS 콘솔로 이동하여 Lambda 서비스를 선택합니다.
- “함수 생성” 버튼을 클릭합니다.
- “새로운 함수 생성”을 선택한 후, 람다 함수 설정을 진행합니다. 함수 코드는 나중에 업데이트할 예정이므로, 현재는 빈 함수로 설정합니다.
- “트리거 추가” 버튼을 클릭하여 “CloudFront”를 선택하고, 해당 이벤트를 구성합니다. (예: CloudFront 속성을 “테스트”로 설정)
- 함수 생성을 완료합니다.
2. Zappa 설정
Zappa를 사용하여 Lambda 함수를 배포하고 관리할 것입니다. 아래 단계를 따라 Zappa를 설정합니다.
- 터미널을 열고 프로젝트 디렉토리로 이동합니다.
- 가상환경을 설정합니다.
$ python3 -m venv myenv
$ source myenv/bin/activate
- Zappa를 설치합니다.
$ pip install zappa
zappa_settings.json
파일을 프로젝트 루트 폴더에 생성합니다.
{
"dev": {
"aws_region": "us-east-1",
"function_name": "my-lambda-function",
"role_arn": "arn:aws:iam::1234567890:role/lambda-execution-role",
"s3_bucket": "s3-bucket-name",
"timeout_seconds": 30,
"memory_size": 128,
"exclude": [
".git/*",
"*.pyc"
]
}
}
aws_region
을 원하는 리전으로 설정하고,function_name
,role_arn
,s3_bucket
등을 실제 값으로 대체합니다.
3. 람다 함수 배포
람다 함수를 배포하려면 다음 단계를 따르세요.
- 가상환경을 활성화합니다.
$ source myenv/bin/activate
- Zappa를 사용하여 람다 함수를 배포합니다.
$ zappa deploy dev
- 배포가 완료되면 생성된 람다 함수의 엔드포인트 URL을 확인합니다.
4. CloudFront 설정
마지막으로, Lambda 함수를 CloudFront에 연결하여 Lambda@Edge를 통해 실행되도록 설정합니다.
- AWS 콘솔로 이동하여 CloudFront 서비스를 선택합니다.
- CloudFront 배포 목록에서 해당 배포를 선택합니다.
- “편집” 버튼을 클릭합니다.
- “동작” 탭으로 이동하여 “뷰어 요청 이벤트” 섹션에서 “추가 동작”을 클릭합니다.
- “유형” 드롭다운에서 “함수 실행”을 선택하고, 앞서 생성한 Lambda 함수를 선택합니다.
- 변경 사항을 저장합니다.
마무리
이제 AWS Lambda@Edge를 통한 람다 실행 환경을 구축하였습니다. Zappa를 사용하여 람다 함수를 관리하고 배포할 수 있으며, CloudFront와 연동하여 컨텐츠를 처리하고 라우팅할 수 있습니다.
더 자세한 내용은 Zappa 문서를 참조해주시기 바랍니다.
#AWSLambda #Zappa