

# トランザクション検索の有効化
<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. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1.  ナビゲーションペインの **[Application Signals]** で、**[トランザクション検索]** を選択します。

1.  **[トランザクション検索の有効化]** を選択します。

1.  構造化ログとしてスパンを取り込むボックスを選択し、インデックスを作成するスパンの割合を入力します。無料で span の 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"
}
```