[AWS Lambda] 使用モジュールのレイヤー化

AWS Layerは、AWS Lambda関数で共有できるリソースのコレクションです。これには、コード、ライブラリ、構成ファイルなど、さまざまなものが含まれます。Layerを使用すると、Lambda関数を再デプロイせずに、関数を共有できるリソースを簡単に追加および更新できます。

Layerは、AWSコンソール、AWS CLI、またはAWS SDKを使用して作成できます。Layerを作成したら、Lambda関数に関連付けることができます。関数に関連付けられたLayerは、関数を呼び出すたびに自動的にダウンロードされます。

Layerを使用すると、Lambda関数のコードを再デプロイせずに、関数を共有できるリソースを追加および更新できます。これは、開発とデプロイの効率を向上させるのに役立ちます。

レイヤー化したいモジュールファイル群の作成

pythonという名前のフォルダを任意の場所に作成。

ターミナルで、作成したpythonフォルダに移動

下記コマンドでモジュールをインストールする。****はモジュール名。

pip install **** -t .

pythonフォルダをZip圧縮

デプロイ

AWS Lambdaの画面に移動。

左メニューのレイヤーから レイヤーの作成 をクリック

名前:適当な名前
説明:任意
互換性のあるアーキテクチャ:x86_64
互換性のあるランタイム:python3.8 / python3.9

アップロードから作成したZipファイルをアップロード

その後、作成ボタンを押下

AWS LambdaにLayerを反映

関数の画面下部にある、レイヤーの追加 を押下

レイヤーソース:カスタムレイヤー
カスタムレイヤー:自身で作ったレイヤーを選択
バージョン:使用したいレイヤーのバージョンを選択

で、`追加` ボタンをクリック

ローカルでVS Codeで実行(デバッグ)する際の設定

AWSの Lambda > レイヤー のバージョンの箇所に追加したLayerがあるので、そこのバージョンARNをコピー

プロジェクト直下にある、template.yamlを編集。
先程コピーした、バージョンARNを使って、Layers: の箇所を追加する。
Resources:
  function_name:
    Properties:
      Layers:
        - arn:aws:lambda:ap-northeast-1:123456789012:layer:layer_name:1
これで、実行時にLayerがダウンローされる。