AWS Lambda + Python + Serverless FrameworkのLayerにpipインストール

AWS LambdaのLayerにPythonのライブラリをインストールする方法です。Serverless Frameworkを使用している場合です。

少し前にも似た記事を書いたのですが、そのときはLayerに乗せられずLambda本体にライブラリのイメージが含まれてしまっていました。

前回:Serverless FrameworkとAWS Lambda with Pythonの環境にpipインストール

serverless.yml に以下のように記述すればLayerにできましたので、メモしておきます。

コメントを書いた2か所が必要です。

service: sample

frameworkVersion: '2'

provider:
  name: aws
  runtime: python3.8
  lambdaHashingVersion: 20201221
  region: ap-northeast-1

functions:
  hello:
    handler: handler.hello
    layers:
      # LayerとFunctionの紐づけの設定。
      # この書き方で serverless-python-requirements が
      # 作成してくれるLayerと紐づけてくれる。
      - { Ref: PythonRequirementsLambdaLayer }

plugins:
  - serverless-python-requirements

custom:
  pythonRequirements:
    # この設定でpipライブラリをLayerに保存してくれる。
    # これだけではFunctionとLayerの紐づけがなされないので、
    # 上記functionsの節にもlayersの記述が必要
    layer: true

バージョン情報

  • serverless@2.18.0
  • serverless-python-requirements@5.1.0