

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon SNS でのアクティブトレース
<a name="sns-active-tracing"></a>

を使用して AWS X-Ray 、Amazon SNS トピックを [Amazon Data Firehose](sns-firehose-as-subscriber.md)、、[AWS Lambda](https://docs.aws.amazon.com/xray/latest/devguide/xray-services-lambda.html)[Amazon SQS](https://docs.aws.amazon.com/xray/latest/devguide/xray-services-sqs.html)、および HTTP/S エンドポイントサブスクリプションに渡すユーザーリクエストを追跡および分析します。

X-Ray では、各リクエストのエンドツーエンドのビューを取得でき、次のことが可能になります。
+ Amazon SNS トピックを呼び出しているものは何か、およびサブスクリプションのダウンストリームとなるサービスを特定します。
+ 次のようなレイテンシーを分析します。
  + 処理前に Amazon SNS トピックで費やされた時間。
  + サブスクライブされた各エンドポイントの配信時間。

**重要**  
多数のサブスクリプションがある Amazon SNS トピックはサイズ制限に達し、完全にトレースされない場合があります。トレースドキュメントのサイズ制限の詳細については、 AWS 「 全般のリファレンス」の[「X 線サービスクォータ](https://docs.aws.amazon.com/general/latest/gr/xray.html#limits_xray)」を参照してください。

すでにトレースされているサービスから Amazon SNS API を呼び出すと、Amazon SNS は、API で X-Ray トレースが有効になっていなくてもトレースをパススルーします。

Amazon SNS は、標準トピックと FIFO トピックの両方で X-Ray トレースをサポートしています。Amazon SNS トピックの X-Ray を有効にするには、[Amazon SNS コンソール](https://console.aws.amazon.com/sns/v3/home)、[Amazon SNS `SetTopicAttributes` API](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html)、[Amazon Simple 通知サービス CLI リファレンス](https://docs.aws.amazon.com/cli/latest/reference/sns/)、または [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-topic.html) を使用します。

Amazon SNS で X-Ray を使用する方法の詳細については、「 AWS X-Ray デベロッパーガイド」の「[Amazon SNS と  AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-services-sns.html)」を参照してください。

## アクティブトレースのアクセス許可
<a name="sns-active-tracing-permissions"></a>

Amazon SNS コンソールを使用する場合、Amazon SNS は Amazon SNS トピックが X-Ray を呼び出すために必要なアクセス許可を作成しようとします。Amazon SNS コンソールを使用するための十分なアクセス許可がない場合、この試行は拒否される可能性があります。詳細については、「[Amazon SNS での Identity and Access Management](security-iam.md)」および「[Amazon SNS アクセスコントロールのケース例](sns-access-policy-use-cases.md)」を参照してください。

CLI を使用するときは、アクセス許可を手動で設定する必要があります。これらのアクセス許可は、リソースポリシーを使用して設定されます。X-Ray で必要なアクセス許可を使用する方法の詳細については、「[Amazon SNS と  AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-services-sns.html)」を参照してください。

## AWS コンソールを使用して Amazon SNS トピックでアクティブなトレースを有効にする
<a name="sns-active-tracing-enable"></a>

Amazon SNS トピックでアクティブトレースが有効になると、トレース ID を読み取り、トレース ID に基づいてデータをカスタマーに送信し、そのトレース ID をダウンストリームのサービスに伝播します。

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. トピックを選択するか、新しいトピックを作成できます。トピックの作成の詳細については、「[Amazon SNS のトピックの作成](sns-create-topic.md)」を参照してください。

1. **[トピックの作成]** ページの **[詳細]** セクションで、**[FIFO]** または **[標準]** を選択します。

   1. トピックの**名前**を入力します。

   1. (オプション) トピックの**表示名**を入力します。

1. **[Active tracing]** (アクティブトレース) を展開し、**[Use active tracing]** (アクティブトレースを使用する) を選択します。

Amazon SNS トピックで X-Ray を有効にすると、[X-Ray サービスマップ](https://docs.aws.amazon.com/xray/latest/devguide/xray-services-sns.html)を使用して、トピックのエンドツーエンドのトレースとサービス マップを表示できます。

## AWS SDK を使用して Amazon SNS トピックでアクティブトレースを有効にする
<a name="sns-enable-active-tracing-sdk"></a>

次のコード例は、 AWS SDK for Java を使用して Amazon SNS トピックでアクティブトレースを有効にする方法を示しています。

```
public static void enableActiveTracing(SnsClient snsClient, String topicArn) {

        try {

            SetTopicAttributesRequest request = SetTopicAttributesRequest.builder()
                .attributeName("TracingConfig")
                .attributeValue("Active")
                .topicArn(topicArn)
                .build();

            SetTopicAttributesResponse result = snsClient.setTopicAttributes(request);
            System.out.println("\n\nStatus was " + result.sdkHttpResponse().statusCode() + "\n\nTopic " + request.topicArn()
                + " updated " + request.attributeName() + " to " + request.attributeValue());

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
        }
    }
```

## AWS CLI を使用して Amazon SNS トピックでアクティブなトレースを有効にする
<a name="sns-enable-active-tracing-cli"></a>

次のコード例は、 AWS CLI を使用して Amazon SNS トピックでアクティブトレースを有効にする方法を示しています。

```
aws sns set-topic-attributes \
    --topic-arn arn:aws:sns:us-west-2:123456789012:MyTopic \
    --attribute-name TracingConfig \
    --attribute-value Active
```

## を使用して Amazon SNS トピックでアクティブトレースを有効にする CloudFormation
<a name="sns-enable-active-tracing-cf"></a>

次の CloudFormation スタックは、Amazon SNS トピックでアクティブトレースを有効にする方法を示しています。

```
AWSTemplateFormatVersion: 2010-09-09
Resources:
  MyTopicResource:
    Type: 'AWS::SNS::Topic'
    Properties:
      TopicName: 'MyTopic'
      TracingConfig: 'Active'
```

## トピックでアクティブトレースが有効になっていることを確認する
<a name="sns-active-tracing-verify"></a>

Amazon SNS コンソールを使用して、トピックでアクティブトレースが有効になっているかどうか、またはリソースポリシーの追加に失敗したかどうかを確認できます。

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. 左のナビゲーションペインで、[**トピック**] を選択します。

1. **[Topics]** (トピック) ページで、トピックを選択します。

1. **[Integrations]** (統合) タブを開きます。

   アクティブトレースが有効になっている場合、**[Active]** (有効化) アイコンが表示されます。

1. アクティブトレースを有効にしているのにリソースポリシーが追加されていない場合は、**[Create policy]** (ポリシーの作成) を選択して必要なアクセス許可を追加します。

![\[AWS マネジメントコンソールで「SampleTopic」という名前の Amazon SNS トピックの詳細が表示されているスクリーンショット。このトピックで AWS X-Ray アクティブなトレースが有効になっているが、Amazon SNS がトレースデータを送信できるようにするリソースポリシーがないことを示します。この問題を解決するために「ポリシーの作成」ボタンが提供されています。\]](http://docs.aws.amazon.com/ja_jp/sns/latest/dg/images/xray.png)


## アクティブトレースのテスト
<a name="sns-active-tracing-test"></a>

1. [Amazon SNS コンソール](https://console.aws.amazon.com/sns/home)にサインインします。

1. Amazon SNS トピックを作成します。この操作の詳細については、「[を使用してトピックを作成するには AWS マネジメントコンソール](sns-create-topic.md#create-topic-aws-console)」を参照してください。

1. **[Active tracing]** (アクティブトレース) を展開し、**[Use active tracing]** (アクティブトレースを使用する) を選択します。

1. Amazon SNS トピックにメッセージを発行します。この操作の詳細については、「[を使用して Amazon SNS トピックにメッセージを発行するには AWS マネジメントコンソール](sns-publishing.md#sns-publishing-messages)」を参照してください。

1. [X-Ray サービスマップ](https://docs.aws.amazon.com/xray/latest/devguide/xray-services-sns.html)を使用して、トピックのエンドツーエンドトレースとサービスマップを表示します。

![\[クライアントから「」という名前の Amazon SNS トピックに流れるリクエストのトレースを示す AWS X-Ray サービスマップを表示しますxray-topic。 そこから、Amazon SQS キュー、Lambda 関数、Kinesis Firehose、リモートサービスなど、さまざまなダウンストリームサービスにメッセージが配信されます。各接続には、レイテンシー (ミリ秒 (ms) 単位) および 1 分あたりのトランザクションレート (t/min) などのメトリクスが表示され、パフォーマンスを分析し、メッセージ配信プロセスにおけるレイテンシーの問題を特定するために役立ちます。\]](http://docs.aws.amazon.com/ja_jp/sns/latest/dg/images/xray-troubleshooting.png)
