

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Java용 X-Ray AWS SDK를 사용하여 SDK 호출 추적
<a name="xray-sdk-java-awssdkclients"></a>

**참고**  
X-Ray SDK/데몬 유지 관리 공지 - 2026년 2월 25일에 AWS X-Ray SDKs/데몬은 유지 관리 모드로 전환되며, 여기서 AWS 는 보안 문제만 해결하도록 X-Ray SDK 및 데몬 릴리스를 제한합니다. 지원 일정에 대한 자세한 내용은 [X-Ray SDK 및 데몬 지원 타임라인](xray-sdk-daemon-timeline.md) 섹션을 참조하세요. OpenTelemetry로 마이그레이션하는 것이 좋습니다. OpenTelemetry로 마이그레이션하는 방법에 대한 자세한 내용은 [X-Ray 계측에서 OpenTelemetry 계측으로 마이그레이션](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-migration.html)을 참조하세요.

애플리케이션이를 호출 AWS 서비스 하여 데이터를 저장하거나, 대기열에 쓰거나, 알림을 보내면 Java용 X-Ray SDK는 [하위 세그먼트](xray-sdk-java-subsegments.md)의 다운스트림 호출을 추적합니다. 추적된 AWS 서비스 와 해당 서비스(예: Amazon S3 버킷 또는 Amazon SQS 대기열) 내에서 액세스하는 리소스는 X-Ray 콘솔의 트레이스 맵에 다운스트림 노드로 표시됩니다.

빌드에서 `aws-sdk` 및 `aws-sdk-instrumentor` [하위 모듈](xray-sdk-java.md#xray-sdk-java-submodules)을 포함하면 Java용 X-Ray SDK가 모든 AWS SDK 클라이언트를 자동으로 계측합니다. Instrumentor 하위 모듈을 포함하지 않을 경우 다른 클라이언트는 배제하고 일부 클라이언트만 선택하여 구성할 수 있습니다.

개별 클라이언트를 계측하려면 빌드에서 `aws-sdk-instrumentor` 하위 모듈을 제거하고 서비스의 클라이언트 빌더를 사용하여 AWS SDK 클라이언트`TracingHandler`에를 `XRayClient`로 추가합니다.

예를 들어 `AmazonDynamoDB` 클라이언트를 구성하려면 트레이스 핸들러를`AmazonDynamoDBClientBuilder`로 전달합니다.

**Example MyModel.java - DynamoDB 클라이언트**  

```
import [com.amazonaws.xray.AWSXRay](https://docs.aws.amazon.com/xray-sdk-for-java/latest/javadoc/com/amazonaws/xray/AWSXRay.html);
import [com.amazonaws.xray.handlers.TracingHandler](https://docs.aws.amazon.com/xray-sdk-for-java/latest/javadoc/com/amazonaws/xray/handlers/TracingHandler.html);

...
public class MyModel {
  private AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard()
        .withRegion(Regions.fromName(System.getenv("AWS_REGION")))
        .withRequestHandlers(new TracingHandler(AWSXRay.getGlobalRecorder()))
        .build();
...
```

모든 서비스의 경우, X-Ray 콘솔에서 호출된 API의 이름을 볼 수 있습니다. 서비스 하위 집합에 대해서는 X-Ray SDK가 세그먼트에 정보를 추가하여 서비스 맵에서 추가 세분화를 제공합니다.

예를 들어 계측된 DynamoDB 클라이언트에서 직접 호출을 생성하는 경우 SDK가 특정 테이블을 대상으로 한 직접 호출에 대해 테이블 이름을 세그먼트에 추가합니다. 콘솔에서, 각 테이블이 개별 노드로 서비스 맵에 표시되고, 특정 테이블을 대상으로 하지 않은 직접 호출에 대해 일반 DynamoDB 노드가 표시됩니다.

**Example 항목을 저장하기 위한 DynamoDB 직접 호출에 대한 하위 세그먼트**  

```
{
  "id": "24756640c0d0978a",
  "start_time": 1.480305974194E9,
  "end_time": 1.4803059742E9,
  "name": "DynamoDB",
  "namespace": "aws",
  "http": {
    "response": {
      "content_length": 60,
      "status": 200
    }
  },
  "aws": {
    "table_name": "scorekeep-user",
    "operation": "UpdateItem",
    "request_id": "UBQNSO5AEM8T4FDA4RQDEB94OVTDRVV4K4HIRGVJF66Q9ASUAAJG",
  }
}
```

명명된 리소스에 액세스할 때 다음 서비스를 호출할 경우 서비스 맵에 추가 노드가 생성됩니다. 특정 리소스를 대상으로 하지 않는 경우 서비스를 직접 호출하면 해당 서비스에 대한 일반 노드가 생성됩니다.
+ **Amazon DynamoDB** – 테이블 이름
+ **Amazon Simple Storage Service** –버킷 및 키 이름
+ **Amazon Simple Queue Service** – 대기열 이름

 AWS SDK for Java 2.2 이상을 AWS 서비스 사용하여에 대한 다운스트림 호출을 계측하려면 빌드 구성에서 `aws-xray-recorder-sdk-aws-sdk-v2-instrumentor` 모듈을 생략할 수 있습니다. 대신 `aws-xray-recorder-sdk-aws-sdk-v2 module`을 포함한 다음, `TracingInterceptor`로 구성하여 개별 클라이언트를 계측합니다.

**Example AWS SDK for Java 2.2 이상 - 추적 인터셉터**  

```
import com.amazonaws.xray.interceptors.TracingInterceptor;
import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
//...
public class MyModel {
private DynamoDbClient client = DynamoDbClient.builder()
.region(Region.US_WEST_2)
.overrideConfiguration(ClientOverrideConfiguration.builder()
.addExecutionInterceptor(new TracingInterceptor())
.build()
)
.build();
//...
```