4
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?

More than 1 year has passed since last update.

お題は不問!Qiita Engineer Festa 2023で記事投稿!

TypeScriptでAWS Lambda実行環境のコンテナイメージを作成する

Posted at

概要

TypeScriptでコンテナイメージとしてAWS Lambdaの実行環境を作成・デプロイする手順を記述する。
コンテナイメージはAWS ECRにデプロイする。

ディレクトリ構成

.
├── Dockerfile
├── README.md
├── package.json
├── src
│   └── index.ts
├── tsconfig.json
└── yarn.lock

TypeScriptプロジェクトの開始

初期化

npm init -y

package.jsonの編集

{
  "name": "typescript_lambda_function",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "devDependencies": {
    "@types/aws-lambda": "^8.10.114",
    "@types/node": "^18.15.11",
    "esbuild": "^0.17.16",
    "typescript": "^5.0.4"
  },
  "scripts": {
    "build": "esbuild src/index.ts --bundle --minify --sourcemap --platform=node --target=es2020 --outfile=dist/index.js"
  }
}

TypeScriptでLambda関数のコンテナイメージを作成する際は以下のパッケージが必要

  • @types/aws-lambda
  • @types/node
  • esbuild
  • typescript

パッケージをインストール

yarn install

Dockerfileの作成

FROM public.ecr.aws/lambda/nodejs:16 as builder
WORKDIR /usr/app
COPY package.json ./
COPY src/*  ./src/
RUN npm install -g yarn
RUN yarn install
RUN yarn build


FROM public.ecr.aws/lambda/nodejs:16
WORKDIR ${LAMBDA_TASK_ROOT}
COPY --from=builder /usr/app/dist/* ./
CMD ["index.handler"]

デプロイ

① ECRリポジトリを作成する

② リポジトリ作成後、「プッシュコマンドの表示」を押下し、表示されたコマンドを順に実行する

Apple Silicon (M1, M2)モデルのMacを使用している場合、
docker build 実行時に --platform linux/amd64 オプションをつける必要がある。

③ ECRリポジトリにコンテナイメージをプッシュした後、Lambda関数を作成する

関数の作成 > コンテナイメージ を選択し、前の手順で作成したECRイメージを選択する
アーキテクチャはx86_64を選択
スクリーンショット 2023-06-20 9.17.41.png

無事関数が作成されれば、デプロイ完了です♪

参考・関連記事

4
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
4
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?