Amazon SNS と AWS X-Ray - AWS X-Ray

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

Amazon SNS と AWS X-Ray

Amazon Simple Notification Service (Amazon SNS ) AWS X-Ray で を使用すると、SNS トピックから SNS がサポートするサブスクリプションサービスに移動するリクエストを追跡および分析できます。 Amazon SNS 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 トピックのアクティブトレースを有効にします。SNS クライアントの計測の詳細については、「アプリケーションの計測」を参照してください。

Amazon SNS アクティブトレースの設定

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」および「Amazon SNS アクセスコントロールのケース例」を参照してください。Amazon SNS コンソールを使用してアクティブトレースを有効にする方法の詳細については、「Amazon Simple Notification Service デベロッパーガイド」の「Amazon SNS トピックでアクティブトレースを有効にする」を参照してください。

AWS CLI または SDK を使用してアクティブトレースを有効にする場合は、リソースベースのポリシーを使用してアクセス許可を手動で設定する必要があります。PutResourcePolicy を使用して、Amazon SNS が X-Ray にトレースを送信できるようにするために必要なリソースベースのポリシーを使用して X-Ray を設定します。

例 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" } } } ] }'

これらの例を使用するには、partitionregionaccount-idtopic-nameを特定の AWS パーティション、リージョン、アカウント ID、および Amazon SNS トピック名に置き換えます。すべての Amazon SNS トピックに、トレースデータを X-Ray に送信するアクセス許可を付与するには、トピック名を * に置き換えます。

X-Ray コンソールで Amazon SNS パブリッシャートレースとサブスクライバーのトレースを表示する

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


                Amazon SNS パブリッシャーとサブスクライバーとのトレースマップ

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

例 Amazon SNS パブリッシャーとサブスクライバーのタイムラインの例

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


                    Amazon SNS パブリッシャーとサブスクライバーのセグメントタイムライン

上記のタイムラインの例は、Amazon SNS メッセージフローの詳細を示しています。

  • SNS セグメントは、クライアントからの Publish API 呼び出しの往復所要時間を表します。

  • myTopic セグメントは、発行リクエストに対する Amazon SNS レスポンスのレイテンシーを表します。

  • SQS サブセグメントは、Amazon SNS が Amazon SQS キューにメッセージを発行するのにかかる往復時間を表します。

  • myTopic セグメントと SQS サブセグメントの間隔は、メッセージが Amazon SNS システムで費やす時間を表します。

例 Amazon SNS メッセージのバッチ処理を含むタイムラインの例

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


                    Amazon SNS バッチメッセージのセグメントタイムライン