Lambdaをコンテナで実行したときの実行ユーザーを確認する

Lambdaのコンテナイメージサポートを確認しつつ、実行ユーザーを確認したメモ。

参考リンク

イメージの作成

イメージを作成する。RIC導入済みのベースイメージは以下のリンクに記載がある。Pythonのイメージを使うことにする。

アプリケーション(app.py)を作成する。

import os
import sys
def handler(event, context):
    msg='Hello from AWS Lambda using Python!'
    msg+=', sys.version: '
    msg+=sys.version
    msg+=', os.getuid: '
    msg+=str(os.getuid())
    return msg

Dockerfileを作成する。

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

COPY app.py   ./
CMD ["app.handler"]

イメージをビルドする。

docker build -t hello-lambda .

RIEを使ってテストするため、ローカルでイメージを起動する。

docker run --rm -it -p 9000:8080 hello-lambda

別ターミナルからリクエストを送る。

$ curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'
"Hello from AWS Lambda using Python!, sys.version: 3.8.6 (default, Dec 16 2020, 01:05:15) \n[GCC 7.3.1 20180712 (Red Hat 7.3.1-11)], os.getuid: 0"

ECRにログインする。

ACCOUNT_ID=$(aws sts get-caller-identity --output text --query Account)
AWS_REGION=$(aws configure get region)
aws ecr get-login-password | docker login --username AWS --password-stdin https://${ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com

ECRにpushする。

aws ecr create-repository --repository-name hello-lambda
docker tag  hello-lambda:latest ${ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/hello-lambda:latest
docker push ${ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/hello-lambda:latest

関数のデプロイ

マネコンで関数を作成する。

f:id:sotoiwa:20210112074941p:plain

関数をテストする。uidは993となっている。

f:id:sotoiwa:20210112074956p:plain