

# 启用事务搜索
<a name="Enable-TransactionSearch"></a>

您可以通过控制台或使用 API 启用 [Transaction Search](CloudWatch-Transaction-Search.md)。针对整个账户进行了事务搜索配置，并通过 X-Ray 将所有跨度摄取切换为使用 [Amazon CloudWatch 定价](https://www.amazonaws.cn/cloudwatch/pricing/)的经济高效的收集模式。默认情况下，您还将免费为 1% 的已摄取跨度建立索引，作为分析用的跟踪摘要，鉴于您已经可以通过事务搜索全面查看所有已摄取跨度的端到端跟踪，这通常已经足够。

## 先决条件
<a name="Enable-TransactionSearch-prerequisites"></a>

 您必须先使用以下权限创建，然后才能启用 Transaction Search。

------
#### [ 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/*"
    }
  ]
}
```

------

**注意**  
 要使用 Transaction Search 和其他 CloudWatch 功能，请向角色中添加 [CloudWatchReadOnlyAccess 策略](https://docs.amazonaws.cn/aws-managed-policy/latest/reference/CloudWatchReadOnlyAccess.html)。有关创建角色的更多信息，请参阅 [IAM 角色创建](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_create.html)。

## 在控制台中启用 Transaction Search
<a name="CloudWatch-Transaction-Search-EnableConsole"></a>

 以下过程介绍如何在控制台中启用 Transaction Search。

**在 CloudWatch 控制台中启用 Transaction Search**

1. 通过 [https://console.aws.amazon.com/cloudwatch/](https://console.amazonaws.cn/cloudwatch/) 打开 CloudWatch 控制台。

1.  在导航窗格的 **Application Signals** 下，选择**交易搜索**。

1.  选择**启用 Transaction Search**。

1.  选中将跨度作为结构化日志摄取的框，然后输入要编制索引的跨度百分比。您可以免费将跨度编制 1% 的索引，稍后再根据要求更改百分比。

## 使用 API 启用 Transaction Search
<a name="CloudWatch-Transaction-Search-EnableAPI"></a>

 以下过程介绍如何使用 API 启用 Transaction Search。

### 步骤 1：创建授予访问在 CloudWatch Logs 中摄取跨度的策略
<a name="w2aac28c21c15c11b5"></a>

 使用 Amazon CLI 或 SDK 启用 Transaction Search 时，必须使用基于资源的策略（具有 [https://docs.amazonaws.cn/xray/latest/api/API_PutResourcePolicy.html](https://docs.amazonaws.cn/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` 格式化处理 Amazon 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.amazonaws.cn/xray/latest/api/API_UpdateTraceSegmentDestination.html](https://docs.amazonaws.cn/xray/latest/api/API_UpdateTraceSegmentDestination.html) 的跨度的摄取。

**命令示例**  
 以下示例说明如何使用 `UpdateTraceSegmentDestination` 格式化处理 Amazon CLI 命令。

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

### 步骤 3：配置要索引的跨度数量
<a name="w2aac28c21c15c11b9"></a>

 使用 [https://docs.amazonaws.cn/xray/latest/api/API_UpdateIndexingRule.html](https://docs.amazonaws.cn/xray/latest/api/API_UpdateIndexingRule.html) 配置所需的采样百分比 

**命令示例**  
 以下示例说明如何使用 `UpdateIndexingRule` 格式化处理 Amazon CLI 命令。

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

**注意**  
 启用 Transaction Search 后，可能需要十分钟才能使用跨度进行搜索和分析。

### 步骤 4：验证跨度是否可供搜索和分析
<a name="w2aac28c21c15c11c11"></a>

 要验证跨度是否可供搜索和分析，请使用 [https://docs.amazonaws.cn/xray/latest/api/API_GetTraceSegmentDestination.html](https://docs.amazonaws.cn/xray/latest/api/API_GetTraceSegmentDestination.html)。

**示例命令**  
 以下示例说明如何使用 `GetTraceSegmentDestination` 格式化处理 Amazon CLI 命令。

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

**响应示例**  
 以下示例显示了当 Transaction Search 处于活动状态时的预期响应。

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