概要
dockerイメージであげたことがなかったのでやってみた。
AIも使ってみたけど、結構いい感じにアドバイスしてくれる。
AIくんに聞いてみる
ちょうどNotionAIを導入したところだったので聞いてみた。
下記コードを書いてれた。賢い。Python書いたことほとんどないので助かる。
公式ベースを使う形。
cdk.ts
import * as cdk from 'aws-cdk-lib';
import * as lambda from 'aws-cdk-lib/aws-lambda';
import { DockerImageFunction } from 'aws-cdk-lib/aws-lambda-docker';
const app = new cdk.App();
const stack = new cdk.Stack(app, 'LambdaDockerStack');
const dockerImage = lambda.DockerImageCode.fromImageAsset('./', {
cmd: ['app.handler'], // Pythonファイルのエントリーポイントを指定
});
new DockerImageFunction(stack, 'LambdaFunction', {
code: dockerImage,
memorySize: 512,
timeout: cdk.Duration.seconds(30),
});
Dockerfile
FROM public.ecr.aws/lambda/python:3.8
COPY app.py ${LAMBDA_TASK_ROOT}
CMD [ "app.handler" ]
app.py
import sys
def handler(event, context):
return 'Hello from AWS Lambda using Python' + sys.version + '!'
デプロイ
デプロイすると、Lambdaが作成される。
テスト実行で、 Hello
が返ることを確認できた。
代替ベースイメージからの作成
公式イメージ以外からの作成も試してみる。
ソース
フォルダはデフォルトと同じ/var/task
を使ってみた。
Dockerfile
FROM python:3
WORKDIR /var/task
COPY app.py /var/task
# lambda実行用
RUN pip install awslambdaric
ENTRYPOINT [ "/usr/local/bin/python", "-m", "awslambdaric" ]
CMD [ "app.handler" ]