心当たりのない AWS SDK for Java 1.x サポート終了通知を Kiro CLI と CloudTrail で調査してみた

心当たりのない AWS SDK for Java 1.x サポート終了通知を Kiro CLI と CloudTrail で調査してみた

AWS Health から「AWS SDK for Java 1.x を使用している」という通知が届いたものの、心当たりがありませんでした。Kiro CLI で CloudTrail を Athena 経由で調査したところ、主な呼び出し元は AWS Chatbot のサービスリンクドロールでした。調査の流れと Kiro CLI の使いどころを紹介します。
2026.06.03

はじめに

開発環境として利用している個人アカウントに、以下の通知が届きました。

AWS Health通知

Our records indicate that one or more applications in this account made AWS API calls using the AWS SDK for Java 1.x within the last 16 days.

AWS SDK for Java 1.x は 2025 年 12 月 31 日にサポート終了しています。しかし、このアカウントで Java SDK を使ったアプリケーションを動かしている覚えがありません。心当たりがないため、AWS Health ダッシュボードと CloudTrail で呼び出し元を調査することにしました。

通知内容の確認

AWS Health のイベントログを確認しました。

イベントログ一覧

AWS_SDK_PLANNED_LIFECYCLE_EVENT として記録されています。イベント詳細画面で通知本文と影響範囲を確認しました。

Sdk planned lifecycle event詳細

通知の要点は以下のとおりです。

  • 過去 16 日間に AWS SDK for Java 1.x を使用した API 呼び出しが検出された
  • SDK 1.x は 2025 年 12 月 31 日にサポート終了済み
  • 既存アプリケーションは動作し続けるが、セキュリティパッチやバグ修正は提供されない
  • SDK 2.x への移行を推奨

Affected Resources タブで影響リージョンを確認しました。

影響を受けるリソース

Affected Resources JSON
[
  {
    "entityValue": "us-east-1",
    "awsAccountId": "xxxxxxxxxxxx",
    "lastUpdatedTime": "2026-06-03T01:10:49.723Z",
    "statusCode": "PENDING"
  }
]

us-east-1 のリソースが対象であることがわかりました。

Kiro CLI で CloudTrail を調査

LookupEvents での初動調査

Kiro CLI に以下のように依頼しました。

次の案内が届きました。利用に心当たりがありません。バージニアのCloudTrailで、利用サービス、実行元などの調査は可能?

(通知本文の抜粋)

Kiro CLI は CloudTrail の LookupEvents API を使い、us-east-1 から直近 3,000 件を取得して UserAgent に aws-sdk-java/1. を含むイベントを抽出しました。結果は 1 件のみ検出でした。

ただし 3,000 件では通知の検出期間(16 日間)全体をカバーできていませんでした。LookupEvents での調査は非効率と判断し、Athena に切り替えました。

Athena での本調査

まず、Athena テーブルの作成を依頼しました。

us-east-1 の CloudTrail ログを Athena で検索したい。
必要なテーブルを作成して。
ログの容量が多い可能性があるので、年月日で調査範囲は限定したい。適切なパーティション投影を設定して。
S3 バケット、リージョンは CloudTrail 設定から確認して。

Kiro CLI は describe-trails で S3 バケットとプレフィックスを特定し、パーティション投影付きのテーブルを作成しました。

Kiro CLI が生成した CREATE TABLE
CREATE EXTERNAL TABLE cloudtrail_logs_use1 (
  eventVersion STRING,
  userIdentity STRUCT<
    type: STRING, principalId: STRING, arn: STRING,
    accountId: STRING, invokedBy: STRING, accessKeyId: STRING,
    userName: STRING,
    sessionContext: STRUCT<
      attributes: STRUCT<mfaAuthenticated: STRING, creationDate: STRING>,
      sessionIssuer: STRUCT<type: STRING, principalId: STRING, arn: STRING, accountId: STRING, userName: STRING>,
      ec2RoleDelivery: STRING, webIdFederationData: MAP<STRING, STRING>
    >
  >,
  eventTime STRING, eventSource STRING, eventName STRING,
  awsRegion STRING, sourceIPAddress STRING, userAgent STRING,
  errorCode STRING, errorMessage STRING,
  requestParameters STRING, responseElements STRING,
  additionalEventData STRING, requestId STRING, eventId STRING,
  readOnly STRING,
  resources ARRAY<STRUCT<arn: STRING, accountId: STRING, type: STRING>>,
  eventType STRING, apiVersion STRING, recipientAccountId STRING,
  serviceEventDetails STRING, sharedEventID STRING, vpcEndpointId STRING,
  tlsDetails STRUCT<tlsVersion: STRING, cipherSuite: STRING, clientProvidedHostHeader: STRING>
)
PARTITIONED BY (`year` STRING, `month` STRING, `day` STRING)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
STORED AS INPUTFORMAT 'com.amazon.emr.cloudtrail.CloudTrailInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://cm-members-cloudtrail-xxxxxxxxxxxx/AWSLogs/xxxxxxxxxxxx/CloudTrail/us-east-1/'
TBLPROPERTIES (
  'projection.enabled' = 'true',
  'projection.year.type' = 'integer',
  'projection.year.range' = '2020,2026',
  'projection.month.type' = 'integer',
  'projection.month.range' = '1,12',
  'projection.month.digits' = '2',
  'projection.day.type' = 'integer',
  'projection.day.range' = '1,31',
  'projection.day.digits' = '2',
  'storage.location.template' = 's3://cm-members-cloudtrail-xxxxxxxxxxxx/AWSLogs/xxxxxxxxxxxx/CloudTrail/us-east-1/${year}/${month}/${day}',
  'classification' = 'cloudtrail'
)

テーブルが作成できたので、続けて検索を依頼しました。

過去16日間で UserAgent に "aws-sdk-java/1." を含むイベントの一覧を出して。
呼び出し元の IAM プリンシパル、操作名、サービス、ソースIP を整理して報告して。

Kiro CLI はパーティションで期間を限定したクエリを生成し、実行しました。

Kiro CLI が生成したクエリ
SELECT
  eventtime, eventsource, eventname,
  useridentity.arn AS principal,
  useragent, sourceipaddress
FROM cloudtrail_logs_use1
WHERE useragent LIKE '%aws-sdk-java/1.%'
  AND (
    (year = '2026' AND month = '05' AND day >= '18')
    OR (year = '2026' AND month = '06')
  )
ORDER BY eventtime DESC

調査結果

以下のイベントが検出されました。

呼び出し元 件数 操作
AWSServiceRoleForAWSChatbot 107 件 CreateLogStream
CodeBuild 関連ロール 3 件 GetBucketLocation / CreateLogStream
kiro-headless-lambda-role 1 件 RetireGrant

全体の 95% 以上が AWS Chatbot のサービスリンクドロールによる CreateLogStream でした。UTC 00:02 ごろ(JST 09:02 ごろ)にまとまって発生する傾向があり、サービスの定期処理と見られます。

検出された 3 パターンのイベントを示します。

パターン 1: AWS Chatbot(107 件)

{
  "eventtime": "2026-06-03T00:02:39Z",
  "eventsource": "logs.amazonaws.com",
  "eventname": "CreateLogStream",
  "principal": "arn:aws:sts::xxxxxxxxxxxx:assumed-role/AWSServiceRoleForAWSChatbot/Assuming-ServiceRole-For-AWSChatbot-chatbot-logs-management",
  "useragent": "aws-internal/3 aws-sdk-java/1.12.797 Linux/5.10.253-286.1015.amzn2.x86_64 OpenJDK_64-Bit_Server_VM/17.0.18+9-LTS java/17.0.18 kotlin/2.2.21 vendor/Amazon.com_Inc. cfg/retry-mode/standard cfg/auth-source#unknown m/P exec-env/AWS_Lambda_java17",
  "sourceipaddress": "3.134.xx.xxx"
}

パターン 2: CodeBuild(3 件)

{
  "eventtime": "2026-05-20T15:53:30Z",
  "eventsource": "s3.amazonaws.com",
  "eventname": "GetBucketLocation",
  "principal": "arn:aws:sts::xxxxxxxxxxxx:assumed-role/kiro-headless-codebuild-role/AWSCodeBuild",
  "useragent": "[aws-internal/3 aws-sdk-java/1.12.797 Linux/5.10.253-253.1015.amzn2int.x86_64 OpenJDK_64-Bit_Server_VM/21.0.11+10-LTS java/21.0.11 scala/2.12.19 kotlin/2.3.21 vendor/Amazon.com_Inc. cfg/retry-mode/standard cfg/auth-source#unknown m/P]",
  "sourceipaddress": "10.195.xx.xxx"
}

パターン 3: Lambda ランタイム(1 件)

{
  "eventtime": "2026-05-20T15:46:34Z",
  "eventsource": "kms.amazonaws.com",
  "eventname": "RetireGrant",
  "principal": "arn:aws:sts::xxxxxxxxxxxx:assumed-role/kiro-headless-lambda-role/kiro-headless-docker",
  "useragent": "aws-internal/3 aws-sdk-java/1.12.797 Linux/5.10.252-285.992.amzn2.x86_64 OpenJDK_64-Bit_Server_VM/17.0.18+9-LTS java/17.0.18 kotlin/1.8.22 vendor/Amazon.com_Inc. cfg/retry-mode/standard cfg/auth-source#STSAssumeRoleCredentialsProvider m/P,T exec-env/AWS_Lambda_java17",
  "sourceipaddress": "52.90.xx.xxx"
}

原因の特定

検出されたイベントはいずれも aws-internal/3 プレフィックスを含んでいました。ロール名、セッション名、操作内容と合わせて確認した結果、ユーザーアプリケーションが直接 AWS SDK for Java 1.x を使用しているものではなく、AWS サービス側の内部処理に伴う呼び出しと判断しました。

そのため、この検証用アカウントでは SDK 移行対応は不要と判断し、今回は静観することにしました。

各パターンの判断根拠は以下のとおりです。

パターン 1: AWS Chatbot(107 件)

  • ロール名 AWSServiceRoleForAWSChatbot — AWS マネージドサービスが自動作成するサービスリンクドロール
  • セッション名 chatbot-logs-management — Chatbot がログ管理目的で CloudWatch Logs を操作
  • 毎日同じ時刻帯にまとまって発生 — サービスの定期処理

パターン 2: CodeBuild(3 件)

  • セッション名が AWSCodeBuild — CodeBuild サービスが自動付与するセッション名
  • GetBucketLocation / CreateLogStream — ビルド実行時に CodeBuild サービスが行う S3 アーティファクト確認やログ出力に伴う処理と見られる
  • SourceIP がプライベートアドレス(10.195.x.x)— AWS 内部ネットワーク

パターン 3: Lambda ランタイム(1 件)

  • RetireGrant(KMS)— Lambda ランタイムがコンテナイメージの復号に使用した KMS Grant のリタイア
  • ユーザー実装(kiro-headless-docker)に SDK 1.x は含まれておらず、Lambda ランタイムの内部操作

まとめ

Kiro CLI を使うことで、CloudTrail 設定の確認から Athena クエリの実行、結果整理までを一連の流れで進められました。心当たりのない AWS Health 通知を調査する機会があれば、Kiro CLI をお試しください。

参考リンク

https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-aws-sdk-for-java-v1-x-on-december-31-2025/

https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/migration-find-apps-using-v1.html

この記事をシェアする

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

関連記事