Lambda のランタイムを変更する方法を教えてください

Lambda のランタイムを変更する方法を教えてください

2022.08.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Here is the English version

困っていた内容

AWS から 現在使用している Lambda のランタイムを更新するよう通知が来ました。
Lambda のランタイムを更新するために新しいランタイムに変更したいのですが、どのように変更すればよいのか教えてください。

どう対応すればいいの?

Lambda コンソールおよび Lambda の UpdateFunctionConfiguration API を使用して変更できます。

Lambda 関数の .zip ファイルアーカイブとしてのデプロイ - AWS Lambda

新しいランタイムを使用するように関数の設定を更新する場合は、新しいランタイムとの互換性を確保するために関数コードを更新する必要がある場合があります。

やってみた

以下の 5 つのパターンでランタイムを変更してみます。

  1. Lambda コンソール
  2. AWS CLI
  3. CloudFormation
  4. AWS SDK for JavaScript v3
  5. AWS SDK for Python (Boto3)

1. Lambda コンソール

検証のために Python 3.10 ランタイムを使用する関数を作成しました。
2025-10-23_09h24_21

関数のランタイムを Python 3.13 に変更してみます。
ランタイム設定 > 編集をクリックします。
2025-10-23_09h25_02

ランタイムのリストから Python 3.13 を選択します。
2025-10-23_09h25_29

他の設定は変更せずに保存をクリックします。
2025-10-23_09h26_18

画面上部に「関数 関数名 が正常に更新されました。」と表示され、ランタイムも Python 3.13 に変更されています。
2025-10-23_09h27_03

2. AWS CLI

AWS CLI で変更する場合は update-function-configuration コマンドを使用します。

$ aws lambda update-function-configuration \
--function-name test \
--runtime python3.13

{
    "FunctionName": "test",
    "FunctionArn": "arn:aws:lambda:ap-northeast-1:012345678901:function:test",
    "Runtime": "python3.13",
    "Role": "arn:aws:iam::012345678901:role/LambdaBasicExecutionRole",
    "Handler": "lambda_function.lambda_handler",
    "CodeSize": 299,
    "Description": "",
    "Timeout": 3,
    "MemorySize": 128,
    "LastModified": "2025-10-22T23:51:34.000+0000",
    "CodeSha256": "HAPq9EReJVEC5gLavtc/gyd5vZtd9eiUGF932t0jBxY=",
    "Version": "$LATEST",
    "TracingConfig": {
        "Mode": "PassThrough"
    },
    "RevisionId": "1e10fc2c-1bb2-4988-a963-4a66a1a46215",
    "State": "Active",
    "LastUpdateStatus": "InProgress",
    "LastUpdateStatusReason": "The function is being created.",
    "LastUpdateStatusReasonCode": "Creating",
    "PackageType": "Zip",
    "Architectures": [
        "x86_64"
    ],
    "EphemeralStorage": {
        "Size": 512
    },
    "SnapStart": {
        "ApplyOn": "None",
        "OptimizationStatus": "Off"
    },
    "RuntimeVersionConfig": {
        "RuntimeVersionArn": "arn:aws:lambda:ap-northeast-1::runtime:fe7a78198cc1037d599c8e576c9b94c4d6b88f8067b86f7d3481b75d9fd76c24"
    },
    "LoggingConfig": {
        "LogFormat": "Text",
        "LogGroup": "/aws/lambda/test"
    }
}

3. CloudFormation

CloudFormation の場合は AWS::Lambda::Function の Runtime を変更します。

まずは以下のテンプレートで変更前の Python 3.10 ランタイムの関数を作成します。

AWSTemplateFormatVersion: "2010-09-09"
Description: "Python 3.10 Lambda Function"

Resources:
  LambdaFunction:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: test
      Runtime: python3.10
      Role: arn:aws:iam::012345678901:role/LambdaBasicExecutionRole
      Handler: index.lambda_handler
      Code:
        ZipFile: |
          def lambda_handler(event, context):
              return {
                  'statusCode': 200,
                  'body': 'Hello from Lambda!'
              }

CloudFormation で関数を作成した後にランタイムを python3.13 に変更してスタックを更新します。

AWSTemplateFormatVersion: "2010-09-09"
Description: "Python 3.13 Lambda Function"

Resources:
  LambdaFunction:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: test
      Runtime: python3.13
      Role: arn:aws:iam::012345678901:role/LambdaBasicExecutionRole
      Handler: index.lambda_handler
      Code:
        ZipFile: |
          def lambda_handler(event, context):
              return {
                  'statusCode': 200,
                  'body': 'Hello from Lambda!'
              }

既存のテンプレートを置換で更新します。
2025-10-23_09h32_50

スタックの更新が完了後にランタイムが変更されていることを Lambda コンソールなどで確認してください。

4. AWS SDK for JavaScript v3

AWS SDK for JavaScript v3 の場合は UpdateFunctionConfigurationCommand を使用します。

index.mjs
import { LambdaClient, UpdateFunctionConfigurationCommand } from "@aws-sdk/client-lambda";

const client = new LambdaClient({ region: "ap-northeast-1" });

export const handler = async (event) => {
  const command = new UpdateFunctionConfigurationCommand({
    FunctionName: "test",
    Runtime: "python3.13",
  });

  const response = await client.send(command);

  return {
    statusCode: 200,
    body: JSON.stringify({
      message: "Function configuration updated",
      functionName: response.FunctionName
    })
  };
};

5. AWS SDK for Python (Boto3)

AWS SDK for Python (Boto3) の場合は update_function_configuration を使用します。

import json
import boto3

client = boto3.client('lambda')

def lambda_handler(event, context):

    response = client.update_function_configuration(
        FunctionName='test',
        Runtime='python3.13'
    )

    print(json.dumps(response))

    return

注意点

Lambda のランタイムを変更する場合には変更後のランタイムとソースコードの互換性があるか開発環境などで十分検証してから変更することをお勧めします。

参考資料

この記事をシェアする

FacebookHatena blogX

関連記事