はじめに
サブシステムの開発などでスピード感をもって lambda をリリースしたい時がよくあります。
割と「あれ、どうやって環境構築したっけ?」ってなることが多いので、まとめることにしました。
samでもいいですし、何を使ってデプロイするかはその組織や案件によって様々考えられると思いますが、私の場合は chalice でデプロイすることが多いので、今回は chalice でデプロイするまでの流れを記述します。
技術
- python 3.12.1
- chalice 1.30.0
前提
AWSアカウントを所有していること
環境構築
1. direnvインストール
goコンパイラが入っている場合
~/ $ git clone https://github.com/direnv/direnv
~/ $ cd direnv
direnv $ sudo make install
macの場合
~/ $ brew install direnv
~/ $ brew install openssl readline sqlite3 xz zlib # 依存関係のライブラリ
2. direnvのバージョン確認
direnv version
これで、バージョン
が表示されればOK
開発用環境変数設定
1. .envrcファイル作成
~/ $ cd hoge #適当なファイルを作ったり git clone したり
hoge $ echo 'dotenv .env' > .envrc
2. direnv適用
direnv allow
仮想環境作成
1. 仮想環境を作成する
hoge $ python -m venv .venv
※ 人によっては python3 -m venv .venv
だったりするかも
2. 仮想環境をアクティベート
hoge $ source .venv/bin/activate
3. pipアップデート
# (venv)
hoge $ python -m pip install pip~=23.3.2
hoge $ python -m pip install --upgrade pip # 最新をインストールする場合
4. pip-toolsインストール
# (venv)
hoge $ pip install pip-tools
requirements.txtのコンパイル
1. requirements.txtの作成
certifi==2023.11.17
# via requests
charset-normalizer==3.3.2
# via requests
idna==3.6
# via requests
requests==2.31.0
# via -r requirements.in
urllib3==2.1.0
# via requests
aws-lambda-powertools==2.31.0
2. dev-requirements.inの作成
用途に合わせてdev-requirements.inを作成する
# dev-requirements.in
# Lambdaランタイムにあわせる
botocore==1.34.18
boto3==1.34.18
# https://pypi.org/project/botocore-stubs/#history
botocore-stubs==1.34.18
# https://pypi.org/project/boto3-stubs/
boto3-stubs[lambda]==1.34.18
# Lambdaレイヤーにあわせる
# https://pypi.org/project/aws-lambda-powertools/#history
aws-lambda-powertools[parser]==2.31.0
# https://pypi.org/project/chalice/#history
chalice~=1.30.0
# https://pypi.org/project/black/#history
black~=23.12.1
# https://pypi.org/project/flake8/#history
flake8~=7.0.0
# https://pypi.org/project/pipdeptree/#history
pipdeptree~=2.13.2
# https://pypi.org/project/pytest/
pytest~=7.4.4
# https://pypi.org/project/coverage/#history
coverage~=7.4.0
# https://pypi.org/project/locust/#history
locust~=2.20.1
# https://pypi.org/project/Faker/#history
Faker~=22.2.0
3. dev-requirements.inをコンパイルしてdev-requirements.txtを作成する
hoge $ pip-compile dev-requirements.in
4. dev-requirements.txtをインストールする
hoge $ pip install -r dev-requirements.txt
5.\ chaliceプロジェクト作成
chalice new-project project-name
project-nameというプロジェクトディレクトリが作成される。
ローカルテスト
# (venv)
hoge $ chalice local --stage dev
Serving on http://127.0.0.1:8000
が出力されればOK
デプロイ
環境を指定しない場合
# (venv)
hoge $ chalice deploy
環境を指定する場合
# (venv)
hoge $ chalice deploy --stage dev
hoge $ chalice deploy --stage stg
hoge $ chalice deploy --stage prd
最後に
個人的には一番手っ取り早くデプロイできると思っています。
特に .chalice/config.json
にサブネットやSG、IAMなども指定することができて、
DEV、STG、PRDなどもオブジェクト単位で分けて記述できるので便利です。