기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS SDK for Java 1.x 클라이언트를 사용하여 애플리케이션 찾기
로 마이그레이션하기 전에 환경에서 SDK for Java 1.x 클라이언트를 사용하는 애플리케이션을 식별 AWS SDK for Java 2.x해야 합니다. CloudTrail 로그를 사용하여 SDK 사용량을 추적하거나, 애플리케이션 로그에서 사용 중단 경고를 검색하거나, 소스 코드 및 빌드 구성을 검사하거나, 배포 가능한 Java 아티팩트를 검사할 수 있습니다. 환경에서 사용 가능한 메서드를 사용합니다.
CloudTrail Lake를 사용하여 1.x 클라이언트가 있는 애플리케이션 찾기
AWS CloudTrail Lake를 사용하면 CloudTrail에서 기록한 이벤트를 쿼리할 수 있습니다. 다음 단계에 따라 애플리케이션에서 사용하는 SDK 버전을 식별하는 데이터 레이크를 만듭니다.
-
CloudTrail 데이터 레이크를 만듭니다. 이벤트 데이터 스토어를 만들려면 사용 설명서를 참조하세요.
-
데이터 스토어를 만든 후 레코드 콘텐츠를 검사합니다. 레코드 본문에는 요청된 작업, 타이밍 및 위치를 결정하는 필드가 포함되어 있습니다. 자세한 내용은 CloudTrail 레코드 콘텐츠에 대한 사용 설명서를 참조하세요.
-
데이터에 대해 쿼리를 실행합니다. 사용 설명서에 따라 쿼리하고 쿼리 결과를 저장합니다.
각 레코드의 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" }
이 정보를 사용하여 요청이 이루어진 때와 위치를 확인할 수 있습니다.
이 예제에서 DynamoDB ListTables 요청은 Alice라는 이름의 IAM 사용자 자격 증명을 사용하여 IP 주소(12.345.6.78)에서 2025-07-01
02:23:52 (UTC)에 생성됐습니다. userAgent 필드의 값은 요청이 JDK 111.12.746이 설치된 Linux 시스템의 AWS SDK for Java 버전을 사용하여 이루어졌음을 보여줍니다.
AWS CloudTrail 이벤트 레코드의 필드에 대한 설명은 관리, 데이터 및 네트워크 활동 이벤트에 대한 CloudTrail 레코드 콘텐츠를 참조하세요.
계정에서 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 명령은 일치하는 로그 줄을 인쇄합니다. 경고가 없으면 애플리케이션이 Java 1.x용 SDK를 사용하지 않거나 1.12.767 이전 버전을 사용합니다. 이 경우이 문서에 설명된 다른 방법 중 하나를 사용합니다.
소스 코드 및 종속성 검색
코드베이스를 검색하고 구성 파일을 빌드하여 AWS SDK for Java 1.x에 대한 참조를 찾을 수 있습니다. 키 식별자는 모든 SDK for Java 1.x 아티팩트에서 사용하는 com.amazonaws 그룹 ID입니다.
다음 예제에서는를 사용하여 일반적인 Java 프로젝트 파일에서 com.amazonaws 참조를 검색grep하는 방법을 보여줍니다.
예: Java 소스 파일에서 SDK for Java 1.x 가져오기 검색(프로젝트 루트 디렉터리에서 실행)
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. Java 1.x용 SDK에서 가져오기를 확인하려면 , pom.xml build.gradle또는 종속성 관리 구성의 해당 아티팩트 ID가 로 시작하는지 확인합니다aws-java-sdk-.
예: SDK for Java 1.x 종속성을 위한 Maven pom.xml 파일 검색(프로젝트 루트 디렉터리에서 실행)
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 명령은 소스 및 빌드 파일에서 직접 선언된 Java 1.x용 SDK 참조를 식별합니다. 하지만 애플리케이션 자체가 SDK에 의존하는 타사 라이브러리를 통해 Java 1.x용 SDK에 전이적으로 의존할 수도 있습니다. 빌드 도구의 종속성 트리를 사용하여 Java 1.x용 직접 및 전이 SDK 종속성을 모두 찾을 수 있습니다. 빌드 시스템과 일치하는 예제를 선택합니다.
예: Maven을 사용하여 Java 1.x용 전이적 SDK 종속성을 모두 찾습니다(프로젝트 루트 디렉터리에서 실행).
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을 사용하여 Java 1.x용 전이적 SDK 종속성을 모두 찾습니다(프로젝트 루트 디렉터리에서 실행).
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(예: lib/ 또는 아래의 WARs, EARs 또는 Lambda 패키지의 클래스) 내에서 찾을 수 없습니다WEB-INF/lib/. 씬 JARs 경우 빌드 구성(pom.xml, build.gradle) 또는 종속성 트리를 대신 확인합니다. 중첩된 JARs 경우 디스크로 추출하지 않고 ZIP 아카이브를 재귀적으로 읽을 수 있는 도구를 사용하여 번들링된 JARs을 검색합니다.