View a markdown version of this page

AWS SDK for Java 1.x クライアントを使用してアプリケーションを検索する - AWS SDK for Java 2.x

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS SDK for Java 1.x クライアントを使用してアプリケーションを検索する

に移行する前に AWS SDK for Java 2.x、環境内のどのアプリケーションが SDK for Java 1.x クライアントを使用しているかを特定する必要があります。CloudTrail ログを使用して、SDK の使用状況をトレースしたり、アプリケーションログで非推奨の警告を検索したり、ソースコードとビルド設定を調べたり、デプロイ可能な Java アーティファクトを調べたりできます。環境で使用できる任意の方法を使用します。

CloudWatch Logs Insights を使用して 1.x クライアントでアプリケーションを検索する

Amazon CloudWatch Logs Insights では、CloudWatch Logs ロググループに配信される CloudTrail イベントをクエリできます。 CloudWatch この方法を使用して、CloudTrail レコードの userAgent フィールドから SDK バージョンを識別します。CloudWatch Logs を有効にした CloudWatch CloudTrail 証跡が必要です。証跡がない場合は、CloudTrail コンソールを使用した証跡の作成」およびCloudWatch Logs へのイベントの送信」を参照してください。

CloudWatch コンソールで、Logs の下の Logs Insights に移動します。 CloudTrail ロググループを選択し、分析する期間をカバーする時間範囲を設定します。Logs Insights の使用の詳細については、CloudWatch Logs Insights を使用したログデータの分析」を参照してください。

次のサンプルクエリは、SDK for Java 1.x で行われたユーザーアプリケーションおよびサードパーティーツールからのすべてのリクエストを検索します。Logs Insights は、Logs Insights QL と SQL の両方をサポートしています。QL クエリは、コンソールで選択されたロググループを使用します。SQL クエリでは、 FROM句でロググループ名を指定する必要があります。

Logs Insights QL クエリ:

fields userIdentity.type, userIdentity.arn, eventSource, awsRegion, eventName, eventType, eventTime, userAgent, sourceIPAddress | filter userAgent like /aws-sdk-java\/1\./ | filter userAgent not like /aws-internal\// | sort eventTime desc

SQL クエリ:

SELECT `userIdentity.type`, `userIdentity.arn`, eventSource, awsRegion, eventName, eventType, eventTime, userAgent, sourceIPAddress FROM `sample-cloudtrail-log-group` WHERE userAgent LIKE '%aws-sdk-java/1.%' AND userAgent NOT LIKE '%aws-internal/%' ORDER BY eventTime DESC

sample-cloudtrail-log-group を CloudTrail ロググループの名前に置き換えます。

結果をエクスポートするには、結果のエクスポートを選択します。次の例は、JSON 形式の 1 つのイベントを示しています。

{ "userIdentity.type": "AssumedRole", "userIdentity.arn": "arn:aws:sts::123456789012:assumed-role/Admin/Alice", "eventSource": "dynamodb.amazonaws.com", "awsRegion": "us-east-1", "eventName": "ListTables", "eventType": "AwsApiCall", "eventTime": "2025-07-01T22:02:23Z", "userAgent": "aws-sdk-java/1.12.746 Linux/5.10.240 OpenJDK/11.0.25+9-LTS ...", "sourceIPAddress": "12.345.6.78" }

この例では、引き受けたロール の認証情報12.345.6.78を使用して、IP アドレス2025-07-01T22:02:23 (UTC)から で DynamoDB ListTablesリクエストが行われましたAdmin/AliceuserAgent フィールドには、JDK 11 を使用する 1.12.746 Linux システムで SDK for Java バージョンを使用してリクエストが行われたことが示されます。

AWS CloudTrail イベントレコードのフィールドの説明については、CloudTrail レコードの内容」を参照してください。

アカウントで CloudTrail が有効になっていない場合は、組織の AWS アカウント管理者に連絡して有効にするか、次のセクションで説明する代替方法のいずれかを使用します。

CloudWatch Logs Insights は、スキャンされたデータ量に基づいてクエリごとに課金されます。この調査専用に証跡を作成した場合は、継続的な料金が発生しないように、証跡の停止または削除を検討してください。現在の料金については、Amazon CloudWatch の料金」を参照してください。

SDK 非推奨のアプリケーション警告レベルのログを検索する

バージョン 1.12.767 (2024 年 7 月 30 日にリリース) 以降、 AWS SDK for Java 1.x はアプリケーションの起動時に非推奨警告を発行します。この警告のアプリケーションログを検索して、SDK for Java 1.x を使用しているアプリケーションとホストを特定できます。

警告の正確な表現は SDK バージョンによって異なります。

  • バージョン 1.12.767 から 1.12.796:

    WARNING: The AWS SDK for Java 1.x entered maintenance mode starting July 31, 2024 and will reach end of support on December 31, 2025...

  • バージョン 1.12.797 以降:

    WARNING: The AWS SDK for Java 1.x reached end of support on December 31, 2025...

末尾は、警告メッセージが追加のテキストで続く...ことを示します。一般的なプレフィックスを検索The AWS SDK for Java 1.xして、いずれかのバージョンの警告を検索できます。

次の例は、 を使用してこの警告を検索する方法を示していますgrep

grep -r "The AWS SDK for Java 1.x" /path/to/your/application/logs/

警告が見つかった場合、grepコマンドは一致するログ行を出力します。警告が見つからない場合は、アプリケーションが SDK for Java 1.x を使用していないか、1.12.767 より前のバージョンを使用しています。その場合は、このドキュメントで説明されている他の方法のいずれかを使用します。

ソースコードと依存関係を検索する

コードベースとビルド設定ファイルで AWS SDK for Java 1.x への参照を検索できます。キー識別子は、すべての SDK for Java 1.x アーティファクトで使用されるcom.amazonawsグループ ID です。

次の例はgrep、 を使用して一般的な Java プロジェクトファイル全体のcom.amazonawsリファレンスを検索する方法を示しています。

例: SDK for Java 1.x インポートの Java ソースファイルを検索する (プロジェクトのルートディレクトリから実行)

grep -r "import com.amazonaws" --include="*.java" .

出力の例:

src/main/java/com/example/App.java:import com.amazonaws.services.s3.AmazonS3;
注記

com.amazonaws パッケージは、 などの SDK for Java 1.x に含まれていないライブラリでも使用されますaws-lambda-java-core。インポートが SDK for Java 1.x からのものであることを確認するには、pom.xml、、build.gradleまたは依存関係管理設定の対応するアーティファクト ID が で始まることを確認しますaws-java-sdk-

例: Maven pom.xml ファイルで SDK for Java 1.x の依存関係を検索する (プロジェクトのルートディレクトリから実行)

grep -r "com.amazonaws" --include="pom.xml" .

出力の例:

pom.xml: <groupId>com.amazonaws</groupId>

例: SDK for Java 1.x 依存関係の Gradle ビルドファイルを検索する (プロジェクトのルートディレクトリから実行)

grep -r "com.amazonaws:aws-java-sdk" --include="*.gradle" .

出力の例:

build.gradle: implementation 'com.amazonaws:aws-java-sdk-s3:1.12.xxx'

上記のgrepコマンドは、ソースファイルとビルドファイルで直接宣言された SDK for Java 1.x リファレンスを識別します。ただし、アプリケーションは SDK for Java 1.x に推移的に依存している場合もあります。これは、SDK 自体に依存するサードパーティーライブラリを通じて行われます。ビルドツールの依存関係ツリーを使用して、直接 SDK for Java 1.x 依存関係と推移的 SDK for Java 1.x 依存関係の両方を検索します。ビルドシステムに一致する例を選択します。

例: Maven を使用してすべての推移的な SDK for Java 1.x 依存関係を検索する (プロジェクトのルートディレクトリから実行)

mvn dependency:tree -Dincludes=com.amazonaws

出力の例:

[INFO] com.example:my-application:jar:1.0-SNAPSHOT [INFO] +- com.amazonaws:aws-java-sdk-s3:jar:1.12.746:compile [INFO] | \- com.amazonaws:aws-java-sdk-core:jar:1.12.746:compile [INFO] \- some.thirdparty:library:jar:2.3.1:compile [INFO] \- com.amazonaws:aws-java-sdk-dynamodb:jar:1.12.600:compile

-Dincludes=com.amazonaws フラグはツリーをフィルタリングして、SDK for Java 1.x アーティファクトのみを表示します。この例では、 aws-java-sdk-s3は直接的な依存関係ですが、 によって導入される推移的な依存関係aws-java-sdk-dynamodbですsome.thirdparty:library

例: Gradle を使用して、すべての推移的な SDK for Java 1.x 依存関係を検索する (プロジェクトのルートディレクトリから実行)

gradle dependencies --configuration runtimeClasspath | grep "com.amazonaws"

出力の例:

+--- com.amazonaws:aws-java-sdk-s3:1.12.746 | \--- com.amazonaws:aws-java-sdk-core:1.12.746 \--- com.amazonaws:aws-java-sdk-dynamodb:1.12.600

Gradle には Maven の と同等の依存関係フィルターが組み込まれていないため-Dincludes、パイプスルーが最も簡単なアプローチgrepです。

デプロイ可能な Java アーティファクトを検査する

デプロイ可能な Java アーティファクト (JARs、WARs、または EARs) を検査し、 AWS SDK for Java 1.x がアプリケーションにパッケージ化されているかどうかを確認できます。Java アーカイブファイルは ZIP 形式のファイルです。SDK for Java 1.x が存在するかどうかを判断するには、アーカイブcom/amazonaws/sdk/versionInfo.properties内の ファイルを探します。このファイルは aws-java-sdk-coreモジュールに含まれ、SDK バージョン番号が含まれています。

jar コマンドを使用したクイックチェック

すべての依存関係クラスが最上位レベルでマージされる uber-jar の場合は、アーカイブコンテンツを一覧表示し、バージョンファイルを検索します。

次の例では、 をアプリケーションの JAR ファイルへのパスmyapp.jarに置き換えます。

jar -tf myapp.jar | grep 'versionInfo.properties'

SDK が存在する場合、出力は次のとおりです。

com/amazonaws/sdk/versionInfo.properties

jar コマンドが環境で使用できない場合 (JRE 専用イメージや最小コンテナイメージなど)、unzip -l代わりに を使用できます。

unzip -l myapp.jar | grep 'versionInfo.properties'

バージョンを出力するには:

unzip -p myapp.jar com/amazonaws/sdk/versionInfo.properties

出力の例:

platform=java version=1.12.xxx
注記

前述のコマンドは、uber-jars の最上位エントリのみを検索します。SDK クラスはJARs (依存関係が外部) またはネストされた JARs (WARs、EARslib/または または の Lambda パッケージなど) 内では見つかりませんWEB-INF/lib/。シン JARs、代わりにビルド設定 (pom.xmlbuild.gradle) または依存関係ツリーを確認してください。ネストされた JARs の場合は、ディスクに抽出せずに再帰的に ZIP アーカイブを読み取ることができるツールを使用して、バンドルされた JARs を検索します。

CloudTrail Lake を使用して 1.x クライアントでアプリケーションを検索する

重要

AWS CloudTrail Lake は、2026 年 5 月 31 日以降、新規のお客様に公開されなくなりました。既存のお客様はサービスを引き続き使用できます。詳細については、CloudTrail Lake の可用性の変更」を参照してください。代替アプローチについては、「」を参照してくださいCloudWatch Logs Insights を使用して 1.x クライアントでアプリケーションを検索する

AWS CloudTrail Lake では、CloudTrail によって記録されたイベントをクエリできます。アプリケーションで使用される SDK バージョンを識別するデータレイクを作成するには、次の手順に従ってください。

  1. CloudTrail データレイクを作成します。イベントデータストアを作成するには、ユーザーガイドを参照してください。

  2. データストアを作成したら、レコードの内容を調べます。レコード本文には、リクエストされたアクション、日次、場所を示すフィールドが含まれています。詳細については、CloudTrail レコードコンテンツのユーザーガイドを参照してください。

  3. データに対してクエリを実行します。ユーザーガイドに従ってクエリを実行し、クエリ結果を保存します

各レコードの [userAgent] フィールドには、リクエストを行った SDK バージョンが含まれています。このフィールドを使用して、SDK for Java 1.x を使用するアプリケーションを識別します。

次のサンプルクエリは、EventDatastoreID の 2025 年 6 月 17 日以降に SDK for Java 1.x で行われたユーザーアプリケーションおよびサードパーティーツールからのすべてのリクエストを検索しますsample-Data-Store-Id

select userIdentity, eventSource, awsRegion, eventName, eventType, eventTime, userAgent, requestParameters, sourceIPAddress from sample-Data-Store-Id where eventTime > '2025-06-17 00:00:00' and userAgent like '%aws-sdk-java/1.%' and userAgent not like '%aws-internal/%' order by eventTime desc

以下は、クエリ結果のイベントコンテンツの例です。

{ "userIdentity": "{ "type": "IAMUser", "principalId": "AIDAJ45Q7YFFAREXAMPLE", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "", "userName": "Alice" }", "eventSource": "dynamodb.amazonaws.com", "awsRegion": "us-west-2", "eventName": "ListTables", "eventType": "AwsApiCall", "eventTime": "2025-07-01 02:23:52.000", "userAgent": "aws-sdk-java/1.12.746 Linux/5.10.240 OpenJDK/11.0.25+9-LTS ...", "requestParameters": "", "sourceIPAddress": "12.345.6.78" }

この情報を使用して、リクエストが行われた日時と場所を判断できます。

この例では、Alice という名前の IAM ユーザー認証情報を使用して、IP アドレス 12.345.6.78 から 2025-07-01 02:23:52 (UTC) に DynamoDB ListTables リクエストが行われています。userAgent フィールドの値は、JDK 11 を使用する 1.12.746 Linux システムから AWS SDK for Java のバージョンを使用してリクエストが行われたことを示します。

AWS CloudTrail イベントレコードのフィールドの説明については、CloudTrail record contents for management, data, and network activity events」を参照してください。

アカウントで CloudTrail が有効になっていない場合は、組織の AWS アカウント管理者に連絡して有効にするか、前のセクションで説明した代替方法のいずれかを使用します。

CloudTrail Lake は、クエリごとに取り込まれたデータとスキャンされたデータに対して課金されます。コストを最小限に抑えるには、クエリを特定の時間範囲とリージョンにフィルタリングします。現在の料金については、「AWS CloudTrail 料金表」を参照してください。