{Lambda}Lambda コンテナイメージの作成

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

 

-- 1. コマンド等のインストール

-- 1.1 aws cli version 2 インストール

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

aws --version

-- 1.2 docker インストール

sudo amazon-linux-extras install docker -y


sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker
sudo usermod -a -G docker ec2-user

ターミナルを再起動
id


-- 2. AWS ベースイメージから Lambda 用のイメージを作成する

mkdir test
cd test


vim app.py

#!/usr/bin/python
def lambda_handler(event, context):
    print(event)
    return 'OK'

-- 2.1 Dockerfile を作成
vim Dockerfile

FROM public.ecr.aws/lambda/python:3.8
COPY app.py ${LAMBDA_TASK_ROOT}
CMD [ "app.lambda_handler" ] 

-- 2.2 Docker イメージをビルド
docker image build -t testimage:v1 .
docker image ls -a

-- 2.3 Docker イメージを起動

docker run -p 9000:8080 testimage:v1

-- 別セッションから確認
docker container ls -a


curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'


docker container rm -f 111111111111

 

-- 2.4 Dockerへの認証
aws ecr get-login-password --region ap-northeast-1 | \
docker login --username AWS --password-stdin 999999999999.dkr.ecr.ap-northeast-1.amazonaws.com


-- 2.5 Amazon ECR にリポジトリを作成
aws ecr create-repository \
--repository-name ecr01 \
--image-scanning-configuration scanOnPush=false \
--image-tag-mutability IMMUTABLE

aws ecr describe-repositories


-- 2.6 リポジトリ名と一致するタグをイメージに付け、イメージを Amazon ECR にpush
docker image tag testimage:v1 999999999999.dkr.ecr.ap-northeast-1.amazonaws.com/ecr01:v1
docker image ls -a

docker image push 999999999999.dkr.ecr.ap-northeast-1.amazonaws.com/ecr01:v1

aws ecr list-images --repository-name ecr01


-- 3. クリーンアップ
-- Docker イメージ削除

docker image ls -a
docker image rm -f 222222222222


-- ECRリポジトリの削除
aws ecr describe-repositories

aws ecr delete-repository \
--repository-name ecr01 \
--force