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é
- Ouvrez la console Amazon VPC.
- Dans le volet de navigation, sous Sécurité, sélectionnez Groupes de sécurité. Sélectionnez Créer un groupe de sécurité.
- Dans Nom du groupe de sécurité, saisissez LambdaSG.
- Dans VPC, choisissez le cloud privé virtuel (VPC) Amazon dans lequel se trouve le point de terminaison privé.
- 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
- Ouvrez la Console Lambda.
- Sélectionnez Create function (Créer une fonction).
- Sélectionnez Créer à partir de zéro.
- Dans Nom de la fonction, saisissez un nom qui décrit l'objectif de votre fonction. Par exemple, Private-endpoint-Amazon-SNS-topic-subscription.
- Dans Exécution, sélectionnez Python 3.12.
- Sélectionnez Configurations supplémentaires. Puis, sélectionnez Activer le VPC.
- Pour le VPC, choisissez le sous-réseau dans lequel se trouve le point de terminaison privé.
- 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
- Ouvrez la console Amazon VPC.
- Dans le volet de navigation, sous Sécurité, sélectionnez Groupes de sécurité.
- Dans Groupes de sécurité, choisissez le groupe de sécurité du point de terminaison privé.
- Sélectionnez Modifier les règles entrantes.
- Dans Type, sélectionnez HTTP ou HTTPS. Les champs Protocole et Plage de ports sont renseignés automatiquement.
- Dans Source, sélectionnez Personnalisé. Puis, sélectionnez le groupe de sécurité LambdaSG.
- Sélectionnez Enregistrer les règles.
Configurer la fonction Lambda pour transmettre les notifications Amazon SNS entrantes au point de terminaison privé
- Ouvrez la Console Lambda.
- Dans le volet de navigation, sélectionnez Fonctions.
- Dans Nom de la fonction, choisissez la fonction que vous avez créée précédemment.
- 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é.
- 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.