AWS CDKでPythonのLambda関数をデプロイしてみた
この記事では、Pythonで作成したLambda関数をAWS CDKでデプロイする方法が紹介されています。CDKのセットアップやLambda関数のソースコード配置方法、定義方法などが詳細に説明されています。また、TypeScriptを使用することも可能で、AWS LambdaのPython版に関する情報も参考になります。CLIコマンドの実行やライブラリの追加手順も記事内で紹介されています。
広告ここから
広告ここまで
目次
この記事では、Pythonを使って実装したLambda関数をAWS CDKでデプロイする方法を簡単に紹介しています。pip
を使ったインストールも試してみています。
CDKをセットアップ
まずはCDKのセットアップを行います。今回デプロイするのはPythonですが、リソース定義はTypeScriptで行います。これはそっちの方が慣れているからだけですので、Pythonをメインで扱われている方はPythonで統一した方が良いかもしれません。
cdk init app --language typescript
Bootstrapがまだの方は、こちらも済ませておきましょう。
cdk bootstrap
Lambda関数のソースコードを追加する
デプロイするLambdaのソースコードは、lambda
ディレクトリに配置します。requirements.txt
もここで作っていますが、pip freeze
で生成しても良いとは思います。
mkdir lambda
touch lambda/requirements.txt
touch lambda/index.py
CDKでLambdaを定義する
あとはCDKでLambdaのリソース定義を行いましょう。pip
でライブラリを追加する場合は、building
を使ってビルド内容を設定する必要があります。
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as lambda from 'aws-cdk-lib/aws-lambda';
export class CdkStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
new lambda.Function(this, 'PythonFunction', {
runtime: lambda.Runtime.PYTHON_3_12,
handler: 'lambda_forecast.handler',
code: lambda.Code.fromAsset('lambda', {
bundling: {
image: lambda.Runtime.PYTHON_3_12.bundlingImage,
command: [
'bash', '-c',
'pip install -r requirements.txt -t /asset-output && cp -au . /asset-output'
]
}
}),
timeout: cdk.Duration.seconds(30),
memorySize: 256,
loggingFormat: lambda.LoggingFormat.JSON,
})
}
}
参考にさせてもらったブログによると、aws_lambda_nodejs
のPython版も開発中な様子です。こちらも試してみても良いかもしれません。