0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

コンテナイメージを利用した簡単なLambdaを作成する

Last updated at Posted at 2022-10-01

コンテナイメージを使用したLambdaを作る必要があったので、pythonで簡単なHello worldを表示させるだけのLambdaの作り方をメモ。

0.作成手順

1.各ファイルの準備
2.ECRリポジトリの作成
3.ECRへイメージをプッシュ
4.Lambda関数の作成
5.Lambda関数のテスト

1.各ファイルの準備

Dockerfileとpython処理を記述したapp.pyを準備して同じディレクトリに置く。

app.pyにはHello worldを返すだけの処理を記述。

app.py
def handler(event, context):
    return 'Hello world!'

Dockerfileはドキュメント:Lambda コンテナイメージの作成を参考に作成。

Dockerfile
FROM public.ecr.aws/lambda/python:3.8

COPY app.py ${LAMBDA_TASK_ROOT}

# この例ではrequirements.txtは必要ないので下2行はコメントアウト
#COPY requirements.txt  .
#RUN  pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}"

CMD [ "app.handler" ] 

2.ECRリポジトリの作成

AWSマネジメントコンソールでリポジトリを作成する。
リポジトリ名を入れるだけで作成可能。
この例ではリポジトリ名をhello-testで作成。
01_リポジトリ作成.png

3.ECRへイメージをプッシュ

作成したECRリポジトリの画面>プッシュコマンドの表示ボタンから表示されるコマンドをコピーして実行すればOK。

(1) docker login(東京リージョンの例)

$ aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin {AWSaccountID}.dkr.ecr.ap-northeast-1.amazonaws.com

(2) docker build

$ docker build -t hello-test .

(3) イメージにタグを付与

docker tag hello-test:latest {AWSaccountID}.dkr.ecr.ap-northeast-1.amazonaws.com/hello-test:latest

(4) ECRにイメージをプッシュ

docker push {AWSaccountID}.dkr.ecr.ap-northeast-1.amazonaws.com/hello-test:latest

※タグは後々のことを考えるとlatestから変えた方がよいかも。。。

4.Lambda関数の作成

マネジメントコンソールのLambda>関数>関数の作成で、コンテナイメージを選択。
関数名とコンテナイメージURIを入力して作成できる。
03_lambda作成画面_入力済み.png
関数を作成すると、イメージ欄にイメージURIが表示される。
04_lambda概要画面.png

5.Lambda関数のテスト

テストの実行結果。"Hello world!"が表示されている。
05_テスト実行結果.png

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?