0
0

More than 1 year has passed since last update.

【AWS Lamba】コンテナイメージから Lambda関数を作成する

Posted at

ローカル環境の準備

Dockerfile
FROM golang:1.17-buster as builder
WORKDIR /go/src/lambda
COPY go.mod go.sum ./
RUN go mod download
COPY ./ .
RUN go build -a -o /main .

FROM debian:buster as runner
WORKDIR /app/
COPY --from=builder /main /main
ENTRYPOINT [ "/main" ]
  • main.go作成
main.go
package main

import (
       "fmt"
       "context"
       "github.com/aws/aws-lambda-go/lambda"
)

type MyEvent struct {
       Name string `json:"name"`
}

func HandleRequest(ctx context.Context, name MyEvent) (string, error) {
       return fmt.Sprintf("Hello %s!", name.Name ), nil
}

func main() {
       lambda.Start(HandleRequest)
}
  • モジュール初期化
    $ go mod init example.com/hello

  • モジュールの依存関係を最適化
    $ go mod tidy

コンテナ作成 / ECRプッシュ

ECRリポジトリからプッシュコマンドを表示させて、ECRにイメージをプッシュする
※詳細な手順は下記を参照
【Amazon ECR】AWS CLI を使ってリポジトリへプッシュする

Lamda権限をもつロール作成

※実際にLamda関数を作成する画面で使用します
image.png

AWSLamda_FullAccess ポリシーを追加
"Lamda_Full" でフィルタリング
image.png
image.png

Lambda関数の作成

コンテナイメージから作成する方法を選択
※事前にECRにイメージをプッシュしておく
前述で作成したロールを指定
image.png

テスト実行
image.png

ポイント
Lambda関数は ECR のイメージを実行するのではなく、イメージをもとに作成されたコンテナで実行される。そのため ECR のイメージを削除しても、既に作成された Lambda関数は影響を受けない。

参考サイト
https://note.com/dd_techblog/n/n3187a9036354#ejGk9

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