Zustellungsstatus von Amazon SNS Nachrichtenübermittmittungen - Amazon Simple Notification Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Zustellungsstatus von Amazon SNS Nachrichtenübermittmittungen

Amazon SNS unterstützt das Protokollieren des Zustellungsstatus von Benachrichtigungen, die an Themen gesendet wurden, mithilfe der folgenden Amazon SNS-Endpunkte:

  • HTTP

  • Amazon Data Firehose

  • AWS Lambda

  • Plattformanwendungsendpunkt

  • Amazon Simple Queue Service

Nachdem Sie die Attribute für den Nachrichtenzustellungsstatus konfiguriert haben, werden Protokolleinträge für Nachrichten, die an Themenabonnenten gesendet wurden, an CloudWatch Logs gesendet. Die Protokollierung des Zustellungsstatus von Nachrichten verhilft Ihnen zu besseren betrieblichen Einblicken, wie beispielsweise den Folgenden:

  • Kenntnis, ob eine Mitteilung an den Amazon SNS-Endpunkt gesendet wurde.

  • Ermittlung der Antwort, die vom Amazon SNS-Endpunkt an Amazon SNS gesendet wurde.

  • Ermittlung der Leerlaufzeit für die Nachricht (das Zeitfenster zwischen dem Zeitstempel der Veröffentlichung bis direkt vor der Übergabe an einen Amazon SNS-Endpunkt).

Um Themenattribute für den Nachrichtenzustellungsstatus zu konfigurieren, können Sie die AWS Management Console AWS Software Development Kits (SDKs), die Abfrage-API oder AWS CloudFormation verwenden.

Konfigurieren der Protokollierung des Zustellungsstatus mithilfe von AWS Management Console

  1. Melden Sie sich bei der Amazon SNS-Konsole an.

  2. Wählen Sie im Navigationsbereich Topics (Themen) aus.

  3. Wählen Sie auf der Seite Topics (Themen) ein Thema und anschließend Edit (Bearbeiten) aus.

  4. Erweitern Sie auf der MyTopicSeite Bearbeiten den Abschnitt Protokollierung des Zustellungsstatus.

  5. Wählen Sie die Protokolle aus, für die Sie den Zustellungsstatus protokollieren möchten, z. B. AWS Lambda.

  6. Geben Sie die Erfolgsrate ein (den Prozentsatz der erfolgreichen Nachrichten, für die Sie CloudWatch Protokolle erhalten möchten).

  7. Führen Sie im Unterabschnitt IAM roles (IAM-Rollen) einen der folgenden Schritte aus:

    • Um eine vorhandene Service-Rolle aus Ihrem Konto auszuwählen, wählen Sie Use existing service role (Vorhandene Service-Rolle verwenden aus und geben Sie dann IAM-Rollen für erfolgreiche und fehlgeschlagene Übermittlungen an.

    • Um eine neue Service-Rolle in Ihrem Konto zu erstellen, wählen Sie Create new service role (Neue Service-Rolle erstellen) und dann Create new roles (Neue Rollen erstellen) aus, um die IAM-Rollen für erfolgreiche und fehlgeschlagene Übermittlungen in der IAM-Konsole zu definieren.

      Um Amazon SNS Schreibzugriff auf die Nutzung von CloudWatch Logs in Ihrem Namen zu gewähren, wählen Sie Allow.

  8. Wählen Sie Änderungen speichern aus.

    Sie können jetzt die CloudWatch Protokolle mit dem Status der Nachrichtenzustellung anzeigen und analysieren. Weitere Informationen zur Verwendung CloudWatch finden Sie in der CloudWatchDokumentation.

Konfiguration der Protokollierung des Lieferstatus mithilfe der AWS SDKs

Die AWS SDKs bieten APIs in mehreren Sprachen für die Verwendung von Nachrichtenzustellungsstatusattributen mit Amazon SNS.

Themenattribute

Sie können für den Zustellungsstatus der Nachrichten die folgenden Werte für die Themenattributnamen verwenden:

HTTP

  • HTTPSuccessFeedbackRoleArn – zeigt den Status der erfolgreichen Nachrichtenzustellung für ein Amazon-SNS-Thema an, das einen HTTP-Endpunkt abonniert hat.

  • HTTPSuccessFeedbackSampleRate – zeigt den Prozentsatz der erfolgreichen Nachrichten an, die für ein Amazon-SNS-Thema abgefragt werden müssen, das einen HTTP-Endpunkt abonniert hat.

  • HTTPFailureFeedbackRoleArn – zeigt den Status der fehlerhaften Nachrichtenzustellung für ein Amazon-SNS-Thema an, das einen HTTP-Endpunkt abonniert hat.

Amazon Data Firehose

  • FirehoseSuccessFeedbackRoleArn – zeigt den Status der erfolgreichen Nachrichtenzustellung für ein Amazon-SNS-Thema an, das einen Amazon-Kinesis-Data-Firehose-Endpunkt abonniert hat.

  • FirehoseSuccessFeedbackSampleRate – zeigt den Prozentsatz der erfolgreichen Nachrichten an, die für ein Amazon-SNS-Thema abgefragt werden müssen, das einen Amazon-Kinesis-Data-Firehose-Endpunkt abonniert hat.

  • FirehoseFailureFeedbackRoleArn – zeigt den Status der fehlerhaften Nachrichtenzustellung für ein Amazon-SNS-Thema an, das einen Amazon-Kinesis-Data-Firehose-Endpunkt abonniert hat.

AWS Lambda

  • LambdaSuccessFeedbackRoleArn – zeigt den Status der erfolgreichen Nachrichtenzustellung für ein Amazon-SNS-Thema an, das einen Lambda-Endpunkt abonniert hat.

  • LambdaSuccessFeedbackSampleRate – zeigt den Prozentsatz der erfolgreichen Nachrichten an, die für ein Amazon-SNS-Thema abgefragt werden müssen, das einen Lambda-Endpunkt abonniert hat.

  • LambdaFailureFeedbackRoleArn – zeigt den Status der fehlerhaften Nachrichtenzustellung für ein Amazon-SNS-Thema an, das einen Lambda-Endpunkt abonniert hat.

Plattformanwendungs-Endpunkt

  • ApplicationSuccessFeedbackRoleArn— Zeigt den Status der erfolgreichen Nachrichtenzustellung für ein Amazon SNS SNS-Thema an, das einen AWS Anwendungsendpunkt abonniert hat.

  • ApplicationSuccessFeedbackSampleRate— Gibt den Prozentsatz erfolgreicher Nachrichten an, die für ein Amazon SNS SNS-Thema, das einen AWS Anwendungsendpunkt abonniert hat, als Stichprobe verwendet werden sollen.

  • ApplicationFailureFeedbackRoleArn— Zeigt den Status der fehlgeschlagenen Nachrichtenzustellung für ein Amazon SNS SNS-Thema an, das einen AWS Anwendungsendpunkt abonniert hat.

    Anmerkung

    Zusätzlich zum Konfigurieren von Themenattributen für den Zustellungsstatus von Benachrichtigungen, die an Amazon SNS-Anwendungsendpunkte gesendet werden, können Sie auch Anwendungsattribute für den Zustellungsstatus von Push-Benachrichtigungen einrichten, die an Push-Benachrichtigungsservices gesendet werden. Weitere Informationen finden Sie unter Verwendung von Amazon SNS-Anwendungsattributen für den Status von Nachrichtenübermittlungen.

Amazon SQS

  • SQSSuccessFeedbackRoleArn – zeigt den Status der erfolgreichen Nachrichtenzustellung für ein Amazon-SNS-Thema an, das einen Amazon-SQS-Endpunkt abonniert hat.

  • SQSSuccessFeedbackSampleRate – zeigt den Prozentsatz der erfolgreichen Nachrichten an, die für ein Amazon-SNS-Thema abgefragt werden müssen, das einen Amazon–SQS-Endpunkt abonniert hat.

  • SQSFailureFeedbackRoleArn – zeigt den Status der fehlerhaften Nachrichtenzustellung für ein Amazon-SNS-Thema an, das einen Amazon–SQS-Endpunkt abonniert hat.

Anmerkung

Die <ENDPOINT>FailureFeedbackRoleArn Attribute <ENDPOINT>SuccessFeedbackRoleArn und werden verwendet, um Amazon SNS Schreibzugriff auf die Nutzung von CloudWatch Logs in Ihrem Namen zu gewähren. Das Attribut <ENDPOINT>SuccessFeedbackSampleRate dient zum Festlegen des Prozentsatzes der Samplerate (0-100) der erfolgreich zugestellten Nachrichten. Nachdem Sie das <ENDPOINT>FailureFeedbackRoleArn Attribut konfiguriert haben, werden bei allen fehlgeschlagenen Nachrichtenzustellungen CloudWatch Protokolle generiert.

AWS SDK-Beispiele zur Konfiguration von Themenattributen

Die folgenden Codebeispiele zeigen die VerwendungSetTopicAttributes.

CLI
AWS CLI

So legen Sie ein Attribut für ein Thema fest

Im folgenden set-topic-attributes-Beispiel wird das DisplayName-Attribute für das angegebene Thema festgelegt.

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

Mit diesem Befehl wird keine Ausgabe zurückgegeben.

Java
SDK für Java 2.x
Anmerkung

Es gibt noch mehr dazu GitHub. Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository einrichten und ausführen.

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); } } }
  • Einzelheiten zur API finden Sie SetTopicAttributesin der AWS SDK for Java 2.x API-Referenz.

JavaScript
SDK für JavaScript (v3)
Anmerkung

Es gibt noch mehr dazu GitHub. Hier finden Sie das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel- einrichten und ausführen.

Erstellen Sie den Client in einem separaten Modul und exportieren Sie ihn.

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({});

Importieren Sie das SDK- und Client-Module und rufen Sie die API auf.

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
SDK für Kotlin
Anmerkung

Es gibt noch mehr dazu GitHub. Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository einrichten und ausführen.

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.") } }
  • Einzelheiten zur API finden Sie SetTopicAttributesin der API-Referenz zum AWS SDK für Kotlin.

PHP
SDK für PHP
Anmerkung

Es gibt noch mehr dazu. GitHub Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository einrichten und ausführen.

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()); }
Ruby
SDK für Ruby
Anmerkung

Es gibt noch mehr dazu GitHub. Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository einrichten und ausführen.

# 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
SDK für SAP ABAP
Anmerkung

Es gibt noch mehr dazu GitHub. Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository einrichten und ausführen.

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.
  • Einzelheiten zur API finden Sie SetTopicAttributesin der API-Referenz zum AWS SDK für SAP ABAP.

Konfigurieren der Protokollierung des Zustellungsstatus mithilfe von AWS CloudFormation

Verwenden Sie zur Konfiguration DeliveryStatusLogging der Verwendung eine JSON- oder YAML-Vorlage AWS CloudFormation, um einen AWS CloudFormation Stack zu erstellen. Weitere Informationen finden Sie unter der DeliveryStatusLogging Eigenschaft der AWS::SNS::Topic Ressource im AWS CloudFormation Benutzerhandbuch. Im Folgenden finden Sie Beispiele für AWS CloudFormation Vorlagen in JSON und YAML, mit denen Sie ein neues Thema erstellen oder ein vorhandenes Thema mit allen DeliveryStatusLogging Attributen für das Amazon SQS SQS-Protokoll aktualisieren können.

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