Wie abonniere ich einen privaten HTTP- oder HTTPS-Endpunkt für mein Amazon SNS-Thema?

Lesedauer: 3 Minute
0

Ich möchte einen privaten HTTP- oder HTTPS-Endpunkt für mein Amazon Simple Notification Service (Amazon SNS)-Thema abonnieren. Wie richte ich das ein?

Kurzbeschreibung

Gehen Sie wie folgt vor, um einen privaten HTTP- oder HTTPS-Endpunkt für ein Amazon SNS-Thema zu abonnieren:

Behebung

Erstellen Sie eine Amazon VPC-Sicherheitsgruppe (LambdaSG) in derselben Amazon VPC wie der private Endpunkt

1.Öffnen Sie die Amazon VPC-Konsole.

2.Wählen Sie im linken Navigationsbereich unter Sicherheit die Option Sicherheitsgruppen aus. Wählen Sie dann Sicherheitsgruppe erstellen aus.

3.Geben Sie als Sicherheitsgruppennamen LambdaSG ein.

4.Wählen Sie für VPC die Amazon VPC aus, in der sich der private Endpunkt befindet.

5.Wählen Sie Sicherheitsgruppe erstellen aus.

Erstellen Sie eine Lambda-Funktion in derselben Amazon-VPC und demselben Subnetz wie der private Endpunkt und fügen Sie sie der LambdaSG-Sicherheitsgruppe hinzu

1.Öffnen Sie die Lambda-Konsole.

2.Wählen Sie Funktion erstellen aus.

3.Wählen Sie Autor von Grund auf aus.

4.Geben Sie unter Funktionsname einen Namen ein, der den Zweck Ihrer Funktion beschreibt. Zum Beispiel Privater-Endpunkt-Amazon-SNS-Themen-Abo.

5.Wählen Sie für Laufzeit Python 3.8.

6.Wählen Sie Erweiterte Einstellungen.

7.Wählen Sie für VPC - optional die Amazon VPC aus, in der sich der private Endpunkt befindet. Dropdownlisten für Subnetze und Sicherheitsgruppen werden angezeigt.

8.Wählen Sie für Subnetze das Subnetz aus, in dem sich der private Endpunkt befindet.

9.Wählen Sie für Sicherheitsgruppen ** LambdaSG** aus.

10.Wählen Sie Funktion erstellen aus.

Bearbeiten Sie die Regeln der Sicherheitsgruppe des privaten Endpunkts, um eingehende Verbindungen von der Sicherheitsgruppe der Lambda-Funktion zuzulassen

1.Öffnen Sie die Amazon VPC-Konsole.

2.Wählen Sie im linken Navigationsbereich unter Sicherheit die Option Sicherheitsgruppen aus.

3.Wählen Sie den Namen der Sicherheitsgruppe des privaten Endpunkts.

4.Wählen Sie Regeln für eingehenden Datenverkehr bearbeiten aus.

5.Wählen Sie für Typ je nach Anwendungsfall HTTP oder HTTPS aus. Die Felder Protokoll und Portbereich werden automatisch gefüllt.

6.Wählen Sie für Quelle die Option Benutzerdefiniert aus. Wählen Sie dann die LambdaSG-Sicherheitsgruppe aus.

7.Wählen Sie Regeln speichern.

Konfigurieren Sie die Lambda-Funktion so, dass sie eingehende Amazon SNS-Benachrichtigungen an den privaten Endpunkt weiterleitet

1.Erstellen Sie ein Lambda-Bereitstellungspaket, das die Python-Anforderungsbibliothek Ihrer Lambda-Funktion enthält. Folgen Sie den Anweisungen unter Bereitstellungspaket erstellen im Tutorial: Erstellen einer Lambda-Funktion in Python 3.8. Ersetzen Sie in Schritt 3 den im Tutorial bereitgestellten Code durch den folgenden Beispielcodeausschnitt.

Python-Codeausschnitt, der die Anforderungsbibliothek verwendet, um die eingehenden Benachrichtigungen von Amazon SNS an den privaten Endpunkt zu senden

Wichtig: Ersetzen Sie den URL-Wert durch die URL Ihres privaten Endpunkts.

import json
import requests

def lambda_handler(event, context):
    url = "<PRIVATE_HTTP/S_ENDPOINT_URL>"

    sns_message_payload = event["Records"][0]["Sns"]

    sns_message_headers = {
        "x-amz-sns-message-id": sns_message_payload['MessageId'],
        "x-amz-sns-message-type": sns_message_payload["Type"],
        "x-amz-sns-subscription-arn" : event["Records"][0]["EventSubscriptionArn"],
        "x-amz-sns-topic-arn" : sns_message_payload["TopicArn"]
    }

    try:
        r = requests.post(url = url, data = json.dumps(sns_message_payload), headers = sns_message_headers)
    except Exceptions as e:
        print(e)

    print(r.content)

    return {
        'statusCode': 200,
        'body': json.dumps(r.content)
    }

2.Verwenden Sie das Bereitstellungspaket zur Aktualisierung der Lambda-Funktion, die Sie zuvor erstellt haben.

Abonnieren Sie die Lambda-Funktion zu Ihrem Amazon SNS-Thema

Folgen Sie den Anweisungen unter Wie abonniere ich eine Lambda-Funktion für ein Amazon SNS-Thema in demselben Konto?


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren