Comment puis-je abonner un point de terminaison HTTP ou HTTPS privé à ma rubrique Amazon SNS ?

Lecture de 3 minute(s)
0

Je souhaite abonner un point de terminaison HTTP ou HTTPS privé à ma rubrique Amazon Simple Notification Service (Amazon SNS).

Résolution

Pour abonner un point de terminaison HTTP ou HTTPS privé à une rubrique Amazon SNS, procédez comme suit.

Créer un groupe de sécurité Amazon VPC LambdaSG dans le même Amazon VPC que le point de terminaison privé

  1. Ouvrez la console Amazon VPC.
  2. Dans le volet de navigation, sous Sécurité, sélectionnez Groupes de sécurité. Sélectionnez Créer un groupe de sécurité.
  3. Dans Nom du groupe de sécurité, saisissez LambdaSG.
  4. Dans VPC, choisissez le cloud privé virtuel (VPC) Amazon dans lequel se trouve le point de terminaison privé.
  5. Sélectionnez Créer un groupe de sécurité.

Créer une fonction Lambda dans le même Amazon VPC et le même sous-réseau que le point de terminaison privé et la configurer avec le groupe de sécurité LambdaSG

  1. Ouvrez la Console Lambda.
  2. Sélectionnez Create function (Créer une fonction).
  3. Sélectionnez Créer à partir de zéro.
  4. Dans Nom de la fonction, saisissez un nom qui décrit l'objectif de votre fonction. Par exemple, Private-endpoint-Amazon-SNS-topic-subscription.
  5. Dans Exécution, sélectionnez Python 3.12.
  6. Sélectionnez Configurations supplémentaires. Puis, sélectionnez Activer le VPC.
  7. Pour le VPC, choisissez le sous-réseau dans lequel se trouve le point de terminaison privé.
  8. Sélectionnez Créer une fonction.

Modifier les règles de groupe de sécurité du point de terminaison privé pour autoriser la connexion entrante depuis le groupe de sécurité de la fonction Lambda

  1. Ouvrez la console Amazon VPC.
  2. Dans le volet de navigation, sous Sécurité, sélectionnez Groupes de sécurité.
  3. Dans Groupes de sécurité, choisissez le groupe de sécurité du point de terminaison privé.
  4. Sélectionnez Modifier les règles entrantes.
  5. Dans Type, sélectionnez HTTP ou HTTPS. Les champs Protocole et Plage de ports sont renseignés automatiquement.
  6. Dans Source, sélectionnez Personnalisé. Puis, sélectionnez le groupe de sécurité LambdaSG.
  7. Sélectionnez Enregistrer les règles.

Configurer la fonction Lambda pour transmettre les notifications Amazon SNS entrantes au point de terminaison privé

  1. Ouvrez la Console Lambda.
  2. Dans le volet de navigation, sélectionnez Fonctions.
  3. Dans Nom de la fonction, choisissez la fonction que vous avez créée précédemment.
  4. Dans source du code, remplacez le code par défaut par le code suivant :
    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)
    Important : Remplacez la valeur de url par l'URL de votre point de terminaison privé.
  5. Sélectionnez Déployer.

Abonner la fonction Lambda à votre rubrique Amazon SNS

Pour plus d'informations, consultez le didacticiel : Utilisation de Lambda avec Amazon SQS.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 5 mois