컨테이너 이미지를 사용하여 Lambda 함수 만들기

컨테이너 이미지를 직접 디자인할 수 있는 기능은 AWS Lambda에 있습니다.
AWS Lambda의 새로운 기능 – 컨테이너 이미지 지원 | Amazon 웹 서비스 블로그
그래서 나는 절차를 간단하게 정리했다.

소스 코드 만들기


어쨌든 먼저 Lambda 함수를 풀기 위한 소스 코드를 만듭니다.
이번에는 노드다.js로 제작.
먼저 생성package.json합니다.
package.json
{
  "name": "lambda-container-image-example",
  "license": "MIT"
}
실행npm install 및 생성package-lock.json.
# `npm i` でも可
$ npm install
파일index.js을 만들고 Lambda 함수가 실행하는 프로세서 코드를 설치합니다.
행사 내용을 그대로 답장하면 된다.
index.js
exports.handler = async (event) => {
  return event;
};

컨테이너 이미지 만들기


Docker file 만들기

Dockerfile.
이번 기본 이미지는 AWS에서 제공한 이미지를 사용합니다.
Lambda에서 사용한 AWS 기반 이미지 일람은 "Lambda 컨테이너 이미지 실행 시간 지원 - AWS Lambda"을 참조하십시오.
또한 기본 이미지를 사용하는 방법에 대해서는 "Lambda 컨테이너 이미지 만들기 - AWS Lambda"을 참조하십시오.
Dockerfile
# AWS ベースイメージを使用
FROM public.ecr.aws/lambda/nodejs:14

# ソースコードを関数のルートディレクトリにコピーします。
# 関数のルートディレクトリは `LAMBDA_TASK_ROOT` 環境変数を上書きすることで変更することができます ( デフォルトは `/var/task` ) 。
COPY index.js package.json package-lock.json /var/task/
RUN npm install

# CMD にハンドラを設定します。
# Node.js の場合は `{ファイル名(拡張子なし)}.{関数名}` のように指定します。
# 今回は `index.js` の `handler` 関数をハンドラとして用意しているので以下のようになります。
CMD ["index.handler"]

현지에서 실행해 보도록 하겠습니다.


실행 시간 인터페이스 시뮬레이터 로컬에서 함수를 실행할 수 있습니다.
먼저 컨테이너 이미지를 구성합니다.
$ docker build -t lambda-container-image-example .
docker run로 컨테이너를 가동한다.
POST 요청을
$ docker run --rm -p 8080:8080 lambda-container-image-example:latest
localhost:8080/2015-03-31/functions/function/invocations에 전송하여 함수를 실행할 수 있습니다.
$ curl -X POST "http://localhost:8080/2015-03-31/functions/function/invocations" -d '{"key":"value"}'
{"key":"value"}

ECR 저장소로 이미지 밀어넣기


ECR 웨어하우스 작성


관리 콘솔에서 リポジトリを作成를 클릭하여 ECR 저장소를 만듭니다.
이번 창고명은 lambda-container-image-example입니다.
또한 기본값으로 リポジトリを作成을 클릭합니다.

그림을 밀다


이미지를 로컬로 구축하고 ECR 저장소로 밀어냅니다.
관리 콘솔에서 창고를 선택한 상태에서 プッシュコマンドの表示를 클릭하여 구축 ~ 추용 명령을 확인할 수 있습니다.


실제 명령은 다음과 같다.
# ログイン
$ aws ecr get-login-password --region {リージョン} | docker login --username AWS --password-stdin {アカウントID}.dkr.ecr.{リージョン}.amazonaws.com

# コンテナイメージをビルド
$ docker build -t lambda-container-image-example .

# イメージにタグをつける
$ docker tag lambda-container-image-example:latest {アカウントID}.dkr.ecr.{リージョン}.amazonaws.com/lambda-container-image-example:latest

# ECR にイメージをプッシュ
$ docker push {アカウントID}.dkr.ecr.{リージョン}.amazonaws.com/lambda-container-image-example:latest

컨테이너 이미지를 사용하여 Lambda 함수 만들기


관리 콘솔에서 함수를 만듭니다.
옵션コンテナイメージ을 선택합니다.
함수명은 이번에 lambda-container-image-example로 정했다.
컨테이너 이미지 URI에 ECR 창고로 밀어 넣은 컨테이너 이미지의 URI를 입력합니다.
이번에{アカウントID}.dkr.ecr.{リージョン}.amazonaws.com/lambda-container-image-example:latest.

컨테이너 이미지를 사용하여 Lambda 함수를 작성합니다.

GitHub


https://github.com/koki-develop/lambda-container-image-example

참고 자료


https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-images.html

좋은 웹페이지 즐겨찾기