État de livraison des SNS messages Amazon - Amazon Simple Notification Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

État de livraison des SNS messages Amazon

Amazon SNS fournit une assistance pour enregistrer l'état de livraison des messages de notification envoyés à des sujets comportant les SNS points de terminaison Amazon suivants :

  • HTTP

  • Amazon Data Firehose

  • AWS Lambda

  • Point de terminaison d’application de plateforme

  • Amazon Simple Queue Service

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

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

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

  • Déterminer le temps d'attente du message (le temps écoulé entre l'horodatage de publication et le moment où il est transféré à un point de terminaison AmazonSNS).

Pour configurer les attributs des rubriques en fonction de l'état de livraison des messages AWS Management Console, vous pouvez utiliser les kits de développement AWS logiciel (SDKs)API, query ou AWS CloudFormation.

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

  1. Connectez-vous à la SNSconsole Amazon.

  2. Dans le panneau de navigation, choisissez Rubriques.

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

  4. À propos de l'édition MyTopicpage, développez la section Enregistrement de l'état de livraison.

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

  6. Entrez le taux d'échantillonnage de réussite (le pourcentage de messages réussis pour lesquels vous souhaitez recevoir des CloudWatch journaux).

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

    • Pour choisir un rôle de service existant depuis votre compte, choisissez Utiliser un rôle de service existant, puis spécifiez IAM les rôles pour les livraisons réussies et échouées.

    • Pour créer un nouveau rôle de service dans votre compte, choisissez Créer un nouveau rôle de service, choisissez Créer de nouveaux rôles pour définir les IAM rôles pour les livraisons réussies et échouées dans la IAM console.

      Pour autoriser Amazon à utiliser CloudWatch Logs en SNS écriture en votre nom, sélectionnez Autoriser.

  8. Sélectionnez Enregistrer les modifications.

    Vous pouvez désormais consulter et analyser les CloudWatch journaux contenant l'état de livraison des messages. Pour plus d'informations sur l'utilisation CloudWatch, consultez la CloudWatchdocumentation.

Configuration de l'enregistrement de l'état de livraison à l'aide du AWS SDKs

Ils AWS SDKs fournissent APIs en plusieurs langues l'utilisation des attributs de statut de livraison des messages avec AmazonSNS.

Attributs de rubrique

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

HTTP

  • HTTPSuccessFeedbackRoleArn— Indique le statut de livraison du message réussi pour une SNS rubrique Amazon abonnée à un HTTP point de terminaison.

  • HTTPSuccessFeedbackSampleRate— Indique le pourcentage de messages réussis à échantillonner pour une SNS rubrique Amazon abonnée à un HTTP point de terminaison.

  • HTTPFailureFeedbackRoleArn— Indique l'état d'échec de la livraison du message pour une SNS rubrique Amazon abonnée à un HTTP point de terminaison.

Amazon Data Firehose

  • FirehoseSuccessFeedbackRoleArn— Indique le statut de livraison du message réussi pour une SNS rubrique Amazon abonnée à un point de terminaison Amazon Kinesis Data Firehose.

  • FirehoseSuccessFeedbackSampleRate— Indique le pourcentage de messages réussis à échantillonner pour une SNS rubrique Amazon abonnée à un point de terminaison Amazon Kinesis Data Firehose.

  • FirehoseFailureFeedbackRoleArn— Indique le statut d'échec de livraison du message pour une SNS rubrique Amazon abonnée à un point de terminaison Amazon Kinesis Data Firehose.

AWS Lambda

  • LambdaSuccessFeedbackRoleArn— Indique l'état de livraison du message réussi pour une SNS rubrique Amazon abonnée à un point de terminaison Lambda.

  • LambdaSuccessFeedbackSampleRate— Indique le pourcentage de messages réussis à échantillonner pour une SNS rubrique Amazon abonnée à un point de terminaison Lambda.

  • LambdaFailureFeedbackRoleArn— Indique le statut d'échec de livraison des messages pour une SNS rubrique Amazon abonnée à un point de terminaison Lambda.

Point de terminaison de l'application de plateforme

  • ApplicationSuccessFeedbackRoleArn— Indique l'état de livraison du message réussi pour une SNS rubrique Amazon abonnée à un point de terminaison d' AWS application.

  • ApplicationSuccessFeedbackSampleRate— Indique le pourcentage de messages réussis à échantillonner pour une SNS rubrique Amazon abonnée à un point de terminaison d' AWS application.

  • ApplicationFailureFeedbackRoleArn— Indique le statut d'échec de livraison des messages pour une SNS rubrique Amazon abonnée à un point de terminaison d' AWS application.

    Note

    Outre la possibilité de configurer les attributs de rubrique pour l'état de livraison des messages de notification envoyés aux points de terminaison des SNS applications Amazon, vous pouvez également configurer les attributs d'application pour l'état de livraison des messages de notification push envoyés aux services de notification push. Pour plus d'informations, consultez Utilisation des attributs d'SNSapplication Amazon pour le statut de livraison des messages.

Amazon SQS

  • SQSSuccessFeedbackRoleArn— Indique le statut de livraison du message réussi pour une SNS rubrique Amazon abonnée à un point de SQS terminaison Amazon.

  • SQSSuccessFeedbackSampleRate— Indique le pourcentage de messages réussis à échantillonner pour une SNS rubrique Amazon abonnée à un point de SQS terminaison Amazon.

  • SQSFailureFeedbackRoleArn— Indique le statut d'échec de livraison du message pour une SNS rubrique Amazon abonnée à un point de SQS terminaison Amazon.

Note

Les <ENDPOINT>FailureFeedbackRoleArn attributs <ENDPOINT>SuccessFeedbackRoleArn et sont utilisés pour donner à Amazon un accès en SNS écriture lui permettant d'utiliser 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'<ENDPOINT>FailureFeedbackRoleArnattribut, tous les messages ayant échoué génèrent des CloudWatch journaux.

AWS SDKexemples de configuration des attributs de rubrique

Les exemples de code suivants montrent comment utiliserSetTopicAttributes.

CLI
AWS CLI

Pour définir un attribut pour une rubrique

L'exemple set-topic-attributes suivant définit l'attribut DisplayName pour la rubrique spécifiée.

aws sns set-topic-attributes \ --topic-arn arn:aws:sns:us-west-2:123456789012:MyTopic \ --attribute-name DisplayName \ --attribute-value MyTopicDisplayName

Cette commande ne produit aucun résultat.

  • Pour API plus de détails, voir SetTopicAttributesla section Référence des AWS CLI commandes.

Java
SDKpour Java 2.x
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS.

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.SetTopicAttributesRequest; import software.amazon.awssdk.services.sns.model.SetTopicAttributesResponse; import software.amazon.awssdk.services.sns.model.SnsException; /** * Before running this Java V2 code example, set up your development * environment, including your credentials. * * For more information, see the following documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html */ public class SetTopicAttributes { public static void main(String[] args) { final String usage = """ Usage: <attribute> <topicArn> <value> Where: attribute - The attribute action to use. Valid parameters are: Policy | DisplayName | DeliveryPolicy . topicArn - The ARN of the topic.\s value - The value for the attribute. """; if (args.length < 3) { System.out.println(usage); System.exit(1); } String attribute = args[0]; String topicArn = args[1]; String value = args[2]; SnsClient snsClient = SnsClient.builder() .region(Region.US_EAST_1) .build(); setTopAttr(snsClient, attribute, topicArn, value); snsClient.close(); } 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 API plus de détails, voir SetTopicAttributesla section AWS SDK for Java 2.x APIRéférence.

JavaScript
SDKpour JavaScript (v3)
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS.

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

import { SNSClient } from "@aws-sdk/client-sns"; // The AWS Region can be provided here using the `region` property. If you leave it blank // the SDK will default to the region set in your AWS config. export const snsClient = new SNSClient({});

Importez SDK les modules client et appelez leAPI.

import { SetTopicAttributesCommand } from "@aws-sdk/client-sns"; import { snsClient } from "../libs/snsClient.js"; export const setTopicAttributes = async ( topicArn = "TOPIC_ARN", attributeName = "DisplayName", attributeValue = "Test Topic", ) => { const response = await snsClient.send( new SetTopicAttributesCommand({ AttributeName: attributeName, AttributeValue: attributeValue, TopicArn: topicArn, }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: 'd1b08d0e-e9a4-54c3-b8b1-d03238d2b935', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // } // } return response; };
Kotlin
SDKpour Kotlin
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS.

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.") } }
PHP
SDK pour PHP
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS.

require 'vendor/autoload.php'; use Aws\Exception\AwsException; use Aws\Sns\SnsClient; /** * 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 API plus de détails, voir SetTopicAttributesla section AWS SDK for PHP APIRéférence.

Ruby
SDKpour Ruby
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS.

# Service class to enable an SNS resource with a specified policy class SnsResourceEnabler # Initializes the SnsResourceEnabler with an SNS resource client # # @param sns_resource [Aws::SNS::Resource] The SNS resource client def initialize(sns_resource) @sns_resource = sns_resource @logger = Logger.new($stdout) end # Sets a policy on a specified SNS topic # # @param topic_arn [String] The ARN of the SNS topic # @param resource_arn [String] The ARN of the resource to include in the policy # @param policy_name [String] The name of the policy attribute to set def enable_resource(topic_arn, resource_arn, policy_name) policy = generate_policy(topic_arn, resource_arn) topic = @sns_resource.topic(topic_arn) topic.set_attributes({ attribute_name: policy_name, attribute_value: policy }) @logger.info("Policy #{policy_name} set successfully for topic #{topic_arn}.") rescue Aws::SNS::Errors::ServiceError => e @logger.error("Failed to set policy: #{e.message}") end private # Generates a policy string with dynamic resource ARNs # # @param topic_arn [String] The ARN of the SNS topic # @param resource_arn [String] The ARN of the resource # @return [String] The policy as a JSON string def generate_policy(topic_arn, resource_arn) { Version: '2008-10-17', Id: '__default_policy_ID', Statement: [{ Sid: '__default_statement_ID', Effect: 'Allow', Principal: { "AWS": '*' }, Action: ['SNS:Publish'], Resource: topic_arn, Condition: { ArnEquals: { "AWS:SourceArn": resource_arn } } }] }.to_json end end # Example usage: if $PROGRAM_NAME == __FILE__ topic_arn = 'MY_TOPIC_ARN' # Should be replaced with a real topic ARN resource_arn = 'MY_RESOURCE_ARN' # Should be replaced with a real resource ARN policy_name = 'POLICY_NAME' # Typically, this is "Policy" sns_resource = Aws::SNS::Resource.new enabler = SnsResourceEnabler.new(sns_resource) enabler.enable_resource(topic_arn, resource_arn, policy_name) end
SAP ABAP
SDKpour SAP ABAP
Note

Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS.

TRY. lo_sns->settopicattributes( iv_topicarn = iv_topic_arn iv_attributename = iv_attribute_name iv_attributevalue = iv_attribute_value ). MESSAGE 'Set/updated SNS topic attributes.' TYPE 'I'. CATCH /aws1/cx_snsnotfoundexception. MESSAGE 'Topic does not exist.' TYPE 'E'. ENDTRY.

Configuration de la journalisation du statut de distribution à l'aide d' AWS CloudFormation

Pour configurer DeliveryStatusLogging l'utilisation AWS CloudFormation, utilisez un YAML modèle JSON ou pour créer une AWS CloudFormation pile. Pour plus d'informations, consultez la DeliveryStatusLogging propriété de la AWS::SNS::Topic ressource dans le guide de AWS CloudFormation l'utilisateur. Vous trouverez ci-dessous des exemples de AWS CloudFormation modèles dans JSON et YAML pour créer un nouveau sujet ou mettre à jour un sujet existant avec tous les DeliveryStatusLogging attributs du SQS protocole Amazon.

JSON
"Resources": { "MySNSTopic" : { "Type" : "AWS::SNS::Topic", "Properties" : { "TopicName" : "TestTopic", "DisplayName" : "TEST", "SignatureVersion" : "2", "DeliveryStatusLogging" : [{ "Protocol": "sqs", "SuccessFeedbackSampleRate": "45", "SuccessFeedbackRoleArn": "arn:aws:iam::123456789012:role/SNSSuccessFeedback_test1", "FailureFeedbackRoleArn": "arn:aws:iam::123456789012:role/SNSFailureFeedback_test2" }] } } }
YAML
Resources: MySNSTopic: Type: AWS::SNS::Topic Properties: TopicName:TestTopic DisplayName:TEST SignatureVersion:2 DeliveryStatusLogging: - Protocol: sqs SuccessFeedbackSampleRate: 45 SuccessFeedbackRoleArn: arn:aws:iam::123456789012:role/SNSSuccessFeedback_test1 FailureFeedbackRoleArn: arn:aws:iam::123456789012:role/SNSFailureFeedback_test2