Docker로 AmazonLinux 환경을 구축하고 거기에 설치한 Python 라이브러리를 Lambda 레이어로 업그레이드

4686 단어 도커AWS

전제



・Docker 사용할 수 있는 상태
・AWS 서비스 사용할 수 있는 상태

①amazon linux 이미지 획득


docker pull amazonlinux

②Dockerfile을 작성


FROM amazonlinux:latest
RUN yum install -y python3 zip
RUN mkdir /home/deploy

③docker-compose.yml 만들기



docker-compose.yml
version: '2'
services:
  app:
    build: .
    volumes:
      - './deploy:/home/deploy'
    command: >
      bash -c "pip3 install -r /home/deploy/requirements.txt -t /home/deploy/python &&
      cd /home/deploy &&
      /usr/bin/zip -r bs4.zip python"

④ 디렉토리 작성



이번에는 Dockerfile과 yml에 나열된 디렉토리 이름과 함께 deploy라는 디렉토리와 그 아래에 여기에 결정된 python이라는 디렉토리를 만듭니다.




⑤ pip install 하는 라이브러리를 기술한 requirement.txt 를 작성해 deploy 디렉토리 아래에 둔다.



이번에는 웹 스크래핑에서 사용하는 bs4와 requests를 설명합니다. 우선은 bs4만.

requirements.text
bs4


⑥ 디렉토리 구성 확인


$ tree
├── Dockerfile
├── deploy
│   ├── python
│   └── requirements.txt
└── docker-compose.yml

⑦ 람다 레이어에 업로드할 패키지 가져오기



다음을 명령 실행합니다.
docker-compose up --build

⑧ 또 하나의 패키지를 만들기 위해 ③과 ⑤를 편집하여 ⑦을 실행(필요한 패키지가 하나만이라면 불필요)



docker-compose.yml
version: '2'
services:
  app:
    build: .
    volumes:
      - './deploy:/home/deploy'
    command: >
      bash -c "pip3 install -r /home/deploy/requirements.txt -t /home/deploy/python &&
      cd /home/deploy &&
      /usr/bin/zip -r requests.zip python"



requirements.text
requests

docker-compose up --build

⑨ 레이어 만들기





⑧까지 만든 패키지를 업로드합니다.
※런타임은 3.7 이하로 합니다. 3.8 이상은 amazonlinux2가 아니면 안 되므로 본 기사의 대상외입니다.


⑩ 레이어 추가



방금 전 ⑨로 만든 레이어를 움직이려는 Lambda 함수에 추가합니다.
유형은 사용자 지정 레이어에서 선택합니다.


⑪Lambda를 움직여 보자



우선은 레이어를 만들지 않았을 때의 실패 예를 봐 주세요. bs4와 requests는 원래 Lambda에서 사용할 수 없으므로 오류가 발생합니다.


이어서 레이어를 추가한 성공 예입니다. 이번에는 라이브러리가 import되어 있기 때문에, 목적의 입소문 스크래핑이 되어 있습니다.

좋은 웹페이지 즐겨찾기