メニュー
Amazon Simple Notification Service
開発者ガイド (API バージョン 2010-03-31)

メッセージの配信ステータスの Amazon SNS トピック属性を使用する

Amazon SNS は、次の Amazon SNS エンドポイントでトピックに送信された通知メッセージの配信ステータスを記録するためのサポートを提供します。

  • アプリケーション

  • HTTP

  • Lambda

  • SQS

メッセージの配信ステータスの属性を設定すると、Amazon SNS エンドポイントにサブスクライブしているトピックに送信されたメッセージについて、ログエントリが CloudWatch Logs に送信されます。メッセージの配信ステータスを記録することは、以下のように運用をよりよく把握するために役立ちます。

  • メッセージが Amazon SNS エンドポイントに配信されたかどうかを知ることができます。

  • Amazon SNS エンドポイントから Amazon SNS に送信された応答を識別します。

  • メッセージのドウェル時間 (発行のタイムスタンプから Amazon SNS エンドポイントへの配信直前までの時間) を決定します。

メッセージの配信ステータスのトピック属性を設定するには、AWS マネジメントコンソール、AWS Software Development Kit (SDK)、またはクエリ API を使用できます。

AWS マネジメントコンソール でメッセージの配信ステータスの属性を設定する

次の手順は、コンソールを使用して、Amazon SNS から AWS Lambda エンドポイントへのメッセージ配信ステータス属性を設定する方法について説明しています。

Amazon SNS から Lambda エンドポイントへの通知のメッセージ配信ステータスを設定するには:

  1. AWS マネジメントコンソールにサインインした後、Amazon SNS コンソール (https://console.aws.amazon.com/sns/v2/home) を開きます。

  2. 左の [Navigation] ペインで、[Topics] をクリックし、メッセージの配信ステータス情報を受信するトピックをクリックします。

  3. [Actions] をクリックして、[Delivery status] をクリックします。

  4. [Lambda] チェックボックスをオンにします。

  5. [Delivery Status] ダイアログボックスで、[Create IAM Roles] をクリックします。

    IAM コンソールにリダイレクトされます。

  6. [Allow] をクリックして、お客様に代わって CloudWatch Logs を使用できるように Amazon SNS に書き込みのアクセスを付与します。

  7. [Delivery Status] ダイアログボックスに戻り、[Percentage of Success to Sample (0-100)] フィールドに、CloudWatch Logs を受信するために送信される成功したメッセージの割合を数字で入力します。

    注記

    メッセージの配信ステータスのアプリケーション属性を設定した後は、メッセージの配信に失敗すると、必ず CloudWatch Logs が生成されます。

  8. 最後に、[Save Configuration] をクリックします。

    これで、メッセージの配信ステータスを含む CloudWatch Logs を参照して解析できます。CloudWatch の使用方法の詳細については、「CloudWatch のドキュメント」を参照してください。

AWS SDK を使用した、Amazon SNS エンドポイントにサブスクライブしたトピックのメッセージ配信ステータス属性の設定

AWS SDK には、Amazon SNS でメッセージの配信ステータスの属性を使用するための API がいくつかの言語で用意されています。

トピック属性

メッセージの配信ステータスには、次のトピック属性名の値を使用できます。

アプリケーション

  • ApplicationSuccessFeedbackRoleArn

  • ApplicationSuccessFeedbackSampleRate

  • ApplicationFailureFeedbackRoleArn

    注記

    Amazon SNS アプリケーションエンドポイントに送信される通知メッセージのメッセージ配信ステータスのトピックの属性を設定できることに加えて、プッシュ通知サービスに送信されるプッシュ通知メッセージの配信ステータスのアプリケーション属性を設定することもできます。詳細については、「メッセージの配信ステータスの Amazon SNS アプリケーション属性を使用する」を参照してください。

HTTP

  • HTTPSuccessFeedbackRoleArn

  • HTTPSuccessFeedbackSampleRate

  • HTTPFailureFeedbackRoleArn

Lambda

  • LambdaSuccessFeedbackRoleArn

  • LambdaSuccessFeedbackSampleRate

  • LambdaFailureFeedbackRoleArn

SQS

  • SQSSuccessFeedbackRoleArn

  • SQSSuccessFeedbackSampleRate

  • SQSFailureFeedbackRoleArn

<ENDPOINT>SuccessFeedbackRoleArn 属性と <ENDPOINT>FailureFeedbackRoleArn 属性は、お客様に代わって CloudWatch Logs を使用できるように Amazon SNS に書き込みのアクセスを付与するために使用します。<ENDPOINT>SuccessFeedbackSampleRate 属性は、成功した配信メッセージのサンプルレートの割合 (0-100) を指定するためのものです。<ENDPOINT>FailureFeedbackRoleArn 属性を設定した後は、メッセージの配信に失敗すると、必ず CloudWatch Logs が生成されます。

トピック属性を設定する Java の例

次の Java の例は、SetTopicAttributes API を使用して、Amazon SNS エンドポイントをサブスクライブしているトピックに送信された通知メッセージのメッセージ配信ステータスのトピックの属性を設定する方法を示します。この例では、topicArnattribName、および attribValue に文字列値が設定されたことを前提としています。

final static String topicArn = ("arn:aws:sns:us-east-2:123456789012:MyTopic"); final static String attribName = ("LambdaSuccessFeedbackRoleArn"); final static String attribValue = ("arn:aws:iam::123456789012:role/SNSSuccessFeedback");
SetTopicAttributesRequest setTopicAttributesRequest = new SetTopicAttributesRequest(); setTopicAttributesRequest.withTopicArn(topicArn); setTopicAttributesRequest.setAttributeName(attribName); setTopicAttributesRequest.setAttributeValue(attribValue);

SDK for Java の詳細については、「AWS SDK for Java の使用開始」を参照してください。