Python 100Days Challenge Day29
AWS CDKを使ってLambdaを動かしてみる。
Docker Imageを使うのは環境構築が楽だからです。押忍。
cdkコマンドはこれをみてまずは使えるようにしておく。
https://docs.aws.amazon.com/ja_jp/cdk/v2/guide/cli.html
AWS CDK TypeScript Projectの準備
下記コマンド一発でCDKの環境ができる
cdk init app --language typescript
実際にLambdaを動かすコードはPythonで書くが、ベースコードはTypeScriptで書かれているのでこのようなコマンドをたたく。
imageディレクトリとsrcディレクトリを作成する
mkdir image && cd image/
mkdir src
src直下にmain.pyファイルを作成する
touch main.py
imageディレクトリにもどってrequirements.txtを定義する
requirements.txtは、Pythonプロジェクトで使用される外部ライブラリやパッケージのリストを記述するテキストファイルのこと。これでプロジェクトの依存関係を管理できる。
touch requirements.txt
vi requirements.txt
numpyを使うのでnumpyとtxtファイルに追加する
Dockerfileの設定
Dockerfileをimageディレクトリ内で定義する。
- 定義内容
- ベースイメージの設定
- requirements.txtをLambda関数が実行されるディレクトリにコピーする
- Pythonパッケージをインストールする
- Lambda関数が実行されるディレクトリにコピーする
FROM public.ecr.aws/lambda/python:3.11
COPY requirements.txt ${LAMBDA_TASK_ROOT}
# パッケージのインストール
RUN pip install -r requirements.txt
# ファイルのコピー
COPY src/* ${LAMBDA_TASK_ROOT}
# mainのハンドラー関数を実行(AWS Lambdaがイベント処理するために最初に呼び出す関数)
CMD [ "main.handler" ]
Docker imageが問題なく動くかどうかテストする。
Macbookの場合はDockerアプリを必ず立ち上げてからこのコマンドをたたくこと。
docker build -t docker-image:test .
準備はできたので、次回はPythonのコードを書いてAWSにデプロイ、Lambdaを動かしてみる。
ソースコードはこちら