

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Réception d'événements SaaS depuis AWS Lambda une fonction URLs sur Amazon EventBridge
<a name="eb-saas-furls"></a>

**Note**  
Pour que le webhook entrant soit accessible à nos partenaires, nous créons un Open Lambda dans votre AWS compte qui est sécurisé au niveau de l'application Lambda en vérifiant la signature d'authentification envoyée par le partenaire tiers. Vérifiez cette configuration avec votre équipe de sécurité. Pour plus d'informations, voir [Modèle de sécurité et d'authentification pour la fonction URLs Lambda](https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html#urls-auth-none).

Votre [bus d' EventBridge événements](eb-event-bus.md) Amazon peut utiliser une [URL de AWS Lambda fonction](https://docs.aws.amazon.com/lambda/latest/dg/lambda-urls.html) créée par un CloudFormation modèle pour recevoir des [événements](eb-events.md) provenant de fournisseurs SaaS pris en charge. Avec function URLs, les données d'événement sont envoyées à une fonction Lambda. La fonction convertit ensuite ces données en un événement qui peut être ingéré EventBridge et envoyé à un bus d'événements pour traitement. Une fois que l’événement est sur un bus d’événements, vous pouvez utiliser des règles pour filtrer les événements, appliquer les éventuelles transformations d’entrée configurées, puis les router vers la cible appropriée. 

**Note**  
La création de la fonction Lambda URLs augmentera vos coûts mensuels. Pour en savoir plus, consultez [Pricing AWS Lambda](https://aws.amazon.com/lambda/pricing) (Tarification).

Pour configurer une connexion EventBridge, vous devez d'abord sélectionner le fournisseur SaaS avec lequel vous souhaitez établir une connexion. Ensuite, vous fournissez un *secret de signature* que vous avez créé avec ce fournisseur et vous sélectionnez le bus d' EventBridge événements auquel envoyer les événements. Enfin, vous utilisez un CloudFormation modèle et créez les ressources nécessaires pour terminer la connexion. 

Les fournisseurs SaaS suivants sont actuellement disponibles pour EventBridge utiliser la fonction Lambda : URLs
+ GitHub
+ Twilio

**Topics**
+ [Étape 1 : Création de la CloudFormation pile](#create-gh-cfn-stack)
+ [Étape 2 : Créer un webhook GitHub](#create-gh-webhook)
+ [Configuration d’une connexion à Twilio](#furls-connection-twilio)
+ [Mise à jour du secret ou du jeton d’authentification d’un webhook](#furls-update-secret)
+ [Mise à jour d’une fonction Lambda](#furls-update-function)
+ [Types d’événements disponibles](#furls-event-types)
+ [Quotas, codes d’erreur et nouvelle tentative de livraison](#furls-quotas-errors)

## Étape 1 : Création de la CloudFormation pile
<a name="create-gh-cfn-stack"></a>

 Tout d'abord, utilisez la EventBridge console Amazon pour créer une CloudFormation pile :

1. Ouvrez la EventBridge console Amazon à l'adresse [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. Dans le volet de navigation, choisissez **Quick Starts**.

1. **Sous **Webhooks entrants utilisant Lambda f URLs**, choisissez Get started.**

1. Sous **GitHub**, choisissez **Configurer**.

1. Sous **Étape 1 : Sélectionner un bus d’événements**, sélectionnez un bus d’événements dans la liste déroulante. Ce bus d’événements reçoit les données de l’URL de fonction Lambda que vous fournissez à GitHub. Vous pouvez également créer un bus d’événements en sélectionnant **Nouveau bus d’événements**.

1. Dans **Étape 2 : Configuration à l'aide** de CloudFormation, choisissez **Nouveau GitHub webhook**.

1. Sélectionnez **Je reconnais que le webhook entrant que je crée sera accessible au public** et choisissez **Confirmer**.

1. Entrez un nom pour la pile.

1. Sous les paramètres, vérifiez que le bus d’événements correct est répertorié, puis spécifiez un jeton sécurisé pour **GitHubWebhookSecret**. Pour plus d’informations sur la création d’un jeton sécurisé, consultez [Définition de votre jeton secret](https://docs.github.com/en/developers/webhooks-and-events/webhooks/securing-your-webhooks#setting-your-secret-token) (langue française non garantie) dans la documentation de GitHub.

1. Sous **Fonctionnalités et transformations**, sélectionnez chacune des options suivantes :
   + **Je reconnais que cela CloudFormation peut créer des ressources IAM.**
   + **Je reconnais que cela CloudFormation peut créer des ressources IAM avec des noms personnalisés.**
   + **Je reconnais que CloudFormation cela peut nécessiter les capacités suivantes : `CAPABILITY_AUTO_EXPAND`**

1. Sélectionnez **Créer la pile**.

## Étape 2 : Créer un webhook GitHub
<a name="create-gh-webhook"></a>

Créez ensuite le webhook sur GitHub. Vous aurez besoin du jeton sécurisé et de l’URL de fonction Lambda que vous avez créés à l’étape 2 pour terminer cette étape. Pour plus d’informations, consultez [Création de webhooks](https://docs.github.com/en/developers/webhooks-and-events/webhooks/creating-webhooks) (langue française non garantie) dans la documentation de GitHub.

## Configuration d’une connexion à Twilio
<a name="furls-connection-twilio"></a>

### Étape 1 : Rechercher votre jeton d’authentification Twilio
<a name="create-twilio-secret"></a>

Pour établir une connexion entre Twilio et EventBridge, configurez d'abord la connexion Twilio avec le jeton d'authentification, ou secret, de votre Twilio compte. Pour plus d’informations, consultez [Jetons d’authentification et comment les modifier](https://support.twilio.com/hc/en-us/articles/223136027-Auth-Tokens-and-How-to-Change-Them) (langue française non garantie) dans la documentation de Twilio.

### Étape 2 : Création de la CloudFormation pile
<a name="create-twilio-cfn-stack"></a>

1. Ouvrez la EventBridge console Amazon à l'adresse [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. Dans le volet de navigation, choisissez **Quick Starts**.

1. **Sous **Webhooks entrants utilisant Lambda f URLs**, choisissez Get started.**

1. Sous **Twilio**, choisissez **Configurer**.

1. Sous **Étape 1 : Sélectionner un bus d’événements**, sélectionnez un bus d’événements dans la liste déroulante. Ce bus d’événements reçoit les données de l’URL de fonction Lambda que vous fournissez à Twilio. Vous pouvez également créer un bus d’événements en sélectionnant **Nouveau bus d’événements**.

1. Dans **Étape 2 : Configuration à l'aide** de CloudFormation, choisissez **Nouveau Twilio webhook**.

1. Sélectionnez **Je reconnais que le webhook entrant que je crée sera accessible au public** et choisissez **Confirmer**.

1. Entrez un nom pour la pile.

1. Sous les paramètres, vérifiez que le bus d’événements correct est répertorié, puis entrez le secret **TwilioWebhookSecret** que vous avez créé à l’étape 1.

1. Sous **Fonctionnalités et transformations**, sélectionnez chacune des options suivantes :
   + **Je reconnais que cela CloudFormation peut créer des ressources IAM.**
   + **Je reconnais que cela CloudFormation peut créer des ressources IAM avec des noms personnalisés.**
   + **Je reconnais que cela CloudFormation peut nécessiter la capacité suivante : CAPABILITY\_AUTO\_EXPAND**

1. Sélectionnez **Créer la pile**.

### Étape 3 : Créer un webhook Twilio
<a name="create-twilio-webhook"></a>

Après avoir configuré l’URL de fonction Lambda, vous devez la communiquer à Twilio afin que les données d’événements puissent être envoyées. Pour plus d’informations, consultez [Configuration de votre URL publique avec Twilio](https://www.twilio.com/docs/usage/webhooks/getting-started-twilio-webhooks#configure-your-public-url-with-twilio) (langue française non garantie) dans la documentation de Twilio.

## Mise à jour du secret ou du jeton d’authentification d’un webhook
<a name="furls-update-secret"></a>

### Mise à jour d’un secret GitHub
<a name="update-gh-secret"></a>

**Note**  
GitHub ne permet pas d’avoir deux secrets en même temps. Il est possible que les ressources soient indisponibles lorsque le GitHub secret et le secret de la CloudFormation pile ne sont pas synchronisés. GitHubles messages envoyés alors que les secrets ne sont pas synchronisés échoueront en raison de signatures incorrectes. Attendez que les CloudFormation secrets GitHub et soient synchronisés, puis réessayez.

1. Créez un secret GitHub. Pour plus d’informations, consultez [Secrets chiffrés](https://docs.github.com/en/actions/security-guides/encrypted-secrets) (langue française non garantie) dans la documentation de GitHub.

1. Ouvrez la CloudFormation console à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Choisissez **Piles** dans le volet de navigation.

1. Choisissez la pile du webhook qui inclut le secret que vous souhaitez mettre à jour.

1. Choisissez **Mettre à jour**.

1. Assurez-vous que l’option **Utiliser modèle en cours** est sélectionnée, puis choisissez **Suivant**.

1. Sous **GitHubWebhookSecret**, décochez **Utiliser la valeur existante**, entrez le nouveau GitHub secret que vous avez créé à l'étape 1, puis choisissez **Suivant**.

1. Choisissez **Suivant**.

1. Choisissez **Mettre à jour la pile**.

La propagation du secret peut prendre jusqu’à une heure. Pour réduire ce temps d’arrêt, vous pouvez actualiser le contexte d’exécution Lambda.

### Mise à jour d’un secret Twilio
<a name="update-twilio-secret"></a>

**Note**  
Twilio ne permet pas d’avoir deux secrets en même temps. Il est possible que les ressources soient indisponibles lorsque le Twilio secret et le secret de la CloudFormation pile ne sont pas synchronisés. Twilioles messages envoyés alors que les secrets ne sont pas synchronisés échoueront en raison de signatures incorrectes. Attendez que les CloudFormation secrets Twilio et soient synchronisés, puis réessayez.

1. Créez un secret Twilio. Pour plus d’informations, consultez [Jetons d’authentification et comment les modifier](https://support.twilio.com/hc/en-us/articles/223136027-Auth-Tokens-and-How-to-Change-Them) (langue française non garantie) dans la documentation de Twilio.

1. Ouvrez la CloudFormation console à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Choisissez **Piles** dans le volet de navigation.

1. Choisissez la pile du webhook qui inclut le secret que vous souhaitez mettre à jour.

1. Choisissez **Mettre à jour**.

1. Assurez-vous que l’option **Utiliser modèle en cours** est sélectionnée, puis choisissez **Suivant**.

1. Sous **TwilioWebhookSecret**, décochez **Utiliser la valeur existante**, entrez le nouveau Twilio secret que vous avez créé à l'étape 1, puis choisissez **Suivant**.

1. Choisissez **Suivant**.

1. Choisissez **Mettre à jour la pile**.

La propagation du secret peut prendre jusqu’à une heure. Pour réduire ce temps d’arrêt, vous pouvez actualiser le contexte d’exécution Lambda.

## Mise à jour d’une fonction Lambda
<a name="furls-update-function"></a>

La fonction Lambda créée par la CloudFormation pile crée le webhook de base. Si vous souhaitez personnaliser la fonction Lambda pour un cas d'utilisation spécifique, tel que la journalisation personnalisée, utilisez la console pour accéder à la fonction, puis utilisez la CloudFormation console Lambda pour mettre à jour le code de la fonction Lambda.

**Accès à la fonction Lambda**

1. Ouvrez la CloudFormation console à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Choisissez **Piles** dans le volet de navigation.

1. Choisissez la pile pour le webhook qui inclut la fonction Lambda que vous souhaitez mettre à jour.

1. Cliquez sur l’onglet **Ressources**.

1. Pour ouvrir la fonction Lambda dans la console Lambda, sous **ID physique**, choisissez l’ID de la fonction Lambda.

Maintenant que vous avez accédé à la fonction Lambda, utilisez la console Lambda pour mettre à jour le code de la fonction.

**Mise à jour du code de la fonction Lambda**

1. Sous **Actions**, choisissez **Exporter la fonction**.

1. Choisissez **Télécharger un package de déploiement**, puis enregistrez le fichier sur votre ordinateur.

1. Décompressez le fichier .zip du package de déploiement, mettez à jour le fichier `app.py`, puis compressez le package de déploiement à jour, en vous assurant que tous les fichiers du fichier .zip d’origine sont inclus.

1. Dans la console Lambda, cliquez sur l’onglet **Code**.

1. Sous **Code source** (Source du code), sélectionnez **Upload from** (Charger depuis).

1. Choisissez **.zip file (fichier .zip)**, puis **Upload (Charger)**. 

   1. Dans le sélecteur de fichiers, sélectionnez le fichier que vous avez mis à jour, choisissez **Ouvrir**, puis **Enregistrer**.

1. Sous **Actions**, choisissez **Publier une nouvelle version**.

## Types d’événements disponibles
<a name="furls-event-types"></a>

Les types d'événements suivants sont actuellement pris en charge par les bus CloudFormation d'événements :
+ **GitHub**— [Tous les types d'événements](https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads) sont pris en charge.
+ **Twilio** : les [webhooks post-événement](https://www.twilio.com/docs/chat/webhook-events) sont pris en charge.

## Quotas, codes d’erreur et nouvelle tentative de livraison
<a name="furls-quotas-errors"></a>

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

Le nombre de demandes entrantes adressées au webhook est plafonné par les services sous-jacents AWS . Le tableau suivant inclut les quotas correspondants.


| Service | Quota | 
| --- | --- | 
| AWS Lambda | Par défaut : 10 exécutions simultanées<br />Pour plus d’informations sur les quotas, notamment sur la demande d’augmentation des quotas, consultez [Quotas Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html). | 
| AWS Secrets Manager | Par défaut : 5 000 demandes par seconde<br />Pour plus d’informations sur les quotas, notamment sur la demande d’augmentation des quotas, consultez [Quotas AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_limits.html).Le nombre de demandes par seconde est réduit au maximum à l’aide du [client de mise en cache AWS Secrets Manager Python](https://github.com/aws/aws-secretsmanager-caching-python#cache-configuration). | 
| Amazon EventBridge | Taille d'entrée maximale de 1 Mo pour les PutEvents actions. <br />EventBridge applique les quotas tarifaires basés sur les régions. Pour de plus amples informations, veuillez consulter [EventBridge quotas de bus événementiels](eb-quota.md#eb-limits). | 

### Codes d’erreur
<a name="furls-errors"></a>

Chaque AWS service renvoie des codes d'erreur spécifiques en cas d'erreur. Le tableau suivant inclut les codes d’erreur correspondants.


| Service | Code d’erreur | Description | 
| --- | --- | --- | 
| AWS Lambda | 429 « TooManyRequestsExption » | Le quota d’exécutions simultanées est dépassé. | 
| AWS Secrets Manager | 500 « Erreur de serveur interne » | Le quota de demandes par seconde est dépassé. | 
| Amazon EventBridge | 500 « Erreur de serveur interne » | Le quota de taux est dépassé pour la région. | 

### Nouvelle livraison d’événements
<a name="furls-redelivery"></a>

En cas d’erreur, vous pouvez réessayer de livrer les événements concernés. Chaque fournisseur SaaS dispose de procédures de nouvelle tentative différentes.

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

Utilisez l’API des webhooks GitHub pour le statut de livraison des appels webhooks et relivrer l’événement, si nécessaire. Pour plus d’informations, consultez la documentation de GitHub suivante :
+ **Organisation** : [Nouvelle livraison pour un webhook d’organisation](https://docs.github.com/en/rest/orgs/webhooks#redeliver-a-delivery-for-an-organization-webhook) (langue française non garantie)
+ **Référentiel** : [Nouvelle livraison pour un webhook de référentiel](https://docs.github.com/en/rest/webhooks/repo-deliveries#redeliver-a-delivery-for-a-repository-webhook) (langue française non garantie)
+ **Application** : [Nouvelle livraison pour un webhook d’application](https://docs.github.com/en/rest/apps/webhooks#redeliver-a-delivery-for-an-app-webhook) (langue française non garantie)

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

Les utilisateurs de Twilio peuvent personnaliser les options de nouvelle tentative de livraison d’événement en utilisant des remplacements de connexion. Pour plus d’informations, consultez [Webhooks (rappels HTTP) : Remplacements de connexion](https://www.twilio.com/docs/usage/webhooks/webhooks-connection-overrides) (langue française non garantie) dans la documentation de Twilio.