Statut de distribution de message Amazon SNS - Amazon Simple Notification Service

Statut de distribution de message Amazon SNS

Amazon SNS prend en charge la journalisation de le statut de distribution des messages de notification envoyés aux rubriques avec les points de terminaison Amazon SNS suivants :

  • HTTP

  • Amazon Kinesis Data Firehose

  • AWS Lambda

  • Point de terminaison d’application de plateforme

  • Amazon Simple Queue Service

Une fois que vous avez configuré les attributs du statut de distribution du message, les entrées du journal sont envoyées à CloudWatch Logs pour les messages envoyés aux abonnés à la rubrique. La consignation de le statut de distribution du message permet de fournir des informations opérationnelles plus précises, par exemple :

  • Savoir si un message a été distribué au point de terminaison Amazon SNS.

  • Identifiez la réponse envoyée à Amazon SNS par le point de terminaison Amazon SNS.

  • Déterminez la durée de conservation du message (la durée entre l'horodatage de publication et le moment juste avant sa distribution à un point de terminaison Amazon SNS).

Pour configurer les attributs de rubrique pour le statut de distribution du message, vous pouvez utiliser la AWS Management Console, les kits SDK AWS ou l'API de requête.

Configuration de le statut de distribution à l'aide de AWS Management Console

  1. Connectez-vous à la console Amazon SNS.

  2. Dans le panneau de navigation, choisissez Rubriques.

  3. Sur la page Rubriques, sélectionnez une rubrique, puis choisissez Modifier.

  4. Sur la page Edit MaRubrique (Modifier MaRubrique, développez la sectionDelivery status logging (Journalisation de l’état de distribution).

  5. Choisissez le protocole pour lequel vous souhaitez enregistrer le statut de distribution, par exemple AWS Lambda.

  6. Renseignez le champ Taux d'échantillonnage de réussite (le pourcentage de messages pour lesquels vous souhaitez recevoir des CloudWatch Logs).

  7. Dans la section rôles IAM, effectuez l'une des opérations suivantes :

    • Pour choisir un rôle de service existant à partir de votre compte, choisissez Use existing service role (Utiliser un rôle de service existant), puis spécifiez les rôles IAM pour les distributions réussies et celles ayant échoué.

    • Pour créer un nouveau rôle de service dans votre compte, choisissez Create new service role (Créer un nouveau rôle de service), choisissez Create new roles (Créer de nouveaux rôles) pour définir les rôles IAM pour les distributions réussies et celles ayant échoué dans la console IAM.

      Choisissez Autoriser pour permettre à Amazon SNS d'accéder en écriture aux CloudWatch Logs en votre nom.

  8. Choisissez Enregistrer les modifications.

    Vous pouvez maintenant accéder aux CloudWatch Logs contenant le statut de distribution du message et les analyser. Pour plus d'informations sur l'utilisation de CloudWatch, consultez la documentation CloudWatch.

Configuration des attributs de le statut de distribution des messages pour les rubriques abonnées à des points de terminaison Amazon SNS à l'aide des kits SDK AWS

Les kits SDK AWS fournissent des API dans plusieurs langages pour utiliser les attributs de le statut de distribution du message avec Amazon SNS.

Attributs de rubrique

Vous pouvez utiliser les valeurs de nom d'attribut de rubrique suivantes pour le statut de livraison du message :

HTTP

  • HTTPSuccessFeedbackRoleArn

  • HTTPSuccessFeedbackSampleRate

  • HTTPFailureFeedbackRoleArn

Amazon Kinesis Data Firehose

  • FirehoseSuccessFeedbackRoleArn

  • FirehoseSuccessFeedbackSampleRate

  • FirehoseFailureFeedbackRoleArn

AWS Lambda

  • LambdaSuccessFeedbackRoleArn

  • LambdaSuccessFeedbackSampleRate

  • LambdaFailureFeedbackRoleArn

Point de terminaison de l'application de plateforme

  • ApplicationSuccessFeedbackRoleArn

  • ApplicationSuccessFeedbackSampleRate

  • ApplicationFailureFeedbackRoleArn

    Note

    Outre la possibilité de configurer des attributs de rubrique pour le statut de distribution des messages de notification envoyés à des points de terminaison d'application Amazon SNS, vous pouvez également configurer des attributs d'application pour le statut de distribution des messages de notification push envoyés aux services de notification push. Pour plus d'informations, consultez la page Utilisation des attributs d'application Amazon SNS pour le statut de distribution du message.

Amazon SQS

  • SQSSuccessFeedbackRoleArn

  • SQSSuccessFeedbackSampleRate

  • SQSFailureFeedbackRoleArn

Les attributs <ENDPOINT>SuccessFeedbackRoleArn et <ENDPOINT>FailureFeedbackRoleArn sont utilisés pour permettre à Amazon SNS d'accéder en écriture aux CloudWatch Logs en votre nom. L'attribut <ENDPOINT>SuccessFeedbackSampleRate permet de spécifier le pourcentage de la fréquence d’échantillonnage (0-100) des messages diffusés avec succès. Une fois que vous avez configuré l'attribut <ENDPOINT>FailureFeedbackRoleArn, toutes les distributions de message qui ont échouées génèrent des CloudWatch Logs.

Exemples de kit SDK AWS pour la configuration d’attributs de rubrique

Les exemples de code suivants expliquent comment définir des attributs de rubrique Amazon SNS.

Java
Kit SDK pour Java 2.x
Astuce

Pour découvrir comment configurer et exécuter cet exemple, consultez GitHub.

public static void setTopAttr(SnsClient snsClient, String attribute, String topicArn, String value) { try { SetTopicAttributesRequest request = SetTopicAttributesRequest.builder() .attributeName(attribute) .attributeValue(value) .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()); System.exit(1); } }
  • Pour de plus amples informations sur l’API, consultez SetTopicAttributes dans AWS SDK for Java 2.x Référence de l’API.

JavaScript
Kit SDK pour JavaScript V3
Astuce

Pour découvrir comment configurer et exécuter cet exemple, consultez GitHub.

Créez le client dans un module séparé et exportez-le.

import { SNSClient } from "@aws-sdk/client-sns"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create SNS service object. const snsClient = new SNSClient({ region: REGION }); export { snsClient };

Importez le kit SDK et les modules client et appelez l’API.

// Import required AWS SDK clients and commands for Node.js import {SetTopicAttributesCommand } from "@aws-sdk/client-sns"; import {snsClient } from "./libs/snsClient.js"; // Set the parameters const params = { AttributeName: "ATTRIBUTE_NAME", // ATTRIBUTE_NAME TopicArn: "TOPIC_ARN", // TOPIC_ARN AttributeValue: "NEW_ATTRIBUTE_VALUE", //NEW_ATTRIBUTE_VALUE }; const run = async () => { try { const data = await snsClient.send(new SetTopicAttributesCommand(params)); console.log("Success.", data); return data; // For unit tests. } catch (err) { console.log("Error", err.stack); } }; run();
Kotlin
Kit SDK pour Kotlin
Note

Ceci est une documentation préliminaire pour une fonctionnalité en version de prévisualisation. Elle est susceptible d’être modifiée.

Astuce

Pour découvrir comment configurer et exécuter cet exemple, consultez GitHub.

suspend fun setTopAttr(attribute: String?, topicArnVal: String?, value: String?) { val request = SetTopicAttributesRequest { attributeName = attribute attributeValue = value topicArn = topicArnVal } SnsClient { region = "us-east-1" }.use { snsClient -> snsClient.setTopicAttributes(request) println("Topic ${request.topicArn} was updated.") } }
  • Pour plus d’informations sur l’API, consultez la section SetTopicAttributes de la référence du kit SDK AWS pour l’API Kotlin.

PHP
Kit SDK pour PHP
Astuce

Pour découvrir comment configurer et exécuter cet exemple, consultez GitHub.

require 'vendor/autoload.php'; use Aws\Sns\SnsClient; use Aws\Exception\AwsException; /** * Configure the message delivery status attributes for an Amazon SNS Topic. * * This code expects that you have AWS credentials set up per: * https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html */ $SnSclient = new SnsClient([ 'profile' => 'default', 'region' => 'us-east-1', 'version' => '2010-03-31' ]); $attribute = 'Policy | DisplayName | DeliveryPolicy'; $value = 'First Topic'; $topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic'; try { $result = $SnSclient->setTopicAttributes([ 'AttributeName' => $attribute, 'AttributeValue' => $value, 'TopicArn' => $topic, ]); var_dump($result); } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }
  • Pour de plus amples informations sur l’API, consultez SetTopicAttributes dans AWS SDK for PHP Référence de l’API.

Ruby
Kit SDK pour Ruby
Astuce

Pour découvrir comment configurer et exécuter cet exemple, consultez GitHub.

require 'aws-sdk-sns' # v2: require 'aws-sdk' policy = '{ "Version":"2008-10-17", "Id":"__default_policy_ID", "Statement":[{ "Sid":"__default_statement_ID", "Effect":"Allow", "Principal":{ "AWS":"*" }, "Action":["SNS:Publish"], "Resource":"' + MY_TOPIC_ARN + '", "Condition":{ "ArnEquals":{ "AWS:SourceArn":"' + MY_RESOURCE_ARN + '"} } }] }' # Replace us-west-2 with the AWS Region you're using for Amazon SNS. sns = Aws::SNS::Resource.new(region: 'REGION') # Get topic by ARN topic = sns.topic() # Add policy to topic topic.set_attributes({ attribute_name: "POLICY_NAME", attribute_value: policy })