- pipモジュールをインストールしたLambda Layerを作成するためのテンプレート
- Lambda Layerを作成し、SSM ParameterにLayerArnを登録する
- pipモジュールのインストールにはDockerとPoetryを利用する
- AWSへのデプロイにはTerraformを使用する
- Github Actionsを使用してAWSにデプロイするためのワークフロー定義も行っている
./
├── .github/
│ └── workflows/
│ └── deploy.yml
├── .gitignore
├── build.sh
├── Dockerfile
├── layers/
│ └── base/
│ ├── poetry.lock
│ └── pyproject.toml
├── LICENSE
├── Makefile
├── modules/
│ └── layer/
│ ├── outputs.tf
│ ├── resources.tf
│ ├── terraform.tf
│ └── variables.tf
├── README.md
├── terraform.sample.tfvars
└── terraform.tf
.github/workflows/deploy.yml
: Github Actionsを使ってデプロイを行うためのワークフロー定義build.sh
: Dockerを使用してpipモジュールをインストールするScriptDockerfile
: pipモジュールをインストールするためのDockerfilelayers/**
: レイヤーを定義する。ディレクトリを分けることで複数定義できるpyproject.toml
: インストールするpipモジュールを管理するのに使うpoetry.lock
: poetryが使用するlockファイル
Makefile
: 各種コマンドを定義しているmodules/layer
: Lambda Layerとそれを参照するためのSSM Parameterを定義するTerraform Moduleterraform.sample.tfvars
: 使用するtfvarsのサンプルterraform.tf
: Terraform定義
最初から書いている layers/bases
配下のファイルはサンプル。
build.sh --name LAYER_DIR_NAME --arch [amd64|arm64] --runtime-version RUNTIME_VERSION
--name LAYER_DIR_NAME: directory having pyproject.toml in layers (ex: layers/base)
--arch [amd64|arm64]: CPU architecture
--runtime-version RUNTIME_VERSION: use python runtime version (default: 3.12) (ex: 3.12, 3.10)
DockerとPoetryを使ってpipモジュールをインストールする。
--name
でpyproject.tomlとpoetry.lockファイルがあるディレクトリを指定 (ここにpython/
ディレクトリが作成されその中にpipモジュールがインストールされる)--arch
でCPUアーキテクチャを指定--runtime-version
でLambdaのPython Runtimeのバージョンを指定する (指定がなければ3.12
を使用する)