

# 트랜잭션 검색 활성화
<a name="Enable-TransactionSearch"></a>

콘솔 또는 API를 사용하여 [트랜잭션 검색](CloudWatch-Transaction-Search.md)을 활성화할 수 있습니다. 트랜잭션 검색은 전체 계정에 대해 구성되며, X-Ray를 통한 모든 스팬 수집을 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)을 사용하는 비용 효율적인 수집 모드로 전환합니다. 기본적으로 수집된 스팬의 1%를 분석용 트레이스 요약으로 무료로 인덱싱합니다. 이는 트랜잭션 검색을 통해 수집된 모든 스팬에 대한 전체 트레이스 가시성이 이미 있는 경우 일반적으로 충분합니다.

## 사전 조건
<a name="Enable-TransactionSearch-prerequisites"></a>

 트랜잭션 검색을 활성화하려면 먼저 다음 권한을 가진 역할을 생성해야 합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "TransactionSearchXRayPermissions",
      "Effect": "Allow",
      "Action": [
        "xray:GetTraceSegmentDestination",
        "xray:UpdateTraceSegmentDestination",
        "xray:GetIndexingRules",
        "xray:UpdateIndexingRule"
      ],
      "Resource": "*"
    },
    {
      "Sid": "TransactionSearchLogGroupPermissions",
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutRetentionPolicy"
      ],
      "Resource": [
        "arn:aws:logs:*:*:log-group:/aws/application-signals/data:*",
        "arn:aws:logs:*:*:log-group:aws/spans:*"
      ]
    },
    {
      "Sid": "TransactionSearchLogsPermissions",
      "Effect": "Allow",
      "Action": [
        "logs:PutResourcePolicy",
        "logs:DescribeResourcePolicies"
      ],
      "Resource": "*"
    },
    {
      "Sid": "TransactionSearchApplicationSignalsPermissions",
      "Effect": "Allow",
      "Action": [
        "application-signals:StartDiscovery"
      ],
      "Resource": "*"
    },
    {
      "Sid": "CloudWatchApplicationSignalsCreateServiceLinkedRolePermissions",
      "Effect": "Allow",
      "Action": "iam:CreateServiceLinkedRole",
      "Resource": "arn:aws:iam::*:role/aws-service-role/application-signals.cloudwatch.amazonaws.com/AWSServiceRoleForCloudWatchApplicationSignals",
      "Condition": {
        "StringLike": {
          "iam:AWSServiceName": "application-signals.cloudwatch.amazonaws.com"
        }
      }
    },
    {
      "Sid": "CloudWatchApplicationSignalsGetRolePermissions",
      "Effect": "Allow",
      "Action": "iam:GetRole",
      "Resource": "arn:aws:iam::*:role/aws-service-role/application-signals.cloudwatch.amazonaws.com/AWSServiceRoleForCloudWatchApplicationSignals"
    },
    {
      "Sid": "CloudWatchApplicationSignalsCloudTrailPermissions",
      "Effect": "Allow",
      "Action": [
        "cloudtrail:CreateServiceLinkedChannel"
      ],
      "Resource": "arn:aws:cloudtrail:*:*:channel/aws-service-channel/application-signals/*"
    }
  ]
}
```

------

**참고**  
 트랜잭션 검색 및 기타 CloudWatch 기능을 사용하려면 역할에 [CloudWatchReadOnlyAccess 정책](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudWatchReadOnlyAccess.html)을 추가합니다. 역할 생성에 대한 자세한 내용은 [IAM 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)을 참조하세요.

## 콘솔에서 트랜잭션 검색 활성화
<a name="CloudWatch-Transaction-Search-EnableConsole"></a>

 다음 절차에서는 콘솔에서 트랜잭션 검색을 활성화하는 방법을 설명합니다.

**CloudWatch 콘솔에서 트랜잭션 검색을 활성화하려면 다음을 수행합니다.**

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1.  탐색 창의 **Application Signals**에서 **트랜잭션 검색**을 선택하세요.

1.  **Enable Transaction Search**를 선택합니다.

1.  스팬을 구조화된 로그로서 수집하도록 확인란을 선택하고, 인덱싱할 스팬의 백분율을 입력합니다. 스팬을 1%로 무료로 인덱싱하고 나중에 요구 사항에 따라 비율을 변경할 수 있습니다.

## API를 사용하여 트랜잭션 검색 활성화
<a name="CloudWatch-Transaction-Search-EnableAPI"></a>

 다음 절차에서는 API를 사용하여 트랜잭션 검색을 활성화하는 방법을 설명합니다.

### 1단계. CloudWatch Logs의 수집 스팬에 대한 액세스 권한을 부여하는 정책 생성
<a name="w2aac28c21c15c11b5"></a>

 AWS CLI 또는 SDK를 사용하여 트랜잭션 검색을 활성화할 경우, [https://docs.aws.amazon.com/xray/latest/api/API_PutResourcePolicy.html](https://docs.aws.amazon.com/xray/latest/api/API_PutResourcePolicy.html)를 통해 리소스 기반 정책을 사용하여 권한을 구성해야 합니다.

**예제 정책**  
 다음 예제 정책을 사용하면 X-Ray가 CloudWatch Logs로 트레이스를 전송할 수 있습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "TransactionSearchXRayAccess",
            "Effect": "Allow",
            "Principal": {
                "Service": "xray.amazonaws.com"
            },
            "Action": "logs:PutLogEvents",
            "Resource": [
                "arn:aws:logs:{{us-east-1}}:{{123456789012}}:log-group:aws/spans:*",
                "arn:aws:logs:{{us-east-1}}:{{123456789012}}:log-group:/aws/application-signals/data:*"
            ],
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:xray:{{us-east-1}}:{{123456789012}}:*"
                },
                "StringEquals": {
                    "aws:SourceAccount": "{{123456789012}}"
                }
            }
        }
    ]
}
```

------

**명령 예제**  
 다음 예제에서는 `PutResourcePolicy`를 사용하여 AWS CLI 명령의 형식을 지정하는 방법을 보여줍니다.

```
aws logs put-resource-policy --policy-name MyResourcePolicy --policy-document '{ "Version": "2012-10-17",		 	 	  "Statement": [ { "Sid": "TransactionSearchXRayAccess", "Effect": "Allow", "Principal": { "Service": "xray.amazonaws.com" }, "Action": "logs:PutLogEvents", "Resource": [ "arn:partition:logs:region:account-id:log-group:aws/spans:*", "arn:partition:logs:region:account-id:log-group:/aws/application-signals/data:*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:partition:xray:region:account-id:*" }, "StringEquals": { "aws:SourceAccount": "account-id" } } } ]}'
```

### 2단계. 트레이스 세그먼트의 대상 구성
<a name="w2aac28c21c15c11b7"></a>

 [https://docs.aws.amazon.com/xray/latest/api/API_UpdateTraceSegmentDestination.html](https://docs.aws.amazon.com/xray/latest/api/API_UpdateTraceSegmentDestination.html)을 사용하여 스팬 수집을 구성합니다.

**명령 예제**  
 다음 예제에서는 `UpdateTraceSegmentDestination`을 사용하여 AWS CLI 명령의 형식을 지정하는 방법을 보여줍니다.

```
aws xray update-trace-segment-destination --destination CloudWatchLogs
```

### 3단계. 인덱싱할 스팬의 양 구성
<a name="w2aac28c21c15c11b9"></a>

 [https://docs.aws.amazon.com/xray/latest/api/API_UpdateIndexingRule.html](https://docs.aws.amazon.com/xray/latest/api/API_UpdateIndexingRule.html)을 사용하여 원하는 샘플링 백분율 구성 

**명령 예제**  
 다음 예제에서는 `UpdateIndexingRule`을 사용하여 AWS CLI 명령의 형식을 지정하는 방법을 보여줍니다.

```
aws xray update-indexing-rule --name "Default" --rule '{"Probabilistic": {"DesiredSamplingPercentage": number}}'
```

**참고**  
 트랜잭션 검색을 활성화한 후 검색 및 분석에 스팬을 사용할 수 있기까지 10분 정도 소요될 수 있습니다.

### 4단계. 검색 및 분석에 스팬을 사용할 수 있는지 확인
<a name="w2aac28c21c15c11c11"></a>

 검색 및 분석에 스팬을 사용할 수 있는지 확인하려면 [https://docs.aws.amazon.com/xray/latest/api/API_GetTraceSegmentDestination.html](https://docs.aws.amazon.com/xray/latest/api/API_GetTraceSegmentDestination.html)을 사용합니다.

**예시 명령**  
 다음 예제에서는 `GetTraceSegmentDestination`을 사용하여 AWS CLI 명령의 형식을 지정하는 방법을 보여줍니다.

```
aws xray get-trace-segment-destination
```

**응답의 예**  
 다음 예제는 트랜잭션 검색이 활성화되었을 때 예상 가능한 응답을 보여줍니다.

```
{
    "Destination": "CloudWatchLogs",
    "Status": "ACTIVE"
}
```