AWS Lambda の Java ランタイムに AL2023 版(Java 8, 11, 17)が追加されたので、AL2 との違いを確認してみた
はじめに
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-release の SUPPORT_END |
2026-06-30 | 2029-06-30 |
※SUPPORT_END は OS イメージ内に記載された値です。Lambda ランタイムの廃止予定日とは異なります。
本記事では、AL2 版と AL2023 版のそれぞれに同じ Java コードをデプロイしました。関数内から取得できる OS 情報の違いと、CloudTrail に記録される UserAgent 文字列の違いを確認しています。
検証内容
検証環境
- 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_IDがplatform:al2023として追加され、ID_LIKEがfedoraのみに変わっていました。OS 判定ロジックでcentosやrhelを参照しているコードがある場合は注意が必要です。
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 でどう変わるかの比較です。ダミーのセキュリティグループを作成してすぐ削除するだけのハンドラを用意し、比較対象は代表として java17 と java17.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 イベントから、java17 と java17.al2023 のどちらで発生した呼び出しかを確認できます。
同じ Java メジャーバージョンを維持した AL2023 ベースのランタイムが追加されたことで、Java 8/11/17 の関数は AL2023 への移行先を選択できるようになりました。Amazon Linux 2 OS の EOL を踏まえ、AL2 ベースのランタイムを利用している場合は、AL2023 ランタイムへの移行をお試しください。







