운동하는 공대생

Docker Container Image 로 AWS Lambda 함수 구현 본문

AWS/Lambda

Docker Container Image 로 AWS Lambda 함수 구현

운동하는 공대생 2022. 10. 31. 17:27
728x90
반응형

Intro

Docker container Image 기반으로 AWS Lambda 함수를 구현을 어떻게 하는지 설명을 하겠다.

Process

  1. EC2
  2. EC2 생성과 접속
  3. EC2 환경에서 Docker 설치 및 Docker Image 생성
  4. ECR 생성 및 이미지 푸시
  5. AWS Lambda 에 적용

1 .EC2

 아마존 일래스틱 컴퓨터 클라우드(Amazon Elastic Compute Cloud, EC2)아마존 클라우드 컴퓨팅 플랫폼에서 제공하는 가상 서버이다.

 Amazon Linux 환경으로 인스턴스를 생성하고 인스턴스 유형 그리고 각종 설정을 해서 인스턴스를 생성한다.

2 .EC2 생성과 접속


 인스턴스를 환경에따라 접속하는 방식이 다른데 독립 실행형 ssh 클라이언트를 사용하였다.

윈도우의 경우 PuTTy 를 사용하여 연결이 가능하다.

 

 나는 MacOs에서의 터미널을 이용하여 접속하였다.

 

ssh -i "키 파일 이름" "AMI 지침에 따라 지정된 DNS 주소(ex: user@ec2-12312312-31.compute-1.amazonaws.com)"

 

 이렇게 터미널에서 EC2 인스턴스를 생성할 당시에 다운받는 키 파일이 있는 디렉토리에서 접속을 해야한다. 필요한 경우 다음 명령어로 키가 공개적으로 표시한다.

 

chmod 400 docker.pem



-초기화면

3. EC2 환경에서 Docker 설치 및 Docker Image 생성

EC2 에 접속한 뒤, Docker를 설치한다.

패키지 업데이트
sudo yum update -y

docker 설치
sudo yum install docker -y

docker 서비스 실행
sudo service docker start

ec2-user를 docker 그룹에 추가
sudo usermod -a -G docker ec2-user

 

도커파일 생성

vi Dockerfile

-Dockerfile

Docker Image 기반 환경 설정
From amazon/aws-lambda-python:3.7

pip 명령어 업그레이드
RUN /var/lang/bin/python3.7 -m pip install --upgrade pip

가상환경 로컬파일에서 생성해둔 .txt(설치하고자 하는 라이브러리 목록)파일을 도커로 복사
COPY requirements.txt home/ec2-user/docker/lambda_function.py.txt

복사함 파일 실행
RUN pip install -r home/ec2-user/docker/lambda_function.py.txt

가상환경 로컬파일에서 생성해둔 .py(AWS lambda 코드)파일을 도커로 복사
COPY lambda_function.py home/ec2-user/docker/lambda_function.py

파일 실행
RUN cp home/ec2-user/docker/lambda_function.py /var/task/

lambda_function.handler
CMD ["lambda_function.lambda_handler"]

 

-requirements.txt

scikit-learn==0.23.1

 

-lambda_function.py

import boto3
import time
from botocore.vendored import requests
import sklearn
import base64
import json



def lambda_handler(event, context):
	#TO-DO code
    return

 

4 .ECR 생성 및 이미지 푸시

 

aws cli 접근 키값을 초기화 (IAM 에 접속하여 따로 사용자를 지정하여 키값을 받는게 가능)
aws configure

ecr 로그인을 위해서 암호화된 비밀번호를 받아온다.
aws ecr get-login --region "리전명"

cli 를 사용하여 인증 토큰을 검색하고 docker 클라이언트를 인증
aws ecr --region "리전명" | docker login -u AWS -p "암호" 123456789.dkr.ecr.us-east-1.amazonaws.com/dockerrepo

docker 이미지 생성
docker build -t "이미지 이름"

생성한 이미지와 ecr을 태그를 지정
docker tag <이미지 이름>:latest "ECR 레포지토리 URI"

push 하여 ecr 에 이미지 푸시
docker push "ECR 레포지토리 URI"

 

사진 5

5 .AWS Lambda 에 적용

-lambda 생성

 

-이미지 선택

-test

 

728x90
반응형

'AWS > Lambda' 카테고리의 다른 글

AWS Lambda 에서 외부 API 호출하기(OCR)  (0) 2022.10.11
AWS Lambda(layer-계층 생성하기)  (0) 2022.10.07
AWS Lambda(layer)  (0) 2022.10.06
AWS Gate Way(Lambda)  (1) 2022.09.21
Comments