매우 간단한 Lambda Layers 샘플 (Python, Serverless Framework 사용)

레이어



여러 Lambda에서 불리는 공통 모듈을 이미지.

디렉토리 구성
common
├── serverless.yml
└── layer
    └── python
        └── util.py

serverless.yml
service: sample-layer

provider:
  name: aws

layers:
  samplelayer:
    path: layer

util.py
def hello():
    print('Hello, Lambda Layers World!')

람다 기능



위의 레이어 모듈을 호출하는 람다.

디렉토리 구성
function
├── serverless.yml
└── handler.py

serverless.yml
service: sample-function

provider:
  name: aws
  runtime: python3.7
  iamRoleStatements:
  - Effect: "Allow"
    Action:
    - "lambda:InvokeFunction"
    Resource: "*"

functions:
  samplefunction:
    handler: handler.handle_request
    layers:
      - {上記のLayerをsls deployした時に表示されるarn}

handler.py
import util

def handle_request(event, context):
    util.hello()

실행 결과





주의점 등


  • Layer는 /opt로 전개된다. 여기에는 경로가 있어 Python이라면 /opt/python/opt/python/lib/python3.7/site-packages 를 사용할 수 있으므로 Layer도 python 디렉토리를 포함한 디렉토리 구성으로 할 필요가 있다.
  • 배치된 레이어의 내용은 콘솔에서 보거나 편집할 수 없다.
  • Layer는 배포할 때마다 버전이 올라가고 ARN도 바뀐다. 이번 예와 같이 다른 스택에서 ARN으로 Layer를 참조하는 경우는 Layer를 배포하면 다른 참조하고 있는 Lambda도 다시 배치할 필요가 있다.
  • 좋은 웹페이지 즐겨찾기