Veröffentlichen einer Amazon SNS Nachricht aus Amazon VPC - 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.

Veröffentlichen einer Amazon SNS Nachricht aus Amazon VPC

In diesem Abschnitt erfahren Sie, wie Sie ein Amazon SNS Amazon SNS-Thema veröffentlichen und gleichzeitig die Nachrichten in einem privaten Netzwerk geschützt halten. Sie veröffentlichen eine Nachricht von einer Amazon EC2 Instance, die in Amazon Virtual Private Cloud (Amazon VPC) gehostet wird. Die Nachricht bleibt innerhalb des AWS-Netzwerks, ohne dass sie ins öffentliche Internet gelangt. Durch die private Veröffentlichung von Nachrichten von einer VPC aus können Sie die Sicherheit des Datenverkehrs zwischen Ihren Anwendungen und Amazon SNS verbessern. Diese Sicherheit ist wichtig, wenn Sie personenbezogene Informationen (PII) über Ihre Kunden veröffentlichen oder wenn Ihre Anwendung Marktregulierungen unterliegt. Beispiel: Die private Veröffentlichung ist hilfreich bei einem Gesundheitssystem, das den Health Insurance Portability and Accountability Act (HIPAA) erfüllen muss, oder bei einem Finanzsystem, das den Payment Card Industry Data Security Standard (PCI DSS) erfüllen muss.

Gehen Sie wie folgt vor:

  • Verwenden Sie eine AWS CloudFormation-Vorlage, um automatisch ein temporäres privates Netzwerk in Ihrem AWS-Konto-Konto zu erstellen.

  • Erstellen Sie einen VPC-Endpunkt, der die VPC mit Amazon SNS verbindet.

  • Melden Sie sich bei einer Amazon EC2-Instance an und veröffentlichen Sie eine Nachricht privat in einem Amazon SNS-Thema.

  • Vergewissern Sie sich, dass die Nachricht erfolgreich zugestellt wurde.

  • Löschen Sie die Ressourcen, die Sie für dieses Tutorial erstellt haben, damit sie nicht in Ihrem -Konto bleiben AWS-Konto.

Das folgende Diagramm zeigt das private Netzwerk, das Sie in Ihrem AWS-Konto erstellt haben, während Sie dieses Tutorial abschließen:

Die Architektur des privaten Netzwerks, das Sie in diesem Tutorial erstellen.

Dieses Netzwerk besteht aus einer VPC, die eine Amazon-EC2-Instance enthält. Die Instance stellt über einen Schnittstellen-VPC-Endpunkt eine Verbindung mit Amazon SNS her. Dieser Endpunkttyp stellt eine Verbindung zu Services von AWS PrivateLink her. Nach dem Herstellen dieser Verbindung können Sie sich bei der Amazon-EC2-Instance anmelden und Nachrichten im Amazon SNS-Thema veröffentlichen, auch wenn das Netzwerk nicht mit dem öffentlichen Internet verbunden ist. Das Thema verbreitet die empfangenen Nachrichten an zwei AWS Lambda-Funktionen mit Abonnement. Diese Funktionen protokollieren die empfangenen Nachrichten in Amazon CloudWatch Logs.

Es dauert ungefähr 20 Minuten, bis diese Schritte fertig ausgeführt sind.

Bevor Sie beginnen

Bevor Sie beginnen, benötigen Sie einen Amazon Web Services (AWS)-Konto. Beim Anmelden wird Ihr Konto automatisch für alle Dienste in AWS, einschließlich Amazon SNS und Amazon VPC, angemeldet. Wenn Sie nicht bereits ein Konto erstellt haben, wechseln Sie zu https://aws.amazon.com/ und wählen Sie Create a Free Account (Kostenloses Konto erstellen) aus.

Schritt 1: Erstellen eines Amazon EC2-Schlüsselpaares

Ein Schlüsselpaar wird verwendet, um sich an einer Amazon EC2-Instance anzumelden. Es besteht aus einem öffentlichen Schlüssel zum Verschlüsseln Ihrer Anmeldeinformationen und einem privaten Schlüssel zum Entschlüsseln. Wenn Sie ein Schlüsselpaar erstellen, laden eine Kopie des privaten Schlüssels herunter. Später verwenden Sie das Schlüsselpaar zum Anmelden an einer Amazon EC2 Instance. Zum Anmelden geben Sie den Namen des Schlüsselpaares und den privaten Schlüssel an.

So erstellen Sie ein Schlüsselpaar
  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon-EC2-Konsole unter https://console.aws.amazon.com/EC2/.

  2. Suchen Sie im Navigationsmenü auf der linken Seite den Abschnitt Network & Security (Netzwerk und Sicherheit). Wählen Sie dann Key Pairs (Schlüsselpaare).

  3. Wählen Sie Create Key Pair aus.

  4. Geben Sie im Fenster Create Key Pair (Schlüsselpaar erstellen) für Key pair name (Schlüsselpaar-Name) den Wert VPCE-Tutorial-KeyPair ein. Wählen Sie dann die Option Create (Erstellen) aus.

    Das Fenster "Create Key Pair (Schlüsselpaar erstellen)".
  5. Die private Schlüsseldatei wird von Ihrem Browser automatisch runtergeladen. Bewahren Sie es an einem sicheren Ort auf. Amazon EC2 gibt der Datei die Erweiterung .pem.

  6. (Optional) Wenn Sie einen SSH-Client auf Ihrem Mac- oder Linux-Computer verwenden, um eine Verbindung mit der Instance herzustellen, legen Sie die Berechtigungen für die private Schlüsseldatei mit dem Befehl chmod fest, sodass nur Sie diese lesen können:

    1. Öffnen Sie ein Terminal und navigieren Sie zu dem Verzeichnis, das den privaten Schlüssel enthält:

      $ cd /filepath_to_private_key/
    2. Legen Sie mit folgendem Befehl die Berechtigungen fest:

      $ chmod 400 VPCE-Tutorial-KeyPair.pem

Schritt 2: Erstellen der AWS-Ressourcen

Verwenden Sie zum Einrichten der Infrastruktur, die dieses Tutorial unterstützt, eine AWS CloudFormation-Vorlage. Bei einer Vorlage handelt es sich um eine Datei, die als Vorlage für die Erstellung von AWS-Ressourcen dient, wie z. B. Amazon EC2-Instances und Amazon SNS-Themen. Die Vorlage für dieses Tutorial steht auf GitHub zum Download bereit.

Sie stellen die Vorlage für AWS CloudFormation bereit und AWS CloudFormation stellt die benötigten Ressourcen als Stack in Ihrem AWS-Konto-Konto bereit. Bei einem Stack handelt es sich um eine Sammlung von Ressourcen, die Sie als einzelne Einheit verwalten. Wenn Sie das Tutorial beendet haben, können Sie AWS CloudFormation verwenden, um alle Ressourcen im Stack auf einmal zu löschen. Diese Ressourcen bleiben nicht in Ihrem AWS-Konto-Konto, wenn Sie dies nicht möchten.

Der Stack für dieses Tutorial enthält die folgenden Ressourcen:

  • Eine VPC und die zugehörigen Netzwerkressourcen, einschließlich eines Subnetzes, einer Sicherheitsgruppe, eines Internet-Gateways und einer Routing-Tabelle.

  • Eine Amazon EC2-Instance, die im Subnetz in der VPC gestartet wird.

  • Amazon SNS-Thema.

  • Zwei AWS Lambda-Funktionen. Diese Funktionen empfangen Nachrichten, die im Amazon-SNS-Thema veröffentlicht werden, und protokollieren Ereignisse in CloudWatch Logs.

  • Amazon CloudWatch-Metriken und -Protokolle

  • Eine IAM-Rolle, die der Amazon EC2-Instance die Verwendung von Amazon SNS erlaubt, und eine IAM-Rolle,, die den Lambda-Funktionen das Schreiben von Daten in CloudWatch Logs erlaubt.

So erstellen Sie AWS-Ressourcen
  1. Laden Sie die Vorlagedatei von der GitHub-Website herunter.

  2. Melden Sie sich an der AWS CloudFormation-Konsole an.

  3. Wählen Sie Create Stack aus.

  4. Wählen Sie auf der Seite Select Template (Vorlage auswählen) die Option Upload a template to Amazon S3 (Eine Vorlage zu Amazon S3 hochladen) aus. Wählen Sie dann Ihre Datei und Next (Weiter) aus.

  5. Geben Sie auf der Seite Specify Details (Details angeben) Stack- und Schlüsselnamen an:

    1. Geben Sie für Stack name VPCE-Tutorial-Stack ein.

    2. Wählen Sie für KeyName VPCE-Tutorial-KeyPair.

    3. Behalten Sie für SSHLocation den Standardwert 0.0.0.0/0 bei.

      Die Seite "Specify Details (Details angeben)".
    4. Wählen Sie Next (Weiter).

  6. Behalten Sie auf der Seite Options (Optionen) alle Standardwerte bei, und wählen Sie dann Next (Weiter).

  7. Überprüfen Sie die Einstellungen auf der Seite Review (Überprüfen) die Stack-Details.

  8. Bestätigen Sie unter Capabilities (Funktionen), dass AWS CloudFormation IAM-Ressourcen mit benutzerdefinierten Namen erstellen kann.

  9. Wählen Sie Create (Erstellen) aus.

    Die AWS CloudFormation-Konsole öffnet die Seite Stacks. Der VPCE-Tutorial-Stack weist den Status CREATE_IN_PROGRESS auf. Nach Abschluss des Erstellungsprozesses ändert sich der Status in wenigen Minuten in CREATE_COMPLETE.

    Der AWS CloudFormation-Stack mit dem Status CREATE_COMPLETE.
    Tipp

    Wählen Sie die Schaltfläche Refresh (Aktualisieren), um den neuesten Stack-Status zu sehen.

Schritt 3: Bestätigen Sie, dass Ihre Amazon EC2-Instance über keinen Internetzugang verfügt

Die im vorherigen Schritt in Ihrer VPC gestartete Amazon EC2-Instance hat keinen Internetzugang. Sie verbietet ausgehenden Datenverkehr und kann keine Nachrichten in Amazon SNS veröffentlichen. Überprüfen Sie dies, indem Sie sich bei der Instance anmelden. Anschließend versuchen Sie, eine Verbindung zu einem öffentlichen Endpunkt herzustellen, und versuchen, eine Nachricht an Amazon SNS zu senden.

An diesem Punkt schlägt der Veröffentlichungsversuch fehl. In einem späteren Schritt nach dem Erstellen eines VPC-Endpunkts für Amazon SNS ist der Veröffentlichungsversuch erfolgreich.

Stellen Sie eine Verbindung zu Ihrer Amazon EC2-Instance her
  1. Öffnen Sie die Amazon EC2-Konsole unter https://console.aws.amazon.com/ec2/.

  2. Suchen Sie im Navigationsmenü auf der linken Seite den Abschnitt Instances. Wählen Sie anschließend Instances.

  3. Wählen Sie in der Liste der Instances VPCE-Tutorial-EC2Instance aus.

  4. Kopieren Sie den Hostnamen, der in der Spalte Public DNS (IPv4) (Öffentlicher DNS (IPv4)) angegeben ist.

    Details über die Amazon-EC2-Instance, die von gestartet wurde AWS CloudFormation.
  5. Öffnen Sie ein Terminalfenster. Stellen Sie im Verzeichnis, das das Schlüsselpaar enthält, eine Verbindung mit der Instance her, indem Sie den folgenden Befehl verwenden, wobei instance-hostname der Hostname ist, den Sie von der Amazon EC2-Konsole kopiert haben:

    $ ssh -i VPCE-Tutorial-KeyPair.pem ec2-user@instance-hostname
So überprüfen Sie, ob die Instance eine Verbindung zum Internet hat
  • Versuchen Sie in Ihrem Terminal, eine Verbindung mit einem öffentlichen Endpunkt herzustellen, wie z. B. amazon.com:

    $ ping amazon.com

    Da der Verbindungsversuch fehlschlägt, können Sie ihn jederzeit stornieren (Strg+C unter Windows oder Befehl+C unter macOS).

Überprüfen, dass die Instance keine Verbindung zu Amazon SNS hat
  1. Melden Sie sich bei der Amazon SNS-Konsole an.

  2. Wählen Sie im Navigationsmenü auf der linken Seite Topics (Themen) aus.

  3. Kopieren Sie auf der Seite Topics (Themen) den Amazon-Ressourcennamen (ARN) für das Thema VPCE-Tutorial-Topic.

  4. Versuchen Sie in Ihrem Terminal eine Nachricht an das Thema zu veröffentlichen:

    $ aws sns publish --region aws-region --topic-arn sns-topic-arn --message "Hello"

    Da der Veröffentlichungsversuch fehlschlägt, können Sie ihn jederzeit abbrechen.

Schritt 4: Erstellen eines Amazon VPC-Endpunkts für Amazon SNS

Zum Herstellen einer Verbindung der VPC mit Amazon SNS definieren Sie einen Schnittstellen-VPC-Endpunkt. Nach dem Hinzufügen des Endpunkts können Sie sich bei der Amazon EC2-Instance in Ihrer VPC anmelden und von dort aus die Amazon SNS-API verwenden. Sie können Nachrichten in dem Thema veröffentlichen. Die Nachrichten werden privat veröffentlicht. Sie bleiben innerhalb des AWS-Netzwerks und bewegen sich nicht im öffentlichen Internet.

Anmerkung

Die Instance hat immer noch keinen Zugriff auf andere AWS-Services und -Endpunkte im Internet.

So erstellen Sie den Endpunkt
  1. Öffnen Sie die Amazon VPC-Konsole unter https://console.aws.amazon.com/vpc/.

  2. Wählen Sie im Navigationsmenü auf der linken Seite Endpoints (Endpunkte) aus.

  3. Klicken Sie auf Create Endpoint.

  4. Behalten Sie auf der Seite Create Endpoint (Endpunkt erstellen) für Service category (Servicekategorie) die Standardauswahl von AWS Services bei.

  5. Wählen Sie für Service Name (Service-Name) den Service-Namen für Amazon SNS.

    Die Servicenamen variieren abhängig von der ausgewählten Region. Wenn Sie beispielsweise USA Ost (Nord-Virginia) wählen, lautet der Servicename com.amazonaws.us-east-1.sns.

  6. Wählen Sie für VPC die VPC mit dem Namen VPCE-Tutorial-VPC.

    Das VPC-Menü auf der Seite "Create Endpoint (Endpunkt erstellen)".
  7. Wählen Sie unter Subnets (Subnetze) die Subnetze aus, deren Subnetz-ID VPCE-Tutorial-Subnet enthält.

    Die Subnetze auf der Seite "Create Endpoints (Endpunkte erstellen)".
  8. Wählen Sie für Enable Private DNS Name (Privaten DNS-Namen aktivieren) die Option Enable for this endpoint (Für diesen Endpunkt aktivieren) aus.

  9. Wählen Sie für Security group (Sicherheitsgruppe) die Option Select security group (Sicherheitsgruppe auswählen) und danach VPCE-Tutorial-SecurityGroup aus.

    Die Sicherheitsgruppen auf der Seite "Create Endpoints (Endpunkte erstellen)".
  10. Wählen Sie Create endpoint. Die Amazon VPC-Konsole bestätigt, dass ein VPC-Endpunkt erstellt wurde.

    Die Bestätigungsmeldung, die nach dem Erstellen eines Endpunkts angezeigt wird.
  11. Klicken Sie auf Close.

    Die Amazon-VPC-Konsole öffnet die Seite Endpunkte. Der neue Endpunkt weist den Status pending (ausstehend) auf. Nach Abschluss des Erstellungsprozesses ändert sich der Status in wenigen Minuten in available (verfügbar).

    Der VPC-Endpunkt mit dem Status "available (verfügbar)".

Schritt 5: Veröffentlichen einer Nachricht in Ihrem Amazon SNS-Thema

Jetzt, da Ihre VPC einen Endpunkt für Amazon SNS umfasst, können Sie sich an der Amazon EC2-Instance anmelden und Nachrichten im Thema veröffentlichen.

So veröffentlichen Sie eine Nachricht
  1. Falls Ihr Terminal nicht mehr mit Ihrer Amazon EC2-Instance verbunden ist, stellen Sie die Verbindung wieder her:

    $ ssh -i VPCE-Tutorial-KeyPair.pem ec2-user@instance-hostname
  2. Führen Sie den gleichen Befehl aus wie zuvor, um eine Nachricht in Ihrem Amazon SNS-Thema zu veröffentlichen. Dieses Mal ist der Veröffentlichungsversuch erfolgreich und Amazon SNS gibt eine Mitteilungs-ID zurück:

    $ aws sns publish --region aws-region --topic-arn sns-topic-arn --message "Hello" { "MessageId": "5b111270-d169-5be6-9042-410dfc9e86de" }

Schritt 6: Überprüfen Sie die Zustellung Ihrer Nachrichten

Wenn das Amazon SNS-Thema eine Nachricht empfängt, wird die Nachricht durch Senden an die zwei Lambda-Funktionen mit Abonnement verbreitet. Wenn diese Funktionen die Nachricht empfangen, protokollieren Sie das Ereignis in CloudWatch Logs. Um sicherzustellen, dass Ihre Nachrichtenzustellung erfolgreich war, überprüfen Sie, dass die Funktionen aufgerufen wurden und dass die CloudWatch Logs aktualisiert wurden.

So überprüfen Sie, dass die Lambda-Funktionen aufgerufen wurden
  1. Öffnen Sie die AWS Lambda-Konsole unter https://console.aws.amazon.com/lambda/.

  2. Wählen Sie auf der Seite Functions (Funktionen) die Option VPCE-Tutorial-Lambda-1.

  3. Wählen Sie Monitoring.

  4. Überprüfen Sie das Diagramm Invocation count (Anzahl der Aufrufe). Dieses Diagramm zeigt die Anzahl der Ausführungen der Lambda-Funktion.

    Die Anzahl der Aufrufe entspricht der Anzahl der Veröffentlichungen einer Nachricht im Thema.

    Das Diagramm der Anzahl der Aufrufe in der Lambda-Konsole.
So überprüfen Sie, dass die CloudWatch Logs aktualisiert wurden
  1. Öffnen Sie die CloudWatch-Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie im Navigationsmenü links Logs (Protokolle).

  3. Überprüfen Sie die Protokolle, die von den Lambda-Funktionen geschrieben wurden:

    1. Wählen Sie die Protokollgruppe /aws/lambda/VPCE-Tutorial-Lambda-1/.

    2. Wählen Sie den Protokollstream.

    3. Prüfen Sie, dass das Protokoll den Eintrag enthält From SNS: Hello.

      Das CloudWatch Log enthält den Eintrag „From SNS: Hello" (Von SNS: Hallo).
    4. Wählen Sie Log Groups (Protokollgruppen) oben auf der Konsole, um zur Seite Log Groups (Protokollgruppen) zurückzukehren. Wiederholen Sie dann die vorangegangenen Schritte für die Protokollgruppe /aws/lambda/VPCE-Tutorial-Lambda-2/.

Herzlichen Glückwunsch! Durch das Hinzufügen eines Endpunkts für Amazon SNS zu einer VPC konnten Sie eine Nachricht in einem Thema innerhalb des Netzwerks veröffentlichen, das von der VPC verwaltet wird. Die Nachricht wurde privat veröffentlicht, ohne im Internet veröffentlicht zu werden.

Schritt 7: Bereinigen

Sofern Sie die Ressourcen, die Sie für dieses Tutorial erstellt haben, nicht behalten möchten, können Sie sie nun löschen. Durch das Löschen von AWS-Ressourcen, die Sie nicht mehr verwenden, können Sie verhindern, dass unnötige Gebühren in Ihrem AWS-Konto-Konto anfallen.

Löschen Sie zuerst Ihren VPC-Endpunkt mithilfe der Amazon VPC-Konsole. Löschen Sie anschließend die anderen Ressourcen, die Sie erstellt haben, indem Sie in der AWS CloudFormation-Konsole den Stack löschen. Wenn Sie einen Stack löschen, entfernt AWS CloudFormation die Stack-Ressourcen aus Ihrem AWS-Konto-Konto.

So löschen Sie Ihren VPC-Endpunkt
  1. Öffnen Sie die Amazon VPC-Konsole unter https://console.aws.amazon.com/vpc/.

  2. Wählen Sie im Navigationsmenü auf der linken Seite Endpoints (Endpunkte) aus.

  3. Wählen Sie den Endpunkt aus, den Sie erstellt haben.

  4. Wählen Sie Actions (Aktionen) und anschließend Delete Endpoint (Endpunkt löschen).

  5. Wählen Sie im Fenster Delete Endpoint (Endpunkt löschen) Yes, Delete (Ja, löschen).

    Der Status des Endpunkts wird in deleting (Wird gelöscht...) geändert. Wenn der Löschvorgang abgeschlossen ist, wird der Endpunkt von der Seite entfernt.

So löschen Sie Ihren AWS CloudFormation-Stack
  1. Öffnen Sie die AWS CloudFormation-Konsole unter https://console.aws.amazon.com/cloudformation.

  2. Wählen Sie den Stack VPCE-Tutorial-Stack aus.

  3. Wählen Sie die Option Actions (Aktionen) und anschließend Delete Stack (Stack löschen) aus.

  4. Wählen Sie im Fenster Delete Stack (Stack löschen) Yes, Delete (Ja, löschen).

    Der Stack-Status ändert sich in DELETE_IN_PROGRESS. Wenn der Löschvorgang abgeschlossen ist, wird der Stack von der Seite entfernt.

Weitere Informationen finden Sie in den folgenden Ressourcen.