

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

# Amazon SNS および APIAWS X-Ray
<a name="xray-services-sns"></a>

Amazon Simple Notiﬁcation Service (Amazon SNS) と AWS X-Ray を併用すると、SNS トピックを経由して [SNS がサポートするサブスクリプションサービス](https://docs.aws.amazon.com/sns/latest/dg/sns-active-tracing.html)に送信されるリクエストをトレースおよび分析できます。´ Amazon SNS と X-Ray トレースを併用して、リクエストがトピックに費やされる時間や、トピックの各サブスクリプションにメッセージを配信するのにかかった時間など、メッセージとそのバックエンドサービスのレイテンシーを分析できます。Amazon SNS は、標準トピックと FIFO トピックの両方で X-Ray トレースをサポートしています。

X-Ray で既に計測されているサービスから Amazon SNS トピックに発行すると、Amazon SNS はトレースコンテキストをパブリッシャーからサブスクライバーに渡します。さらに、アクティブトレースを有効にして、計測された SNS クライアントから発行されたメッセージの Amazon SNS サブスクリプションに関するセグメントデータを X-Ray に送信できます。Amazon SNS コンソール、または Amazon SNS API か CLI を使用して、Amazon SNS トピックの[アクティブトレースを有効にします](https://docs.aws.amazon.com/sns/latest/dg/sns-active-tracing.html)。SNS クライアントの計測の詳細については、「[アプリケーションの計測](xray-instrumenting-your-app.md)」を参照してください。

## Amazon SNS アクティブトレースの設定
<a name="xray-services-sns-configuration"></a>

Amazon SNS コンソールまたは AWS CLI または SDK を使用して、Amazon SNS アクティブトレースを設定できます。

Amazon SNS コンソールを使用する場合、Amazon SNS は SNS が X-Ray を呼び出すために必要なアクセス許可の作成を試みます。X-Ray リソースポリシーを変更するための十分なアクセス許可がない場合、この試行は拒否されることがあります。これらのアクセス許可の詳細については、「Amazon Simple Notification Service デベロッパーガイド」の「[Amazon SNS での Identity and Access Management](https://docs.aws.amazon.com/sns/latest/dg/sns-authentication-and-access-control.html)」および「[Amazon SNS アクセスコントロールのケース例](https://docs.aws.amazon.com/sns/latest/dg/sns-access-policy-use-cases.html)」を参照してください。Amazon SNS コンソールを使用してアクティブトレースを有効にする方法の詳細については、「Amazon Simple Notification Service デベロッパーガイド」の「[Amazon SNS トピックでアクティブトレースを有効にする](https://docs.aws.amazon.com/sns/latest/dg/sns-active-tracing.html)」を参照してください。

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) を使用して、Amazon SNS が X-Ray にトレースを送信できるようにするために必要なリソースベースのポリシーを使用して X-Ray を設定します。

**Example Amazon SNS アクティブトレース用の X-Ray リソースベースのポリシーの例**  
このポリシードキュメントの例では、Amazon SNS がトレースデータを X-Ray に送信するために必要なアクセス許可を指定します。  

```
{
    Version: "2012-10-17",		 	 	 
    Statement: [
      {
        Sid: "SNSAccess",
        Effect: Allow,
        Principal: {
          Service: "sns.amazonaws.com",
        },
        Action: [
          "xray:PutTraceSegments",
          "xray:GetSamplingRules",
          "xray:GetSamplingTargets"
        ],
        Resource: "*",
        Condition: {
          StringEquals: {
            "aws:SourceAccount": "{{account-id}}"
          },
          StringLike: {
            "aws:SourceArn": "arn:{{partition}}:sns:{{region}}:{{account-id}}:{{topic-name}}"
          }
        }
      }
    ]
  }
```
CLI を使用して、Amazon SNS アクセス許可を付与するリソースベースのポリシーを作成して、トレースデータを X-Ray に送信します。  

```
aws xray put-resource-policy --policy-name MyResourcePolicy --policy-document '{ "Version": "2012-10-17",		 	 	  "Statement": [ { "Sid": "SNSAccess", "Effect": "Allow", "Principal": { "Service": "sns.amazonaws.com" }, "Action": [ "xray:PutTraceSegments", "xray:GetSamplingRules", "xray:GetSamplingTargets" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "{{account-id}}" }, "StringLike": { "aws:SourceArn": "arn:{{partition}}:sns:{{region}}:{{account-id}}:{{topic-name}}" } } } ] }'
```
これらの例を使用するには、{{`partition`}}、{{`region`}}、{{`account-id`}}、{{`topic-name`}} を特定の AWS パーティション、リージョン、アカウント ID、Amazon SNS トピック名に置き換えます。すべての Amazon SNS トピックに、トレースデータを X-Ray に送信するアクセス許可を付与するには、トピック名を `*` に置き換えます。

## X-Ray コンソールで Amazon SNS パブリッシャートレースとサブスクライバーのトレースを表示する
<a name="xray-services-sns-view-traces"></a>

X-Ray コンソールを使用して、Amazon SNS のパブリッシャーとサブスクライバーの接続ビューを表示するトレースマップおよびトレースの詳細を表示します。トピックの Amazon SNS アクティブトレースを有効にすると、X-Ray トレースマップとトレース詳細マップに Amazon SNS パブリッシャー、Amazon SNS トピック、およびダウンストリームサブスクライバーの接続ノードが表示されます。

![Amazon SNS パブリッシャーとサブスクライバーを含むトレースマップ](http://docs.aws.amazon.com/ja_jp/xray/latest/devguide/images/services-sns-activetracing-map.png)


Amazon SNS パブリッシャーとサブスクライバーにまたがるトレースを選択すると、X-Ray のトレースの詳細ページにトレース詳細マップとセグメントタイムラインが表示されます。

**Example Amazon SNS パブリッシャーとサブスクライバーのタイムラインの例**  
この例は、Amazon SNS トピックにメッセージを送信する Amazon SNS パブリッシャーを含むタイムラインを示しています。このメッセージは Amazon SQS サブスクライバーによって処理されます。  

![Amazon SNS パブリッシャーとサブスクライバーのセグメントタイムライン](http://docs.aws.amazon.com/ja_jp/xray/latest/devguide/images/services-sns-activetracing-timeline.png)


上記のタイムラインの例は、Amazon SNS メッセージフローの詳細を示しています。
+ **SNS** セグメントは、クライアントからの `Publish` API 呼び出しの往復所要時間を表します。
+ **myTopic** セグメントは、発行リクエストに対する Amazon SNS レスポンスのレイテンシーを表します。
+ **SQS** サブセグメントは、Amazon SNS が Amazon SQS キューにメッセージを発行するのにかかる往復時間を表します。
+ **myTopic** セグメントと **SQS** サブセグメントの間隔は、メッセージが Amazon SNS システムで費やす時間を表します。

**Example Amazon SNS メッセージのバッチ処理を含むタイムラインの例**  
複数の Amazon SNS メッセージが 1 つのトレース内でバッチ処理される場合、セグメントタイムラインには、処理された各メッセージを表すセグメントが表示されます。  

![Amazon SNS バッチメッセージのセグメントタイムライン](http://docs.aws.amazon.com/ja_jp/xray/latest/devguide/images/services-sns-activetracing-batch-timeline.png)
