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版も開発中な様子です。こちらも試してみても良いかもしれません。

    参考

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark