0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

サクっとchaliceでlambdaをデプロイするまで

Last updated at Posted at 2024-01-13

はじめに

サブシステムの開発などでスピード感をもって 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などもオブジェクト単位で分けて記述できるので便利です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?