

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.

# Recibir eventos de SaaS desde una AWS Lambda función URLs en Amazon EventBridge
<a name="eb-saas-furls"></a>

**nota**  
Para que nuestros socios puedan acceder al Webhook entrante, estamos creando un Open Lambda en su AWS cuenta que está protegido 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 la función URLs Lambda](https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html#urls-auth-none).

Tu [bus de EventBridge eventos](eb-event-bus.md) de Amazon puede usar una [URL de AWS Lambda función](https://docs.aws.amazon.com/lambda/latest/dg/lambda-urls.html) creada por una CloudFormation plantilla para recibir [eventos de proveedores](eb-events.md) de SaaS compatibles. Con la función URLs, los datos del evento se envían a una función Lambda. A continuación, la función convierte estos datos en un evento que puede ser ingerido EventBridge y enviado 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 la función Lambda URLs aumentará sus costos mensuales. Para obtener más información, consulte [Precios de AWS Lambda](https://aws.amazon.com/lambda/pricing).

Para configurar una conexión EventBridge, primero debe seleccionar el proveedor de SaaS con el que desea configurar una conexión. A continuación, proporciona un *secreto de firma* que ha creado con ese proveedor y selecciona el bus de EventBridge eventos al que desea enviar los eventos. Por último, utilizas una CloudFormation plantilla y creas los recursos necesarios para completar la conexión. 

Los siguientes proveedores de SaaS están disponibles actualmente para su uso con la función EventBridge Lambda: URLs
+ GitHub
+ Twilio

**Topics**
+ [Paso 1: Crear la pila CloudFormation](#create-gh-cfn-stack)
+ [Paso 2: Crear un webhook de GitHub](#create-gh-webhook)
+ [Configurar una conexión a un Twilio](#furls-connection-twilio)
+ [Actualizar el token de autenticación o el secreto del webhook](#furls-update-secret)
+ [Actualizar una función de Lambda](#furls-update-function)
+ [Tipos de eventos disponibles](#furls-event-types)
+ [Cuotas, códigos de error y reintentos de entrega](#furls-quotas-errors)

## Paso 1: Crear la pila CloudFormation
<a name="create-gh-cfn-stack"></a>

 Primero, usa la EventBridge consola de Amazon para crear una CloudFormation pila:

1. Abre la EventBridge consola de Amazon en [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

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

1. **En **Webhooks entrantes con Lambda f URLs**, selecciona Comenzar.**

1. En **GitHub**, seleccione **Configurar**.

1. 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**.

1. **En el **paso 2: Configurar el uso CloudFormation**, selecciona Nuevo webhook. GitHub**

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

1. Escriba un nombre para la pila.

1. 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](https://docs.github.com/en/developers/webhooks-and-events/webhooks/securing-your-webhooks#setting-your-secret-token) en la documentación sobre GitHub.

1. En **Capacidades y transformaciones**, seleccione cada una de las siguientes opciones:
   + **Reconozco que eso CloudFormation podría crear recursos de IAM.**
   + **Reconozco que eso CloudFormation podría crear recursos de IAM con nombres personalizados.**
   + **Reconozco que CloudFormation podría requerir la siguiente capacidad: `CAPABILITY_AUTO_EXPAND`**

1. Seleccione **Crear pila**.

## Paso 2: Crear un webhook de GitHub
<a name="create-gh-webhook"></a>

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](https://docs.github.com/en/developers/webhooks-and-events/webhooks/creating-webhooks) en la documentación de GitHub.

## Configurar una conexión a un Twilio
<a name="furls-connection-twilio"></a>

### Paso 1: Buscar el token de autenticación de Twilio
<a name="create-twilio-secret"></a>

Para configurar una conexión entre Twilio y EventBridge, primero configura la conexión Twilio con el token de autenticación, o secreto, de tu Twilio cuenta. Para obtener más información, consulte [Tokens de autenticación y cómo cambiarlos](https://support.twilio.com/hc/en-us/articles/223136027-Auth-Tokens-and-How-to-Change-Them) en la documentación sobre Twilio.

### Paso 2: Crea la pila CloudFormation
<a name="create-twilio-cfn-stack"></a>

1. Abre la EventBridge consola de Amazon en [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

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

1. **En **Webhooks entrantes con Lambda f URLs**, selecciona Comenzar.**

1. En **Twilio**, seleccione **Configurar**.

1. 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**.

1. **En el **paso 2: Configurar el uso CloudFormation**, selecciona Nuevo webhook. Twilio**

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

1. Escriba un nombre para la pila.

1. 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.

1. En **Capacidades y transformaciones**, seleccione cada una de las siguientes opciones:
   + **Reconozco que eso CloudFormation podría crear recursos de IAM.**
   + **Reconozco que eso CloudFormation podría crear recursos de IAM con nombres personalizados.**
   + **Reconozco que CloudFormation podría requerir la siguiente capacidad: CAPABILITY\$1AUTO\$1EXPAND**

1. Seleccione **Crear pila**.

### Paso 3: Crear un webhook de Twilio
<a name="create-twilio-webhook"></a>

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](https://www.twilio.com/docs/usage/webhooks/getting-started-twilio-webhooks#configure-your-public-url-with-twilio) en la documentación sobre Twilio.

## Actualizar el token de autenticación o el secreto del webhook
<a name="furls-update-secret"></a>

### Actualizar el secreto de GitHub
<a name="update-gh-secret"></a>

**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 CloudFormation pila no estén sincronizados. GitHubLos mensajes que se envíen mientras los secretos no estén sincronizados fallarán debido a que las firmas son incorrectas. Espera a que los CloudFormation secretos GitHub y los secretos estén sincronizados e inténtalo de nuevo.

1. Crea un secreto de GitHub nuevo. Para obtener más información, consulte [Secreto cifrados](https://docs.github.com/en/actions/security-guides/encrypted-secrets) en la documentación sobre GitHub.

1. Abre la CloudFormation consola en [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. En el panel de navegación, seleccione **Pilas**.

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

1. Seleccione **Actualizar**.

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

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

1. Elija **Siguiente**.

1. 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
<a name="update-twilio-secret"></a>

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

1. Crea un secreto de Twilio nuevo. Para obtener más información, consulte [Tokens de autenticación y cómo cambiarlos](https://support.twilio.com/hc/en-us/articles/223136027-Auth-Tokens-and-How-to-Change-Them) en la documentación sobre Twilio.

1. Abre la CloudFormation consola en [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. En el panel de navegación, seleccione **Pilas**.

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

1. Seleccione **Actualizar**.

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

1. **En **TwilioWebhookSecret**, desactive **Usar un valor existente**, introduzca el nuevo Twilio secreto que creó en el paso 1 y seleccione Siguiente.**

1. Elija **Siguiente**.

1. 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
<a name="furls-update-function"></a>

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

**Acceder a la función de Lambda**

1. [Abra la CloudFormation consola en /cloudformation. https://console.aws.amazon.com](https://console.aws.amazon.com/cloudformation/)

1. En el panel de navegación, seleccione **Pilas**.

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

1. Seleccione la pestaña **Recursos**.

1. 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**.

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

1. 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.

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

1. En **Fuente de código**, seleccione **Subir desde**.

1. 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**.

1. En **Acciones**, seleccione **Publicar nueva versión**.

## Tipos de eventos disponibles
<a name="furls-event-types"></a>

Los buses de eventos admiten actualmente los siguientes tipos de CloudFormation eventos:
+ **GitHub**— Se admiten [todos los tipos de eventos](https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads).
+ **Twilio**: se admiten los [webhooks posteriores al evento](https://www.twilio.com/docs/chat/webhook-events).

## Cuotas, códigos de error y reintentos de entrega
<a name="furls-quotas-errors"></a>

### Cuotas
<a name="furls-quotas"></a>

El número de solicitudes entrantes al webhook está limitado por los AWS servicios 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](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html).  | 
|  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](https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_limits.html). El número de solicitudes por segundo se minimiza con el [cliente de almacenamiento en cachéAWS Secrets Manager Python](https://github.com/aws/aws-secretsmanager-caching-python#cache-configuration).  | 
|  Amazon EventBridge  |  Tamaño máximo de entrada de 1 MB para PutEvents las acciones.  EventBridge aplica cuotas tarifarias basadas en la región. Para obtener más información, consulte [EventBridge cuotas de bus de eventos](eb-quota.md#eb-limits).  | 

### Códigos de error
<a name="furls-errors"></a>

Cada AWS servicio 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 | Description (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
<a name="furls-redelivery"></a>

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

#### GitHub
<a name="furls-redelivery-github"></a>

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:
+ **Organización**: [reintente una entrega para un webhook de organización](https://docs.github.com/en/rest/orgs/webhooks#redeliver-a-delivery-for-an-organization-webhook)
+ **Repositorio**: [reintente una entrega para un webhook de repositorio](https://docs.github.com/en/rest/webhooks/repo-deliveries#redeliver-a-delivery-for-a-repository-webhook)
+ **Aplicación**: [reintente una entrega para un webhook de aplicación](https://docs.github.com/en/rest/apps/webhooks#redeliver-a-delivery-for-an-app-webhook)

#### Twilio
<a name="furls-redelivery-twilio"></a>

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](https://www.twilio.com/docs/usage/webhooks/webhooks-connection-overrides) en la documentación sobre Twilio.