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.

Lösung

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

Eine Amazon VPC-Sicherheitsgruppe (LambdaSG) in derselben Amazon VPC wie der private Endpunkt erstellen

  1. Öffne die Amazon-VPC-Konsole.
  2. Wähle im Navigationsbereich unter Sicherheit die Option Sicherheitsgruppen. Wähle dann Sicherheitsgruppe erstellen aus.
  3. Gib als Name der Sicherheitsgruppe LambdaSG ein.
  4. Wähle für VPC die Amazon Virtual Private Cloud (VPC) aus, in der sich der private Endpunkt befindet.
  5. Wähle Sicherheitsgruppe erstellen aus.

Eine Lambda-Funktion in derselben Amazon-VPC und demselben Subnetz wie der private Endpunkt erstellen und mit der LambdaSG-Sicherheitsgruppe konfigurieren

  1. Öffne die Lambda-Konsole.
  2. Wähle Funktion erstellen aus.
  3. Wähle Ohne Vorgabe erstellen.
  4. Gib unter Funktionsname einen Namen ein, der den Zweck der Funktion beschreibt. Zum Beispiel Private-endpoint-Amazon-SNS-topic-subscription.
  5. Wähle für Laufzeit Python 3.12.
  6. Wähle Zusätzliche Konfigurationen. Wähle dann VPC aktivieren aus.
  7. Wähle für die VPC das Subnetz aus, in dem sich der private Endpunkt befindet.
  8. Wähle Funktion erstellen aus.

Die Regeln der Sicherheitsgruppe des privaten Endpunkts bearbeiten, um eingehende Verbindungen von der Sicherheitsgruppe der Lambda-Funktion zuzulassen

  1. Öffne die Amazon-VPC-Konsole.
  2. Wähle im Navigationsbereich unter Sicherheit die Option Sicherheitsgruppen.
  3. Wähle unter **Sicherheitsgruppen ** die Sicherheitsgruppe des privaten Endpunkts aus.
  4. Wähle Regeln für eingehenden Datenverkehr bearbeiten aus.
  5. Wähle für Typ HTTP oder HTTPS aus. Die Felder Protokoll und Portbereich werden automatisch ausgefüllt.
  6. Wähle für Quelle die Option Benutzerdefiniert aus. Wähle dann die LambdaSG-Sicherheitsgruppe aus.
  7. Wähle Regeln speichern aus.

Die Lambda-Funktion so konfigurieren, dass sie eingehende Amazon SNS-Benachrichtigungen an den privaten Endpunkt weiterleitet

  1. Öffne die Lambda-Konsole.
  2. Wähle im Navigationsbereich Funktionen aus.
  3. Wähle unter Funktionsname die Funktion aus, die du zuvor erstellt hast.
  4. Ersetze in der Code-Quelle den Standardcode durch den folgenden Code:
    from __future__ import print_function
    import json
    import urllib3
    
    http = urllib3.PoolManager()
    
    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 = http.request('POST', url, headers=sns_message_headers, body=json.dumps(sns_message_payload))
            print(r.data)
        except Exception as e:
            print(e)
    Wichtig: Ersetze den url-Wert durch die URL deines privaten Endpunkts.
  5. Wähle Bereitstellen aus.

Die Lambda-Funktion zum Amazon SNS-Thema abonnieren

Weitere Informationen findest du unter Tutorial: Verwendung von Lambda mit Amazon SQS.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 4 Monaten