Recepción de eventos de SaaS desde las URL de función de AWS Lambda en Amazon EventBridge - Amazon EventBridge

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Recepción de eventos de SaaS desde las URL de función de AWS Lambda en Amazon EventBridge

nota

Para que nuestros socios puedan acceder al Webhook entrante, estamos creando una Lambda abierta en la cuenta de AWS que está protegida a nivel de aplicación Lambda mediante la verificación de la firma de autenticación enviada por el socio externo. Revise esta configuración con el equipo de seguridad. Para obtener más información, consulte Modelo de seguridad y autenticación para URL de funciones de Lambda.

Su bus de eventos de Amazon EventBridge puede usar una URL de función de AWS Lambda creada por una plantilla de AWS CloudFormation para recibir eventos de proveedores de SaaS compatibles. Con las URL de función, los datos del evento se envían a una función de Lambda. A continuación, la función convierte estos datos en un evento que EventBridge puede ingerir y enviar a un bus de eventos para su procesamiento. Una vez que el evento esté en un bus de eventos, puede usar reglas para filtrar los eventos, aplicar transformaciones de entrada configurada y, a continuación, dirigirlo al destino correcto.

nota

La creación de direcciones URL de función de Lambda aumentará sus costes mensuales. Para más información, consulte Precios de AWS Lambda.

Para establecer una conexión con EventBridge, debe seleccionar primero el proveedor de SaaS con el que desea establecer una conexión. A continuación, proporcione un secreto de firma que haya creado con ese proveedor y seleccione el bus de eventos de EventBridge al que enviar los eventos. Por último, utilice una plantilla de AWS CloudFormation y cree los recursos necesarios para completar la conexión.

Los siguientes proveedores de SaaS están disponibles actualmente para su uso con EventBridge mediante URL de función de Lambda:

  • GitHub

  • Twilio

Paso 1: Crear la pila de AWS CloudFormation

En primer lugar, utilice la consola de Amazon EventBridge para crear una pila de CloudFormation:

  1. Abra la consola de Amazon EventBridge en https://console.aws.amazon.com/events/.

  2. En el panel de navegación, seleccione Inicios rápidos.

  3. En Webhooks entrantes con URL de Lambda, seleccione Comenzar.

  4. En GitHub, seleccione Configurar.

  5. En Paso 1: Seleccionar un bus de eventos, seleccione un bus de eventos de la lista desplegable. Este bus de eventos recibe datos de la URL de función de Lambda que proporciona a GitHub. También puede crear un bus de eventos seleccionando Nuevo bus de eventos.

  6. En Paso 2: Configurar con CloudFormation, seleccione Webhook de GitHub nuevo.

  7. Seleccione Reconozco que el Webhook entrante que cree será de acceso público y seleccione Confirmar.

  8. Escriba un nombre para la pila.

  9. En los parámetros, compruebe que aparece el bus de eventos correcto y, a continuación, especifique un token seguro para el GitHubWebhookSecret. Para obtener más información sobre la creación de un token seguro, consulte Configuración del token secreto en la documentación sobre GitHub.

  10. En Capacidades y transformaciones, seleccione cada una de las siguientes opciones:

    • Reconozco que AWS CloudFormation podría crear recursos de IAM.

    • Reconozco que AWS CloudFormation podría crear recursos de IAM con nombres personalizados.

    • Reconozco que AWS CloudFormation podría requerir la siguiente capacidad: CAPABILITY_AUTO_EXPAND

  11. Seleccione Crear pila.

Paso 2: Crear un webhook de GitHub

A continuación, cree el webhook en GitHub. Necesitará el token seguro y la dirección URL de función de Lambda creada en el paso 2 para completar este paso. Para obtener más información, consulte Creación de webhooks en la documentación de GitHub.

Configurar una conexión a un Twilio

Paso 1: Buscar el token de autenticación de Twilio

Para configurar una conexión entre Twilio y EventBridge, primero configure la conexión a Twilio con el token de autenticación, o secreto, de la cuenta de Twilio. Para obtener más información, consulte Tokens de autenticación y cómo cambiarlos en la documentación sobre Twilio.

Paso 2: Crear la pila de AWS CloudFormation

  1. Abra la consola de Amazon EventBridge en https://console.aws.amazon.com/events/.

  2. En el panel de navegación, seleccione Inicios rápidos.

  3. En Webhooks entrantes con URL de Lambda, seleccione Comenzar.

  4. En Twilio, seleccione Configurar.

  5. En Paso 1: Seleccionar un bus de eventos, seleccione un bus de eventos de la lista desplegable. Este bus de eventos recibe datos de la URL de función de Lambda que proporciona a Twilio. También puede crear un bus de eventos seleccionando Nuevo bus de eventos.

  6. En Paso 2: Configurar con CloudFormation, seleccione Webhook de Twilio nuevo.

  7. Seleccione Reconozco que el Webhook entrante que cree será de acceso público y seleccione Confirmar.

  8. Escriba un nombre para la pila.

  9. En los parámetros, compruebe que aparece el bus de eventos correcto y, a continuación, introduzca el TwilioWebhookSecret que creó en el paso 1.

  10. En Capacidades y transformaciones, seleccione cada una de las siguientes opciones:

    • Reconozco que AWS CloudFormation podría crear recursos de IAM.

    • Reconozco que AWS CloudFormation podría crear recursos de IAM con nombres personalizados.

    • Reconozco que AWS CloudFormation podría requerir la siguiente capacidad: CAPABILITY_AUTO_EXPAND

  11. Seleccione Crear pila.

Paso 3: Crear un webhook de Twilio

Después de configurar la URL de función de Lambda, debe entregársela a Twilio para enviar los datos del evento. Para obtener más información, consulte Configuración de la dirección URL pública con Twilio en la documentación sobre Twilio.

Actualizar el token de autenticación o el secreto del webhook

Actualizar el secreto de GitHub

nota

GitHub no admite dos secretos a la vez. Es posible que se produzca un tiempo de inactividad de los recursos mientras el GitHub secreto y el secreto de la AWS CloudFormation pila no estén sincronizados. Los mensajes de GitHub que se envíen mientras los secretos no estén sincronizados fallarán debido a que las firmas son incorrectas. Espere a que los secretos de GitHub y de CloudFormation estén sincronizados e inténtelo de nuevo.

  1. Crea un secreto de GitHub nuevo. Para obtener más información, consulte Secreto cifrados en la documentación sobre GitHub.

  2. Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.

  3. En el panel de navegación, seleccione Pilas.

  4. Seleccione la pila para el webhook que incluye el secreto que desea actualizar.

  5. Seleccione Actualizar.

  6. Asegúrese de que la opción Usar plantilla actual esté seleccionada y seleccione Siguiente.

  7. En GitHubWebhookSecret, desactive Usar un valor existente, indique el secreto de GitHub nuevo que creó en el paso 1 y seleccione Siguiente.

  8. Seleccione Siguiente.

  9. Seleccione Actualizar pila.

Puede que el secreto tarde hasta una hora en propagarse. Para reducir este tiempo de inactividad, puede actualizar el contexto de ejecución de Lambda.

Actualizar el secreto de Twilio

nota

Twilio no admite dos secretos a la vez. Es posible que se produzca un tiempo de inactividad de los recursos mientras el secreto de Twilio y el secreto de la pila de AWS CloudFormation no estén sincronizados. Los mensajes de Twilio que se envíen mientras los secretos no estén sincronizados fallarán debido a que las firmas son incorrectas. Espere a que los secretos de Twilio y de CloudFormation estén sincronizados e inténtelo de nuevo.

  1. Crea un secreto de Twilio nuevo. Para obtener más información, consulte Tokens de autenticación y cómo cambiarlos en la documentación sobre Twilio.

  2. Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.

  3. En el panel de navegación, seleccione Pilas.

  4. Seleccione la pila para el webhook que incluye el secreto que desea actualizar.

  5. Seleccione Actualizar.

  6. Asegúrese de que la opción Usar plantilla actual esté seleccionada y seleccione Siguiente.

  7. En TwilioWebhookSecret, desmarque Usar un valor existente, indique el secreto de Twilio nuevo que creo en el paso 1 y seleccione Siguiente.

  8. Seleccione Siguiente.

  9. Seleccione Actualizar pila.

Puede que el secreto tarde hasta una hora en propagarse. Para reducir este tiempo de inactividad, puede actualizar el contexto de ejecución de Lambda.

Actualizar una función de Lambda

La función de Lambda que crea la pila CloudFormation crea el webhook básico. Si desea personalizar la función de Lambda para un caso de uso específico, como un registro personalizado, utilice la consola de CloudFormation para acceder a la función y, a continuación, utilice la consola de Lambda para actualizar el código de función de Lambda.

Acceder a la función de Lambda
  1. Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.

  2. En el panel de navegación, seleccione Pilas.

  3. Seleccione la pila del webhook que incluye la función de Lambda que desea actualizar.

  4. Seleccione la pestaña Recursos.

  5. Para abrir la función de Lambda en la consola de Lambda, en ID físico, seleccione el ID de la función de Lambda.

Ahora que ha accedido a la función de Lambda, utilice la consola de Lambda para actualizar el código de la función.

Actualizar el código de la función de Lambda
  1. En Acciones, seleccione la función Exportar.

  2. Seleccione Descargar paquete de implementación y guarde el archivo en su ordenador.

  3. Descomprima el archivo .zip del paquete de implementación, actualice el archivo app.py y comprima el paquete de implementación actualizado, asegurándose de que se incluyen todos los archivos del archivo .zip original.

  4. En la página de la consola de Lambda, seleccione la pestaña Código.

  5. En Fuente de código, seleccione Subir desde.

  6. Seleccione .zip file (Archivo .zip) y, a continuación, seleccione Subir.

    1. En el selector de archivos, seleccione el archivo que actualizó, y seleccione Abrir y, luego, Guardar.

  7. En Acciones, seleccione Publicar nueva versión.

Tipos de eventos disponibles

Los buses de eventos de CloudFormation admiten actualmente los siguientes tipos de eventos:

Cuotas, códigos de error y reintentos de entrega

Cuotas

El número de solicitudes entrantes al webhook está limitado por los servicios de AWS subyacentes. En la siguiente tabla se muestran las cuotas correspondientes.

Servicio Cuota

AWS Lambda

Predeterminada: 10 ejecuciones simultáneas

Para obtener más información acerca de las cuotas, incluso cómo solicitar un aumento, consulte Cuotas de Lambda.

AWS Secrets Manager

Predeterminada: 5000 solicitudes por segundo

Para obtener más información acerca de las cuotas, incluso cómo solicitar un aumento, consulte Cuotas de AWS Secrets Manager.

nota

El número de solicitudes por segundo se minimiza con el cliente de almacenamiento en caché AWS Secrets Manager Python.

Amazon EventBridge

Tamaño de entrada máximo de 256 KB para las acciones PutEvents.

EventBridge aplica cuotas de tarifas por región. Para obtener más información, consulte Cuotas de EventBridge.

Códigos de error

Cada servicio de AWS devuelve códigos de error específicos cuando se producen errores. En la siguiente tabla se muestran los códigos de error correspondientes.

Servicio Código de error Descripción

AWS Lambda

429 “TooManyRequestsExption”

Se ha superado la cuota de ejecución simultánea.

AWS Secrets Manager

500 “Internal Server Error”

Se ha superado la cuota de solicitudes por segundo.

Amazon EventBridge

500 “Internal Server Error”

Se ha superado la cuota de tarifas de la región.

Reintento de entrega de eventos

Cuando se produzcan errores, puede reintentar la entrega de los eventos afectados. Cada proveedor de SaaS tiene diferentes procedimientos de reintento.

GitHub

Utilice la API de webhooks de GitHub para comprobar el estado de entrega de las llamadas de webhook y vuelva a enviar el evento, si es necesario. Para obtener más información, consulte la siguiente documentación sobre GitHub:

Twilio

Los usuarios de Twilio pueden personalizar las opciones de reintento de eventos mediante anulaciones de conexión. Para obtener más información, consulte Webhooks (devoluciones de llamadas HTTP): anulaciones de conexión en la documentación sobre Twilio.