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 アーティファクトを調べたりできます。環境で使用可能なメソッドを使用します。

CloudTrail Lake を使用して 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 料金表」を参照してください。

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 を検索します。