이전글
2025.07.10 - [분류 전체보기] - [Python] Pipenv 부터 AWS Lambda 배포까지 (1)
[Python] Pipenv 부터 AWS Lambda 배포까지 (1)
❓ 이 글은 Pipenv의 간단한 활용법과 이를 이용해 작성된 코드의 Lambda 업로드 방법을 담고 있습니다. 댓글 크롤링이 필요한 프로젝트를 진행하면서, 크롤링 스크립트를 작성하기 위해 파이썬을
boolog.tistory.com
앞선 글에서는 Pipenv를 설치하고, 이를 활용하는 법에 대해 간단히 알아보았다.
가상환경에서 실컷 코딩을 진행했다면, 이제는 람다에 함수를 배포할 차례이다. 람다에서 실행되는 함수를 작성하기 위해서는, AWS에서 제시하는 규칙을 따라서 함수를 작성해야한다. 본 글에서는 구체적인 함수 작성 방법은 생략하고, 배포 방법만 간단히 다루도록 하겠다.
람다 함수를 한 번도 작성해보지 않은 사람이라면, 아래의 링크를 참고하자.
Create your first Lambda function - AWS Lambda
Create your first Lambda function - AWS Lambda
Create your first Lambda function To get started with Lambda, use the Lambda console to create a function. In a few minutes, you can create and deploy a function and test it in the console. As you carry out the tutorial, you'll learn some fundamental Lambd
docs.aws.amazon.com
Lambda 배포 전 Zip 파일 준비하기
Lambda에서는 zip 파일을 이용한 배포를 지원한다. 물론 CLI에서 제공하는 코드에디터에 직접 코드를 작성하여도 되지만, 다소 불편함이 있기 때문에 나는 zip 파일을 이용한 배포 방식을 이용했다. 이 외에도 S3를 이용하거나, Github Actions 같은 도구를 활용해 자동 배포 파이프라인을 구축할 수도 있겠지만, 간단한 프로젝트에 자동배포 파이프라인까지 구축하는 것은 배보다 배꼽이 큰 느낌이라 하지 않았다.
돌아와서, 다시 배포를 진행해보자.
의존성 복사하기
$ pipenv requirements > requirements.txt
먼저, pipenv requirements 명령어를 이용해 requiremnets.txt에 프로젝트의 의존성을 복사한다.
패키지 설치하기
$ mkdir package
$ pip install -r requirements.txt --platform manylinux2014_aarch64 --no-deps -t package
다음으로는 package(다른 이름도 가능하다)라는 의존성 패키지용 폴더를 하나 만든 후, 해당 폴더 안에 requirements.txt에 저장된 모든 패키지를 설치한다. 나는 내가 사용하는 ARM 기반 Lambda 환경에 맞춰 manylinux2014_aarch64 옵션을 사용하였다. 여기서는 본인의 환경에 맞는 옵션을 넣어주면 된다. 만약 aarch64가 뭔지 모르겠다면, x86_64와 aarch64를 검색해 CPU 아키텍쳐에 대해 알아보기를 권장한다.
파일 압축 및 소스코드 추가
$ cd package
$ zip -r ../package .
다음으로는 해당 패키지로 이동해, 패키지 압축을 진행한다. 추후 이 zip 파일을 Lambda에 업로드하게 된다.
$ cd ..
$ zip -r package.zip getVideos.py
마지막으로, 압축된 파일에 실제 소스코드를 추가한다. 나는 1개의 파일만 추가했지만, 프로젝트 과정에서 여러 개의 소스코드를 작성했다면 함께 추가하도록 하자.
이로써 람다에 올리기 위한 준비가 모두 끝났다. 이제 람다로 이동하자.
AWS Lambda에 배포하기

Lambda를 처음 열면 다음과 같은 대시보드를 마주할 수 있다. 만약 본인이 이미 람다를 생성해 놓았다면 이 단계는 건너뛰고, 생성하지 않았다면 우측 상단의 함수 생성 버튼을 클릭해 함수를 생성하자.

함수생성 버튼을 누른 후 본인이 원하는 함수 이름을 입력하고, 런타임을 선택한다. 나는 파이썬 3.9 버전을 사용하였으므로 Python 3.9를 선택하였다. 또한, 앞서 말한 아키텍쳐를 골라준다. 간단히 말하자면 x86_64는 인텔, AMD가 주로 사용하는 아키텍쳐이고, arm64는 모바일 프로세서나 애플(m칩셋)에서 주로 사용하는 아키텍쳐라고 할 수 있다. AWS에 따르면 일반적으로 arm64 기반의 람다가 성능적으로, 비용적으로 모두 우수하다고 한다.
더 궁굼하면 이걸 읽어보자.
https://aws.amazon.com/ko/blogs/apn/comparing-aws-lambda-arm-vs-x86-performance-cost-and-analysis-2/

Lambda 함수까지 생성이 끝났다면, 다음과 같은 화면을 마주할 것이다. 여기서 우측의 업로드 버튼을 클릭한 뒤, zip 파일을 눌러 앞서 만들었던 zip 파일을 업로드한다.

짜잔~ 이 팝업에서 마우스 왼쪽 버튼을 이용해 업로드를 하면 된다!
업로드가 모두 끝나면, 화면이 새로고침되며 본인의 파일을 "소스" 메뉴에서 확인 할 수 있을 것이다.

추가로, 함수가 제대로 실행되려면 하단의 런타임 설정을 편집해줘야 한다. 여기서 핸들러 함수를 <핸들러 함수가 있는 파일명>.<함수 이름> 으로 수정해줘야 람다가 제대로 동작할 수 있다.
이제 모든 준비과정이 끝났다. 이제는 테스트 기능이나, 함수 URL(잘 찾아보면 활성화 할 수 있다), 또는 API Gateway 같은 것들을 이용해 함수를 실컷 실행하면 된다.
마지막으로, 람다는 최대 15분까지만 실행이 가능하니 크롤링과 같이 시간이 오래 걸리는 작업을 할 때는 이 점을 주의하자.
끝.
'개발' 카테고리의 다른 글
| [JAVA] JDBC에서 JPA(Hibernate)까지 (0) | 2025.07.10 |
|---|---|
| [트러블슈팅] Soft delete와 카카오 연결끊기(unlink) 400 오류 (1) | 2025.07.10 |
| [Python] Pipenv 부터 AWS Lambda 배포까지 (1) (0) | 2025.07.10 |
| [JPA] JPA 연관관계 간단 정리(ManyToOne, OneToMany) (0) | 2024.07.24 |
| [AWS] EBL 사용 시 503 Service Temporarily Unavailable (0) | 2024.07.24 |