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. 左側の ナビゲーションペインで、[トピック] を選択してから、メッセージの配信ステータス情報を受信するトピックを選択します。

  3. [Actions (アクション)]、[配信ステータス] の順に選択します。

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

  5. [配信ステータス] ダイアログボックスで、[IAM ロールの作成] を選択します。

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

  6. [許可] を選択して、お客様に代わって CloudWatch Logs を使用する書き込みアクセス許可を Amazon SNS に付与します。

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

    注記

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

  8. 最後に、[設定の保存] を選択します。

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

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

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 が生成されます。

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

以下の例では、AWS SDK で提供されている Amazon SNS クライアントを使用してトピック属性を設定する方法について説明します。

AWS SDK for JavaAWS SDK for .NET
AWS SDK for Java

以下の Java の例で示しているのは、Amazon SNS エンドポイントをサブスクライブしたトピックに送信された通知メッセージの配信ステータスに対して、SetTopicAttributes API によりトピックの属性を設定する方法です。この例では、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 の使用開始」を参照してください。

AWS SDK for .NET

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

static String topicArn = "arn:aws:sns:us-east-2:123456789012:MyTopic"; static String attribName = "LambdaSuccessFeedbackRoleArn"; String attribValue = "arn:aws:iam::123456789012:role/SNSSuccessFeedback";
SetTopicAttributesRequest setTopicAttributesRequest = new SetTopicAttributesRequest { TopicArn = topicArn, AttributeName = attribName, AttributeValue = attribValue };

AWS SDK for .NET の詳細については、「AWS SDK for .NET の開始方法」を参照してください。