ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Cloud9을 활용해서 AWS Lambda에 편하게 python 패키지 layer 올리기
    프로그래밍 2022. 4. 17. 15:31
    반응형

     

    aws 람다는 서버리스 툴로 필요할 때마다 함수를 호출할 수 있어 이미 회사에서 많이 쓰이고 있는 기능이다.

    오늘은 cloud9을 통해서 aws 람다에서 파이썬 패키지들 layer를 만드는 법에 대해서 알아보려고 한다.

     

    zip 파일을 직접 업로드해서도 layer를 만들 수 있지만 pandas 같은 무거운 애들은 zip을 올린다고 해서 읽히지 않고 클라우드 9를 거쳐야만 람다에 올릴 수 있는 것 같다.

     

    - cloud9: 클라우드9은 aws 환경위에 있는 IDE 툴이라고 보면 된다. aws 환경 위에 있기 때문에 파이썬 패키지 중에서 무거운 친구들도 layer로 올리기 편하다.

     

    1. step1 클라우드9 인스턴스 띄우기

    create environment을 눌러보자
    이름은 아무거나로 정해보자

     

    cloud9에서 인스턴스를 띄우고 이름은 그냥 아무거나 설정하면 된다.

    (어차피 일시적으로 쓰고 지울 것 이기 때문에)

     

    그냥 가장작은 기본 셋팅으로 만들어라

    그냥 가장 작은 인스턴스 세팅으로 일단 띄우면 된다.

     

    2. 클라우드9에 압축에 필요한 폴더를 만들고 필요한 패키지들 설치하기

    mkdir folder
    cd folder
    virtualenv v-env
    source ./v-env/bin/activate
    pip install requests(원하는 패키지들을 설치해주면 된다.)
    pip install beautifulsoup4(원하는 패키지들을 설치해주면 된다.)
    deactivate

    클라우드 9에 폴더를 생성하고 그 안에 필요한 패키지를 설치한다.

     

    3. 람다 레이어로 배포하기

    -- 파이썬 디렉토리를 다시 만듬
    mkdir python
    
    cd python
    
    cp -r ../v-env/lib64/python3.7/site-packages/* .
    
    cd ..
    
    -- 원하는 파일명으로 압축
    zip -r req_bs4.zip python
    
    -- 각 파라미터에 맞게 배포
    --layer-name: 레이어 이름 뭐로할지?
    --zip-file: 어떤 압축 파일을 올릴지?(fileb://req_bs4.zip)
    --compatible-runtimes: 파이썬의 어떤 버전들을 지원할지?
    
    aws lambda publish-layer-version --layer-name req_bs4 --zip-file fileb://req_bs4.zip --compatible-runtimes python3.6

    나는 requests와 bs4를 설치하여 req_bs4라는 레이어로 배포했다.

     

     

     

    4. 배포 된 레이어를 람다에 적용하기

     

    람다 함수 아래 보면 계층이라고 있는데 거기서 add a layer를 누르면 된다.

    aws lambda layer
    배포된 계층을 클릭하고 버전을 선택한다.

     

    함수 개요에서 레이어가 잘 설정되었는지 확인한다.

    위처럼 되면 이제 aws lambda에서 내가 원하는 파이썬 패키지를 활용할 수 있다.

    반응형

    댓글

Designed by Tistory.