AWS Lambda の Java ランタイムに AL2023 版(Java 8, 11, 17)が追加されたので、AL2 との違いを確認してみた

AWS Lambda の Java ランタイムに AL2023 版(Java 8, 11, 17)が追加されたので、AL2 との違いを確認してみた

AWS Lambda の Java 8/11/17 ランタイムに Amazon Linux 2023 ベースの新バージョンが追加されました。AL2023 版と AL2 版を関数内から観測できる情報で比較しました。
2026.07.15

はじめに

AWS CLI v2.35.22(2026-07-13 リリース)の CHANGELOG に、Lambda の Java ランタイムへの新バージョン追加が記載されました。Amazon Linux 2023(AL2023)ベースのランタイムです。

api-change:lambda: Add Java 8, 11 and 17 on AL2023 (java8.al2023, java11.al2023, java17.al2023) support to AWS Lambda.
https://github.com/aws/aws-cli/blob/v2/CHANGELOG.rst

これまで Java 系ランタイムは Amazon Linux 2(以下 AL2)をベースとする java8.al2 / java11 / java17 が提供されてきました(Java 21 以降は当初から AL2023 ベース)。今回 java8.al2023 / java11.al2023 / java17.al2023 が追加されました。Java 8/11/17 でもベース OS に AL2023 を選択できるようになっています。Amazon Linux 2 OS は 2026-06-30 に EOL を迎えました。一方、Lambda の Java 8, 11, 17 ランタイムの EOL は 2027-06-30 です。今回の追加により、Java バージョンを変えずに AL2023 ベースへ移行する選択肢が用意されました。

旧バージョンと今回追加されたバージョンの違いを表にまとめました。

項目 AL2(従来) AL2023(今回追加)
ランタイム名 java8.al2 / java11 / java17 java8.al2023 / java11.al2023 / java17.al2023
ベース OS Amazon Linux 2 Amazon Linux 2023
/etc/os-releaseSUPPORT_END 2026-06-30 2029-06-30

SUPPORT_END は OS イメージ内に記載された値です。Lambda ランタイムの廃止予定日とは異なります。

本記事では、AL2 版と AL2023 版のそれぞれに同じ Java コードをデプロイしました。関数内から取得できる OS 情報の違いと、CloudTrail に記録される UserAgent 文字列の違いを確認しています。

https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html

https://aws.amazon.com/linux/amazon-linux-2023/

検証内容

検証環境

  • AWS CLI: aws-cli/2.35.22
  • AWS SDK for Java: 2.31.1(CloudTrail テスト用の fat jar に同梱)
  • リージョン: ap-northeast-1
  • Lambda 構成: x86_64、メモリ 256MB(OS 情報取得)/ 512MB(CloudTrail テスト)、タイムアウト 30 秒 / 60 秒
  • ビルド環境: Docker(amazoncorretto:8 / maven:3.9-amazoncorretto-17

検証対象のランタイムは次の 6 つです。

  • AL2 系(従来): java8.al2 / java11 / java17
  • AL2023 系(今回追加): java8.al2023 / java11.al2023 / java17.al2023

OS 情報の比較

まず、Lambda 関数内から System.getProperty による JVM プロパティ、/etc/os-release/etc/system-release の内容、環境変数を取得しました。AL2 と AL2023 で何が変わるかを確認するため、次のハンドラを 6 つのランタイムそれぞれにデプロイしています。

package example;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.LinkedHashMap;
import java.util.Map;

public class OsInfoHandler {
    public Map<String, String> handleRequest(Object input) {
        Map<String, String> result = new LinkedHashMap<>();
        result.put("os.name", System.getProperty("os.name", "unknown"));
        result.put("os.version", System.getProperty("os.version", "unknown"));
        result.put("os.arch", System.getProperty("os.arch", "unknown"));
        result.put("java.version", System.getProperty("java.version", "unknown"));
        result.put("java.runtime.name", System.getProperty("java.runtime.name", "unknown"));
        result.put("java.vm.name", System.getProperty("java.vm.name", "unknown"));
        result.put("java.vendor", System.getProperty("java.vendor", "unknown"));

        // /etc/os-release
        try (BufferedReader reader = new BufferedReader(new FileReader("/etc/os-release"))) {
            StringBuilder sb = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) { sb.append(line).append(" | "); }
            result.put("os-release", sb.toString());
        } catch (Exception e) { result.put("os-release", "Error: " + e.getMessage()); }

        // /etc/system-release
        try (BufferedReader reader = new BufferedReader(new FileReader("/etc/system-release"))) {
            result.put("system-release", reader.readLine());
        } catch (Exception e) { result.put("system-release", "not available"); }

        // 環境変数
        result.put("AWS_EXECUTION_ENV", getEnvOrDefault("AWS_EXECUTION_ENV"));
        result.put("AWS_LAMBDA_RUNTIME_API", getEnvOrDefault("AWS_LAMBDA_RUNTIME_API"));
        result.put("LAMBDA_RUNTIME_DIR", getEnvOrDefault("LAMBDA_RUNTIME_DIR"));
        return result;
    }
    private String getEnvOrDefault(String key) {
        String v = System.getenv(key);
        return v != null ? v : "not set";
    }
}

6 関数の出力を突き合わせた結果です。AL2 系・AL2023 系でそれぞれ値が共通していたため、代表値としてまとめています。

項目 AL2 (java8.al2 / java11 / java17) AL2023 (java8.al2023 / java11.al2023 / java17.al2023)
OS名 Amazon Linux 2 Amazon Linux 2023
system-release Amazon Linux release 2 (Karoo) Amazon Linux release 2023.12.20260611 (Amazon Linux)
カーネル 5.10.255-258-297.1041.amzn2.x86_64 5.10.255-258-297.1041.amzn2.x86_64(同一)
ID_LIKE centos rhel fedora fedora
PLATFORM_ID (なし) platform:al2023
SUPPORT_END 2026-06-30 2029-06-30
Java 8 バージョン 1.8.0_492 1.8.0_482
Java 11 バージョン 11.0.31 11.0.30
Java 17 バージョン 17.0.19 17.0.18
AWS_EXECUTION_ENV AWS_Lambda_java8.al2 / java11 / java17 AWS_Lambda_java8.al2023 / java11.al2023 / java17.al2023
  • カーネルバージョンは AL2 と AL2023 で完全に一致していました。ベース OS は異なりますが、Lambda の実行基盤としては同一カーネル上で動作しています。
  • AL2023 側では PLATFORM_IDplatform:al2023 として追加され、ID_LIKEfedora のみに変わっていました。OS 判定ロジックで centosrhel を参照しているコードがある場合は注意が必要です。
OS 情報取得結果の全出力(6 関数分)

java8.al2

{
  "os.name": "Linux",
  "os.version": "5.10.255-258-297.1041.amzn2.x86_64",
  "os.arch": "amd64",
  "java.version": "1.8.0_492",
  "java.runtime.name": "OpenJDK Runtime Environment",
  "java.vm.name": "OpenJDK 64-Bit Server VM",
  "java.vendor": "Amazon.com Inc.",
  "os-release": "NAME=\"Amazon Linux\" | VERSION=\"2 (Karoo)\" | ID=\"amzn\" | ID_LIKE=\"centos rhel fedora\" | VERSION_ID=\"2\" | PRETTY_NAME=\"Amazon Linux 2\" | ANSI_COLOR=\"0;33\" | CPE_NAME=\"cpe:2.3:o:amazon:amazon_linux:2\" | HOME_URL=\"https://amazonlinux.com/\" | SUPPORT_END=\"2026-06-30\" | VARIANT_ID=\"202606170853-29f836e6-820e-4f84-a9da-4dc94efc3f6e\" | ",
  "system-release": "Amazon Linux release 2 (Karoo)",
  "AWS_EXECUTION_ENV": "AWS_Lambda_java8.al2",
  "AWS_LAMBDA_RUNTIME_API": "169.254.100.1:9001",
  "LAMBDA_RUNTIME_DIR": "/var/runtime"
}

java11

{
  "os.name": "Linux",
  "os.version": "5.10.255-258-297.1041.amzn2.x86_64",
  "os.arch": "amd64",
  "java.version": "11.0.31",
  "java.runtime.name": "OpenJDK Runtime Environment",
  "java.vm.name": "OpenJDK 64-Bit Server VM",
  "java.vendor": "Amazon.com Inc.",
  "os-release": "NAME=\"Amazon Linux\" | VERSION=\"2 (Karoo)\" | ID=\"amzn\" | ID_LIKE=\"centos rhel fedora\" | VERSION_ID=\"2\" | PRETTY_NAME=\"Amazon Linux 2\" | ANSI_COLOR=\"0;33\" | CPE_NAME=\"cpe:2.3:o:amazon:amazon_linux:2\" | HOME_URL=\"https://amazonlinux.com/\" | SUPPORT_END=\"2026-06-30\" | VARIANT_ID=\"202606170853-29f836e6-820e-4f84-a9da-4dc94efc3f6e\" | ",
  "system-release": "Amazon Linux release 2 (Karoo)",
  "AWS_EXECUTION_ENV": "AWS_Lambda_java11",
  "AWS_LAMBDA_RUNTIME_API": "169.254.100.1:9001",
  "LAMBDA_RUNTIME_DIR": "/var/runtime"
}

java17

{
  "os.name": "Linux",
  "os.version": "5.10.255-258-297.1041.amzn2.x86_64",
  "os.arch": "amd64",
  "java.version": "17.0.19",
  "java.runtime.name": "OpenJDK Runtime Environment",
  "java.vm.name": "OpenJDK 64-Bit Server VM",
  "java.vendor": "Amazon.com Inc.",
  "os-release": "NAME=\"Amazon Linux\" | VERSION=\"2 (Karoo)\" | ID=\"amzn\" | ID_LIKE=\"centos rhel fedora\" | VERSION_ID=\"2\" | PRETTY_NAME=\"Amazon Linux 2\" | ANSI_COLOR=\"0;33\" | CPE_NAME=\"cpe:2.3:o:amazon:amazon_linux:2\" | HOME_URL=\"https://amazonlinux.com/\" | SUPPORT_END=\"2026-06-30\" | VARIANT_ID=\"202606170853-29f836e6-820e-4f84-a9da-4dc94efc3f6e\" | ",
  "system-release": "Amazon Linux release 2 (Karoo)",
  "AWS_EXECUTION_ENV": "AWS_Lambda_java17",
  "AWS_LAMBDA_RUNTIME_API": "169.254.100.1:9001",
  "LAMBDA_RUNTIME_DIR": "/var/runtime"
}

java8.al2023

{
  "os.name": "Linux",
  "os.version": "5.10.255-258-297.1041.amzn2.x86_64",
  "os.arch": "amd64",
  "java.version": "1.8.0_482",
  "java.runtime.name": "OpenJDK Runtime Environment",
  "java.vm.name": "OpenJDK 64-Bit Server VM",
  "java.vendor": "Amazon.com Inc.",
  "os-release": "NAME=\"Amazon Linux\" | VERSION=\"2023\" | ID=\"amzn\" | ID_LIKE=\"fedora\" | VERSION_ID=\"2023\" | PLATFORM_ID=\"platform:al2023\" | PRETTY_NAME=\"Amazon Linux 2023.12.20260611\" | ANSI_COLOR=\"0;33\" | CPE_NAME=\"cpe:2.3:o:amazon:amazon_linux:2023\" | HOME_URL=\"https://aws.amazon.com/linux/amazon-linux-2023/\" | DOCUMENTATION_URL=\"https://docs.aws.amazon.com/linux/\" | SUPPORT_URL=\"https://aws.amazon.com/premiumsupport/\" | BUG_REPORT_URL=\"https://github.com/amazonlinux/amazon-linux-2023\" | VENDOR_NAME=\"AWS\" | VENDOR_URL=\"https://aws.amazon.com/\" | SUPPORT_END=\"2029-06-30\" | VARIANT_ID=\"202606170853-29f836e6-820e-4f84-a9da-4dc94efc3f6e\" | ",
  "system-release": "Amazon Linux release 2023.12.20260611 (Amazon Linux)",
  "AWS_EXECUTION_ENV": "AWS_Lambda_java8.al2023",
  "AWS_LAMBDA_RUNTIME_API": "169.254.100.1:9001",
  "LAMBDA_RUNTIME_DIR": "/var/runtime"
}

java11.al2023

{
  "os.name": "Linux",
  "os.version": "5.10.255-258-297.1041.amzn2.x86_64",
  "os.arch": "amd64",
  "java.version": "11.0.30",
  "java.runtime.name": "OpenJDK Runtime Environment",
  "java.vm.name": "OpenJDK 64-Bit Server VM",
  "java.vendor": "Amazon.com Inc.",
  "os-release": "NAME=\"Amazon Linux\" | VERSION=\"2023\" | ID=\"amzn\" | ID_LIKE=\"fedora\" | VERSION_ID=\"2023\" | PLATFORM_ID=\"platform:al2023\" | PRETTY_NAME=\"Amazon Linux 2023.12.20260611\" | ANSI_COLOR=\"0;33\" | CPE_NAME=\"cpe:2.3:o:amazon:amazon_linux:2023\" | HOME_URL=\"https://aws.amazon.com/linux/amazon-linux-2023/\" | DOCUMENTATION_URL=\"https://docs.aws.amazon.com/linux/\" | SUPPORT_URL=\"https://aws.amazon.com/premiumsupport/\" | BUG_REPORT_URL=\"https://github.com/amazonlinux/amazon-linux-2023\" | VENDOR_NAME=\"AWS\" | VENDOR_URL=\"https://aws.amazon.com/\" | SUPPORT_END=\"2029-06-30\" | VARIANT_ID=\"202606170853-29f836e6-820e-4f84-a9da-4dc94efc3f6e\" | ",
  "system-release": "Amazon Linux release 2023.12.20260611 (Amazon Linux)",
  "AWS_EXECUTION_ENV": "AWS_Lambda_java11.al2023",
  "AWS_LAMBDA_RUNTIME_API": "169.254.100.1:9001",
  "LAMBDA_RUNTIME_DIR": "/var/runtime"
}

java17.al2023

{
  "os.name": "Linux",
  "os.version": "5.10.255-258-297.1041.amzn2.x86_64",
  "os.arch": "amd64",
  "java.version": "17.0.18",
  "java.runtime.name": "OpenJDK Runtime Environment",
  "java.vm.name": "OpenJDK 64-Bit Server VM",
  "java.vendor": "Amazon.com Inc.",
  "os-release": "NAME=\"Amazon Linux\" | VERSION=\"2023\" | ID=\"amzn\" | ID_LIKE=\"fedora\" | VERSION_ID=\"2023\" | PLATFORM_ID=\"platform:al2023\" | PRETTY_NAME=\"Amazon Linux 2023.12.20260611\" | ANSI_COLOR=\"0;33\" | CPE_NAME=\"cpe:2.3:o:amazon:amazon_linux:2023\" | HOME_URL=\"https://aws.amazon.com/linux/amazon-linux-2023/\" | DOCUMENTATION_URL=\"https://docs.aws.amazon.com/linux/\" | SUPPORT_URL=\"https://aws.amazon.com/premiumsupport/\" | BUG_REPORT_URL=\"https://github.com/amazonlinux/amazon-linux-2023\" | VENDOR_NAME=\"AWS\" | VENDOR_URL=\"https://aws.amazon.com/\" | SUPPORT_END=\"2029-06-30\" | VARIANT_ID=\"202606170853-29f836e6-820e-4f84-a9da-4dc94efc3f6e\" | ",
  "system-release": "Amazon Linux release 2023.12.20260611 (Amazon Linux)",
  "AWS_EXECUTION_ENV": "AWS_Lambda_java17.al2023",
  "AWS_LAMBDA_RUNTIME_API": "169.254.100.1:9001",
  "LAMBDA_RUNTIME_DIR": "/var/runtime"
}

CloudTrail UserAgent の比較

次に、AWS SDK for Java 2.31.1 から EC2 の CreateSecurityGroup を呼び出し、CloudTrail に記録される UserAgent 文字列を確認しました。AL2 と AL2023 でどう変わるかの比較です。ダミーのセキュリティグループを作成してすぐ削除するだけのハンドラを用意し、比較対象は代表として java17java17.al2023 に絞っています。

package example;

import java.util.LinkedHashMap;
import java.util.Map;
import software.amazon.awssdk.services.ec2.Ec2Client;
import software.amazon.awssdk.services.ec2.model.CreateSecurityGroupRequest;
import software.amazon.awssdk.services.ec2.model.CreateSecurityGroupResponse;
import software.amazon.awssdk.services.ec2.model.DeleteSecurityGroupRequest;

public class CloudTrailTestHandler {
    public Map<String, String> handleRequest(Map<String, String> input) {
        Map<String, String> result = new LinkedHashMap<>();
        String runtime = System.getenv("AWS_EXECUTION_ENV") != null
            ? System.getenv("AWS_EXECUTION_ENV") : "unknown";
        String groupName = "dummy-sg-" + runtime.replace("AWS_Lambda_", "") + "-" + System.currentTimeMillis();

        result.put("runtime", runtime);
        result.put("groupName", groupName);

        try (Ec2Client ec2 = Ec2Client.create()) {
            CreateSecurityGroupResponse createResp = ec2.createSecurityGroup(
                CreateSecurityGroupRequest.builder()
                    .groupName(groupName)
                    .description("Dummy SG for CloudTrail UserAgent test - " + runtime)
                    .build()
            );
            result.put("groupId", createResp.groupId());
            result.put("createStatus", "SUCCESS");

            ec2.deleteSecurityGroup(
                DeleteSecurityGroupRequest.builder()
                    .groupId(createResp.groupId())
                    .build()
            );
            result.put("deleteStatus", "SUCCESS");
        } catch (Exception e) {
            result.put("error", e.getClass().getSimpleName() + ": " + e.getMessage());
        }
        return result;
    }
}

CloudTrail に記録された UserAgent を項目ごとに比較すると、次のようになりました。

項目 java17(AL2) java17.al2023
SDK バージョン aws-sdk-java/2.31.1 aws-sdk-java/2.31.1(同一)
OS os/Linux#5.10.255-258-297.1041.amzn2.x86_64 os/Linux#5.10.255-258-297.1041.amzn2.x86_64(同一)
Java バージョン lang/java#17.0.19 lang/java#17.0.18
JVM ビルド md/OpenJDK_64-Bit_Server_VM#17.0.19+10-LTS md/OpenJDK_64-Bit_Server_VM#17.0.18+8-LTS
exec-env exec-env/AWS_Lambda_java17 exec-env/AWS_Lambda_java17.al2023

明確に差が出たのは exec-env の部分です。今回使用した AWS SDK for Java 2.31.1 では、AWS_EXECUTION_ENV 環境変数の値が UserAgent の exec-env/ セグメントに含まれていました。AL2 版では exec-env/AWS_Lambda_java17、AL2023 版では exec-env/AWS_Lambda_java17.al2023 となりました。ランタイム名の違いがそのまま反映されています。

java8 / java11 系についても AWS_EXECUTION_ENV の値は対応するランタイム名に変化しています。同じ SDK バージョン・設定であれば exec-env も同様に変化すると推測されます。

UserAgent の全文は次のとおりです。

java17(AL2):

aws-sdk-java/2.31.1 md/io#sync md/http#Apache ua/2.1 os/Linux#5.10.255-258-297.1041.amzn2.x86_64 lang/java#17.0.19 md/OpenJDK_64-Bit_Server_VM#17.0.19+10-LTS md/vendor#Amazon.com_Inc. md/en_US exec-env/AWS_Lambda_java17 cfg/auth-source#env m/D

java17.al2023:

aws-sdk-java/2.31.1 md/io#sync md/http#Apache ua/2.1 os/Linux#5.10.255-258-297.1041.amzn2.x86_64 lang/java#17.0.18 md/OpenJDK_64-Bit_Server_VM#17.0.18+8-LTS md/vendor#Amazon.com_Inc. md/en_US exec-env/AWS_Lambda_java17.al2023 cfg/auth-source#env m/D
CloudTrail イベント全文(CreateSecurityGroup)

java17(AL2):

{
  "eventVersion": "1.11",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "AROAXXXXXXXXXXXXXXXXX:java17-al2-cloudtrail-test",
    "arn": "arn:aws:sts::123456789012:assumed-role/lambda-os-info-role/java17-al2-cloudtrail-test",
    "accountId": "123456789012",
    "accessKeyId": "ASIAXXXXXXXXXXXXXXXX",
    "sessionContext": {
      "sessionIssuer": {
        "type": "Role",
        "principalId": "AROAXXXXXXXXXXXXXXXXX",
        "arn": "arn:aws:iam::123456789012:role/lambda-os-info-role",
        "accountId": "123456789012",
        "userName": "lambda-os-info-role"
      },
      "attributes": {
        "creationDate": "2026-07-14T18:04:16Z",
        "mfaAuthenticated": "false"
      }
    },
    "inScopeOf": {
      "issuerType": "AWS::Lambda::Function",
      "credentialsIssuedTo": "arn:aws:lambda:ap-northeast-1:123456789012:function:java17-al2-cloudtrail-test",
      "credentialsIssuedToVersion": "arn:aws:lambda:ap-northeast-1:123456789012:function:java17-al2-cloudtrail-test:$LATEST"
    }
  },
  "eventTime": "2026-07-14T18:04:25Z",
  "eventSource": "ec2.amazonaws.com",
  "eventName": "CreateSecurityGroup",
  "awsRegion": "ap-northeast-1",
  "sourceIPAddress": "203.0.113.1",
  "userAgent": "aws-sdk-java/2.31.1 md/io#sync md/http#Apache ua/2.1 os/Linux#5.10.255-258-297.1041.amzn2.x86_64 lang/java#17.0.19 md/OpenJDK_64-Bit_Server_VM#17.0.19+10-LTS md/vendor#Amazon.com_Inc. md/en_US exec-env/AWS_Lambda_java17 cfg/auth-source#env m/D",
  "requestParameters": {
    "groupName": "dummy-sg-java17-1784052257171",
    "groupDescription": "Dummy SG for CloudTrail UserAgent test - AWS_Lambda_java17"
  },
  "responseElements": {
    "requestId": "d660b36c-bdbd-481c-9b8d-3f18a95181eb",
    "_return": true,
    "groupId": "sg-xxxxxxxxxxxxxxxxx",
    "securityGroupArn": "arn:aws:ec2:ap-northeast-1:123456789012:security-group/sg-xxxxxxxxxxxxxxxxx"
  },
  "requestID": "d660b36c-bdbd-481c-9b8d-3f18a95181eb",
  "eventID": "8b96a875-31f3-4170-99d3-9ebef5f3bccf",
  "readOnly": false,
  "eventType": "AwsApiCall",
  "managementEvent": true,
  "recipientAccountId": "123456789012",
  "eventCategory": "Management",
  "tlsDetails": {
    "tlsVersion": "TLSv1.3",
    "cipherSuite": "TLS_AES_128_GCM_SHA256",
    "clientProvidedHostHeader": "ec2.ap-northeast-1.amazonaws.com"
  }
}

java17.al2023:

{
  "eventVersion": "1.11",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "AROAXXXXXXXXXXXXXXXXX:java17-al2023-cloudtrail-test",
    "arn": "arn:aws:sts::123456789012:assumed-role/lambda-os-info-role/java17-al2023-cloudtrail-test",
    "accountId": "123456789012",
    "accessKeyId": "ASIAXXXXXXXXXXXXXXXX",
    "sessionContext": {
      "sessionIssuer": {
        "type": "Role",
        "principalId": "AROAXXXXXXXXXXXXXXXXX",
        "arn": "arn:aws:iam::123456789012:role/lambda-os-info-role",
        "accountId": "123456789012",
        "userName": "lambda-os-info-role"
      },
      "attributes": {
        "creationDate": "2026-07-14T18:04:26Z",
        "mfaAuthenticated": "false"
      }
    },
    "inScopeOf": {
      "issuerType": "AWS::Lambda::Function",
      "credentialsIssuedTo": "arn:aws:lambda:ap-northeast-1:123456789012:function:java17-al2023-cloudtrail-test",
      "credentialsIssuedToVersion": "arn:aws:lambda:ap-northeast-1:123456789012:function:java17-al2023-cloudtrail-test:$LATEST"
    }
  },
  "eventTime": "2026-07-14T18:04:36Z",
  "eventSource": "ec2.amazonaws.com",
  "eventName": "CreateSecurityGroup",
  "awsRegion": "ap-northeast-1",
  "sourceIPAddress": "203.0.113.2",
  "userAgent": "aws-sdk-java/2.31.1 md/io#sync md/http#Apache ua/2.1 os/Linux#5.10.255-258-297.1041.amzn2.x86_64 lang/java#17.0.18 md/OpenJDK_64-Bit_Server_VM#17.0.18+8-LTS md/vendor#Amazon.com_Inc. md/en_US exec-env/AWS_Lambda_java17.al2023 cfg/auth-source#env m/D",
  "requestParameters": {
    "groupName": "dummy-sg-java17.al2023-1784052267867",
    "groupDescription": "Dummy SG for CloudTrail UserAgent test - AWS_Lambda_java17.al2023"
  },
  "responseElements": {
    "requestId": "921e1398-3b50-4b39-af5f-63426d1e7238",
    "_return": true,
    "groupId": "sg-xxxxxxxxxxxxxxxxx",
    "securityGroupArn": "arn:aws:ec2:ap-northeast-1:123456789012:security-group/sg-xxxxxxxxxxxxxxxxx"
  },
  "requestID": "921e1398-3b50-4b39-af5f-63426d1e7238",
  "eventID": "5062d4ef-f430-4a48-a957-dc024d7d9588",
  "readOnly": false,
  "eventType": "AwsApiCall",
  "managementEvent": true,
  "recipientAccountId": "123456789012",
  "eventCategory": "Management",
  "tlsDetails": {
    "tlsVersion": "TLSv1.3",
    "cipherSuite": "TLS_AES_128_GCM_SHA256",
    "clientProvidedHostHeader": "ec2.ap-northeast-1.amazonaws.com"
  }
}

補足:CloudTrail の exec-env で確認できること

この UserAgent の exec-env/ を利用すると、特定のランタイムから発生した API 呼び出しを CloudTrail で絞り込めます。

たとえば、java17 の AL2 版から発生した API 呼び出しを絞り込む場合は、次の条件を利用できます。

userAgent LIKE '%exec-env/AWS_Lambda_java17%'
AND userAgent NOT LIKE '%exec-env/AWS_Lambda_java17.al2023%'

ただし、この方法で確認できるのは AWS SDK for Java 2.31.1 と同じ UserAgent 形式で API を呼び出した CloudTrail イベントに限られます。

まとめ

AWS Lambda の Java 8/11/17 ランタイムに、AL2023 ベースの java8.al2023 / java11.al2023 / java17.al2023 が追加されました。

今回の x86_64・ap-northeast-1 での検証では、AL2 版と AL2023 版の間で差がありました。ベース OS、/etc/os-release の項目、Java のパッチバージョン、AWS_EXECUTION_ENV が異なっています。

また、AWS SDK for Java 2.31.1 による API 呼び出しでは、CloudTrail の UserAgent に含まれる exec-env にランタイム名が反映されました。これにより、該当形式の CloudTrail イベントから、java17java17.al2023 のどちらで発生した呼び出しかを確認できます。

同じ Java メジャーバージョンを維持した AL2023 ベースのランタイムが追加されたことで、Java 8/11/17 の関数は AL2023 への移行先を選択できるようになりました。Amazon Linux 2 OS の EOL を踏まえ、AL2 ベースのランタイムを利用している場合は、AL2023 ランタイムへの移行をお試しください。

https://dev.classmethod.jp/articles/kiro-cli-investigate-sdk-java-1x-notification/

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事