| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 옵셔널체이닝
- vivecoding
- ffprobe
- 파이썬이미지
- EKS
- delete비교
- efs
- Python
- 노드그룹
- 파이썬영상
- truncate비교
- 파이썬
- moviepy2
- LLM
- mysql성능
- 영상자동화
- subprocess
- 생성형AI
- null오류
- 도커컨테이너
- moviepy
- lambda
- 파이참
- 파이썬영상편집
- VPC
- AWS
- ffmpeg
- agentic
- docker
- EC2
- Today
- Total
씩씩한 개발자
AWS Lambda 컨테이너 이미지로 패키지 설치 (ex.MoviePy) - 2편 본문

안녕하세요. 씩씩한 개발자입니다!
이번 포스팅은 지난 'AWS Lambda에 MoviePy 설치하는 방법 (Docker + Layer 구성) - 1편'을 좀 더 명확하게 정리한 글입니다.
AWS Lambda를 쓰다보면 반드시 알아야 하는 기능이 'Layer' 입니다.
Layer 기능을 통해 외부 Python 패키지를 람다에서 사용할 수 있죠.
처음엔 그냥 PC에 설치한 레이어를 바로 zip해서 업로드 해서 사용했는데, 문제가 없었어요.
하지만 이번에 moviepy를 Layer로 올리는데 기존 방식은 잘 안되더라구요.
알아보니, 가장 확실한 방법은 Lambda와 동일한 OS 환경에서 직접 패키지를 설치하고 zip으로 묶는 방식입니다.
이를 위해
①Lambda 공식 Docker 이미지를 사용해 컨테이너를 띄우고, (cmd, 터미널)
②내부에서 필요한 패키지를 설치한 뒤, (도커 데스크톱, 터미널)
③로컬에서 압축하는 과정을 정리해보겠습니다.(cmd, 터미널)
아마존의 Lambda 개발자 가이드
컨테이너 이미지로 Python Lambda 함수 배포 - AWS Lambda
이 명령은 빌드 머신의 아키텍처에 관계없이 컨테이너가 Lambda 실행 환경과 호환되는지 확인하기 위해 --platform linux/amd64 옵션을 지정합니다. ARM64 명령 세트 아키텍처를 사용하여 Lambda 함수를 생
docs.aws.amazon.com
1. Lambda용 Docker 컨테이너 실행
아래 명령어를 통해 Lambda와 동일한 환경의 컨테이너를 실행합니다.
cmd, 명령 프롬프트, 터미널에서 실행하시면 됩니다.
여기서는 /Users/Desktop/lambda-test/lambda 디렉토리를 컨테이너의 /lambda 경로로 마운트합니다.
amazon/aws-lambda-python:3.13.2025.05.05.05-x86_64
aws lambda, 파이썬 3.13 버전에 맞는 컨테이너이미지를 그대로 가져올 겁니다
docker run \
--hostname=lambda-build \
--env=LANG=en_US.UTF-8 \
--env=TZ=:/etc/localtime \
--env=PATH=/var/lang/bin:/usr/local/bin:/usr/bin/:/bin:/opt/bin \
--env=LD_LIBRARY_PATH=/var/lang/lib:/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib:/opt/lib \
--env=LAMBDA_TASK_ROOT=/var/task \
--env=LAMBDA_RUNTIME_DIR=/var/runtime \
--volume=/Users/Desktop/lambda-test/lambda:/lambda \
--network=bridge \
--workdir=/lambda \
--restart=no \
--runtime=runc \
-it \
amazon/aws-lambda-python:3.13.2025.05.04.05-x86_64 \
sh
--volume: Host Path
--workdir: Container Path
Host Path: 로컬의 패키지를 저장할 실제 폴더 경로 (내 PC의 경로)
Container Path: 컨테이너 내 작업 디렉토리. 여기서 /lambda/python 하위에 패키지를 설치할 것입니다.

2. 컨테이너 내부에서 패키지 설치
Docker Desktop에서 해당 컨테이너를 exec 또는 터미널을 통해 진입하면, 다음과 같은 sh 프롬프트로 접근할 수 있습니다.
sh-5.2# pwd
/lambda
sh-5.2# mkdir -p /lambda/python
sh-5.2# cd /lambda/python
# moviepy 설치
sh-5.2# python3 -m pip install moviepy -t .
# 추가적으로 필요한 requests 관련 패키지 설치
sh-5.2# python3 -m pip install requests certifi idna urllib3 charset_normalizer -t .
이 과정을 통해 컨테이너 내의 /lambda/python 디렉토리에 필요한 패키지가 설치되며,
이는 자동으로 로컬 /Users/Desktop/lambda-test/lambda/python 디렉토리에 반영됩니다.
처음 도커 컨테이너 띄울 때 host path와 contianer path가 이렇게 적용 되는 것입니다.
패키지 설치가 잘 되었는지 import test 해봐야 합니다. python3
sh-5.2# python3
Python 3.13.3 (main, Apr 17 2025, 14:44:45) [GCC 11.5.0 20240719 (Red Hat 11.5.0-5)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import os
>>>
>>> import moviepy
>>>
import에 이상이 없네요.
3. 로컬에서 zip 파일로 압축
패키지 설치가 완료되면 컨테이너에서 나와 로컬 터미널로 돌아옵니다.
아래 명령어로 AWS Lambda Layer에 업로드 가능한 zip 파일을 생성합니다.
cd /Users/Desktop/lambda-test/lambda
zip -r9 ../moviepy-layer.zip python
압축된 moviepy-layer.zip 파일은 AWS Lambda 콘솔에서 Layer → Create layer를 통해 업로드할 수 있습니다.
/Users/Desktop/lambda-test/lambda 의 내부 구조는 아래와 같아요.
moviepy와 관련해서 필요한 다른 패키지들 까지 같이 설치해 둔 상태입니다.

4. 마무리
도커 이미지를 활용하는 이 방식은 로컬 환경의 종속성 문제 없이, 실제 AWS Lambda에서 사용되는 환경과 동일한 조건으로 패키지를 설치할 수 있다는 장점이 있습니다.
기존에 간단한 패키지들을 설치할 때는 문제가 없었는데, 이번에 특히 moviepy, numpy, PIL 등 복잡한 종속성을 가진 패키지들을 Layer로 구성할 때 보니 매우 유용하더라구요. 앞으로도 이 방식으로 해야겠어요.
추가적으로 영상, 음성 파일을 다룰 때 반드시 필요한 것이 ffmpeg 실행 바이너리인데요,
layer에 포함하려고 하니, 용량 이슈로 업로드가 어렵더라구요.
그래서 찾은 방식이 EFS를 통해 ffmpeg 을 마운트해서 사용하는 방식 입니다.
이 방법은 아래의 게시글에서 확인하실 수 있습니다~.
AWS Lambda - EFS - EC2 | ffmpeg 파일 마운트하고 람다에서 사용하기
안녕하세요. 씩씩한 개발자입니다🔥 오늘의 주제는 아래와 같습니다. Lambda 용량의 한계로 인하여 올리지 못하는 파일을 EFS와 EC2를 사용해서 올리고 Lambda에서 사용하는 방법 [배경지식1] Lambda La
strongdev.tistory.com
'AWS' 카테고리의 다른 글
| [AWS] VPC 개념 & 생성하기 (Subnet / Routing / IGW) (0) | 2025.12.15 |
|---|---|
| [AWS] IAM이란? 기초 개념 정리! (0) | 2025.12.15 |
| AWS EFS 마운트란? 마운트 해제란? (1) | 2025.05.30 |
| Lambda에서 FFmpeg 사용하는 방법: (EFS,EC2 활용) (1) | 2025.05.10 |
| AWS Lambda에 MoviePy 설치하는 방법 (Docker + Layer 구성) - 1편 (0) | 2025.01.22 |