Quiero suscribir un punto de enlace HTTP o HTTPS privado a mi tema de Amazon Simple Notification Service (Amazon SNS).
Resolución
Para suscribir un punto de enlace HTTP o HTTPS privado a un tema de Amazon SNS, sigue estos pasos.
Creación de un grupo de seguridad de Amazon VPC (LambdaSG) en la misma Amazon VPC que el punto de enlace privado
- Abre la consola de Amazon VPC.
- En el panel de navegación, en Seguridad, selecciona Grupos de seguridad. A continuación, selecciona Crear grupo de seguridad.
- En Nombre del grupo de seguridad, escribe LambdaSG.
- EN ** VPC**, selecciona la nube virtual privada (VPC) de Amazon en la que se encuentra el punto de enlace privado.
- Selecciona Crear grupo de seguridad.
Creación de una función de Lambda dentro de la misma VPC y subred de Amazon que el punto de enlace privado y configuración con el grupo de seguridad LambdaSG
- Abre la consola de Lambda.
- Selecciona Crear función.
- Selecciona Crear desde cero.
- En Nombre de la función, introduce un nombre que describa el propósito de la función. Por ejemplo, Punto-de-enlace-Amazon-SNS-suscripción-tema.
- En Tiempo de ejecución, selecciona Python 3.12.
- Selecciona Configuraciones adicionales. A continuación, selecciona Habilitar VPC.
- En el caso de la VPC, elige la subred en la que se encuentra el punto de enlace privado.
- Selecciona Crear función.
Edición de las reglas del grupo de seguridad del punto de enlace privado para permitir la conexión entrante desde el grupo de seguridad de la función de Lambda
- Abre la consola de Amazon VPC.
- En el panel de navegación, en Seguridad, selecciona Grupos de seguridad.
- En Grupos de seguridad, elige el grupo de seguridad del punto de enlace privado.
- Selecciona Editar reglas de entrada.
- En Tipo, elige HTTP o HTTPS. Los campos Protocolo y Rango de puertos se rellenan automáticamente.
- En Origen, elige Personalizado. A continuación, elige el grupo de seguridad LambdaSG.
- Selecciona Guardar reglas.
Configuración de la función de Lambda para que pase las notificaciones entrantes de Amazon SNS al punto de enlace privado
- Abre la consola de Lambda.
- En el panel de navegación, selecciona Funciones.
- En Nombre de función, elige la función que creaste anteriormente.
- En Código fuente, sustituye el código predeterminado por el siguiente código:
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: Sustituye el valor de la URL por la URL del punto de enlace privado.
- Selecciona Desplegar.
Suscripción de la función de Lambda al tema de Amazon SNS
Para más información, consulta Tutorial: Uso de AWS Lambda con Amazon SNS.