Salta al contenuto

Come posso iscrivere un endpoint HTTP o HTTPS privato a un mio topic Amazon SNS?

3 minuti di lettura
0

Desidero iscrivere un endpoint HTTP o HTTPS privato a un mio topic Amazon Simple Notification Service (Amazon SNS).

Risoluzione

Per iscrivere un endpoint HTTP o HTTPS privato a un topic Amazon SNS, completa i passaggi seguenti.

Crea un gruppo di sicurezza Amazon VPC (LambdaSG) nello stesso Amazon VPC dell'endpoint privato

  1. Apri la console di Amazon VPC.
  2. Nel pannello di navigazione, sotto Sicurezza, scegli Gruppi di sicurezza. Quindi scegli Crea gruppo di sicurezza.
  3. Per Nome del gruppo di sicurezza, inserisci LambdaSG.
  4. Per ** VPC**, scegli il cloud privato virtuale (VPC) di Amazon in cui si trova l'endpoint privato.
  5. Scegli Crea gruppo di sicurezza.

Crea una funzione Lambda all'interno dello stesso Amazon VPC e della stessa sottorete dell'endpoint privato e configurala con il gruppo di sicurezza LambdaSG

  1. Apri la console di Lambda.
  2. Scegli Crea funzione.
  3. Scegli Crea da zero.
  4. Per Nome funzione, inserisci un nome che descriva lo scopo della tua funzione. Per esempio, Private-Endpoint-Amazon-SNS-Topic-Subscription..
  5. Per Runtime, scegli Python 3.12.
  6. Scegli Configurazioni aggiuntive. Quindi scegli ** Abilita VPC**.
  7. Per il VPC, scegli la sottorete in cui si trova l'endpoint privato.
  8. Scegli Crea funzione.

Modifica le regole del gruppo di sicurezza dell'endpoint privato per consentire la connessione in entrata dal gruppo di sicurezza della funzione Lambda

  1. Apri la console di Amazon VPC.
  2. Nel pannello di navigazione, sotto Sicurezza, scegli Gruppi di sicurezza.
  3. In Gruppi di sicurezza, scegli il gruppo di sicurezza dell'endpoint privato.
  4. Scegli Modifica regole in entrata.
  5. Per ** Tipo**, scegli ** HTTP ** o ** HTTPS**. I campi Protocollo e Intervallo di porte vengono compilati automaticamente.
  6. Per Origine, scegli Personalizzato. Quindi scegli il gruppo di sicurezza LambdaSG.
  7. Scegli Salva regole.

Configura la funzione Lambda per trasmettere le notifiche Amazon SNS in entrata all'endpoint privato

  1. Apri la console di Lambda.
  2. Nel pannello di navigazione, scegli Funzioni.
  3. In Nome funzione, scegli la funzione che hai creato in precedenza.
  4. In ** Origine** del ** codice**, sostituisci al codice predefinito il codice seguente:
    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)
    Importante: sostituisci al valore dell'url l'URL del tuo endpoint privato.
  5. Scegli Distribuisci.

Iscrivi la funzione Lambda al tuo topic Amazon SNS

Per ulteriori informazioni, consulta Tutorial: Utilizzo di Lambda con Amazon SQS.