[AWS] Docker로 Lambda Image 열어서 보기

Donut·2024년 8월 12일
0

Dev Note

목록 보기
1/2
post-thumbnail

로컬에서 docker를 통해서 ECR에 올라간 Lambda 함수를 보려고 한다.

보려고 한 이유는 Github main 상용 브랜치에 올라간 람다와 Lambda 이미지에 올라간 함수가 다른 것 같아 확인해보기 위한 것이다.
-> main의 가장 최신 commit 상태의 코드와 현재 Lambda 이미지에 올라가 있는 함수가 다름

main 브랜치의 현재 코드를 Lambda에 배포할 때 문제가 생길지 아닐지 확인해야해서 필요했다.


1. docker 설치

docker 공심 홈페이지에서 docker를 설치해준다.

설치 후 버전을 확인하여 설치가 잘 되었는지 확인한다.

MacBookPro ~ % docker --version

>> Docker version 27.0.3, build 7d4bcd8


2. ECR에 로그인하여 이미지 갖고오기

  • AWS credentials 확인

ECR에 접근하기 위해 해당 기기(데탑or노트북 등)에 AWS credentials 정보가 필요하다.
나는 이전에 저장된 credentials 정보가 있어서 해당 계정들중 prod 함수를 테스트 해야했기 때문에 prod credentials을 확인했다.

# 1. 해당 기기에 저장되어있는 AWS credentials 확인
MacBookPro ~ % cat ~/.aws/credentials

# 2. 조회했을 때 나오는 credentials 이름 확인
[ss-dev]
aws_access_key_id = ###
aws_secret_access_key = ###
[ss-prod]
aws_access_key_id = ###
aws_secret_access_key = ###

prod용 credentials 이름은 ss-prod인 것을 확인했다.


  • Lambda의 이미지 URI 확인

ECR의 람다 이미지가 저장된 URI를 통해서 갖고 올 수 있다.

가져온 URI를 아래 명령어에 넣어서 사용하면 된다.

aws ecr get-login-password --region ap-northeast-2 --profile {AWS Credentials 이름} | docker login --username AWS --password-stdin {ECR Image URI}

예시

aws ecr get-login-password --region ap-northeast-2 --profile ss-prod | docker login --username AWS --password-stdin {###.ap-northeast-2.amazonaws.com}

접속이 잘 되었다면 아래와 같이 성공했다는 메세지가 뜬다.


  • Docker로 pull해오기

ECR에 접근하였으니 해당 Image에 올라가있는 파일들을 pull해와야 한다.

명령어에는 아래 정보들이 필요하다.

docker pull {ECR Image URI}/{Lambda 이름}:{Image Tag 이름}

위 명령어를 치면 Pull complete 목록들이 뜨면서 정상적으로 가져온 것을 알 수 있다.



3. Docker 컨테이너 생성 및 실행

docker create --platform linux/amd64 --name temp_container {ECR Image URI}/{Lambda 이름}:{Image Tag 이름}

docker run -it --entrypoint /bin/sh --platform linux/amd64 {ECR Image URI}/{Lambda 이름}:{Image Tag 이름}

>> sh-4.2# cd /


4. 실행 후 확인하려는 파일로 접속

3번까지 진행하면 이미지 안으로 들어오게 된다.

람다 코드가 짜여져 있는 main.py로 접속하여 현재 업로드된 코드를 확인해야해서 main.p 이름을 갖고 있는 파일을 찾았다.

find / -name main.py

main.py 이름을 갖고 있는 파일들 목록이 떴고 거기서 보려고 하는 main.py로 들어가니 정상적으로 파일의 코드를 확인할 수 있었다.

profile
안녕하세요 :)

0개의 댓글