

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Recebendo eventos SaaS de uma AWS Lambda função URLs na Amazon EventBridge
<a name="eb-saas-furls"></a>

**nota**  
Para que o Inbound Webhook possa ser acessado por nossos parceiros, estamos criando um Open Lambda em sua AWS conta que é protegido no nível do aplicativo Lambda, verificando a assinatura de autenticação enviada pelo parceiro terceirizado. Revise esta configuração com sua equipe de segurança. Para obter mais informações, consulte [Modelo de segurança e autenticação para a função URLs Lambda](https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html#urls-auth-none).

Seu [barramento de EventBridge eventos](eb-event-bus.md) da Amazon pode usar uma [URL de AWS Lambda função](https://docs.aws.amazon.com/lambda/latest/dg/lambda-urls.html) criada por um CloudFormation modelo para receber [eventos de provedores](eb-events.md) de SaaS compatíveis. Com a função URLs, os dados do evento são enviados para uma função Lambda. Em seguida, a função converte esses dados em um evento que pode ser ingerido EventBridge e enviado para um barramento de eventos para processamento. Quando o evento estiver em um barramento de eventos, será possível usar regras para filtrar os eventos, aplicar qualquer transformação de entrada configurada e, em seguida, roteá-lo para o destino correto. 

**nota**  
A criação da função Lambda URLs aumentará seus custos mensais. Para obter mais informações, consulte [Preços do AWS Lambda](https://aws.amazon.com/lambda/pricing).

Para configurar uma conexão EventBridge, primeiro selecione o provedor de SaaS com o qual deseja configurar uma conexão. Em seguida, você fornece um *segredo de assinatura* criado com esse provedor e seleciona o ônibus de EventBridge eventos para o qual enviar eventos. Por fim, você usa um CloudFormation modelo e cria os recursos necessários para concluir a conexão. 

Atualmente, os seguintes provedores de SaaS estão disponíveis para uso com o uso da função EventBridge Lambda: URLs
+ GitHub
+ Twilio

**Topics**
+ [Etapa 1: criar a CloudFormation pilha](#create-gh-cfn-stack)
+ [Etapa 2: criar um webhook do GitHub](#create-gh-webhook)
+ [Configure uma conexão para um Twilio:](#furls-connection-twilio)
+ [Atualizar o segredo do webhook ou o token de autenticação](#furls-update-secret)
+ [Atualizar função do Lambda](#furls-update-function)
+ [Tipos de eventos disponíveis](#furls-event-types)
+ [Cotas, códigos de erro e novas tentativas de entrega](#furls-quotas-errors)

## Etapa 1: criar a CloudFormation pilha
<a name="create-gh-cfn-stack"></a>

 Primeiro, use o EventBridge console da Amazon para criar uma CloudFormation pilha:

1. Abra o EventBridge console da Amazon em [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. Do painel de navegação, escolha **Quick starts**.

1. **Em **Webhooks de entrada usando Lambda f URLs**, escolha Começar.**

1. Em **GitHub**, escolha **Configurar**.

1. Em **Etapa 1: selecionar um barramento de eventos**, selecione um barramento de eventos na lista suspensa. Esse barramento de eventos recebe dados do URL da função do Lambda fornecida para o GitHub. Também é possível criar um barramento de eventos selecionando **Novo barramento de eventos**.

1. Em **Etapa 2: Configurar usando CloudFormation**, escolha **Novo GitHub webhook**.

1. Selecione **Eu confirmo que o Webhook de entrada que criei estará acessível ao público** e escolha **Confirmar**.

1. Insira um nome para a pilha.

1. Em parâmetros, verifique se o barramento de eventos correto está listado e, em seguida, especifique um token seguro para o **GitHubWebhookSecret**. Para obter mais informações sobre como criar um token seguro, consulte [Como configurar seu token secreto](https://docs.github.com/en/developers/webhooks-and-events/webhooks/securing-your-webhooks#setting-your-secret-token) na documentação do GitHub.

1. Em **Capacidades e transformações**, selecione cada uma das seguintes opções:
   + **Eu reconheço que isso CloudFormation pode criar recursos do IAM.**
   + **Eu reconheço que isso CloudFormation pode criar recursos do IAM com nomes personalizados.**
   + **Eu reconheço que isso CloudFormation pode exigir a seguinte capacidade: `CAPABILITY_AUTO_EXPAND`**

1. Selecione **Criar pilha**.

## Etapa 2: criar um webhook do GitHub
<a name="create-gh-webhook"></a>

Em seguida, crie o webhook no GitHub. Será necessário o token seguro e da URL da função do Lambda criados na etapa 2 para concluir esta etapa. Para obter mais informações, consulte [Como criar webhooks](https://docs.github.com/en/developers/webhooks-and-events/webhooks/creating-webhooks) na documentação do GitHub.

## Configure uma conexão para um Twilio:
<a name="furls-connection-twilio"></a>

### Etapa 1: encontrar seu token de autenticação Twilio
<a name="create-twilio-secret"></a>

Para configurar uma conexão entre Twilio e EventBridge, primeiro configure a conexão Twilio com o token de autenticação, ou segredo, da sua Twilio conta. Para obter mais informações, consulte [Tokens de autenticação e como alterá-los](https://support.twilio.com/hc/en-us/articles/223136027-Auth-Tokens-and-How-to-Change-Them) na documentação do Twilio.

### Etapa 2: criar a CloudFormation pilha
<a name="create-twilio-cfn-stack"></a>

1. Abra o EventBridge console da Amazon em [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/).

1. No painel de navegação, escolha **Quick starts**.

1. **Em **Webhooks de entrada usando Lambda f URLs**, escolha Começar.**

1. Em **Twilio**, escolha **Configurar**.

1. Em **Etapa 1: selecionar um barramento de eventos**, selecione um barramento de eventos na lista suspensa. Esse barramento de eventos recebe dados do URL da função do Lambda fornecida para o Twilio. Também é possível criar um barramento de eventos selecionando **Novo barramento de eventos**.

1. Em **Etapa 2: Configurar usando CloudFormation**, escolha **Novo Twilio webhook**.

1. Selecione **Eu confirmo que o Webhook de entrada que criei estará acessível ao público** e escolha **Confirmar**.

1. Insira um nome para a pilha.

1. Em parâmetros, verifique se o barramento de eventos correto está listado e, em seguida, insira o **TwilioWebhookSecret** criado na etapa 1.

1. Em **Capacidades e transformações**, selecione cada uma das seguintes opções:
   + **Eu reconheço que isso CloudFormation pode criar recursos do IAM.**
   + **Eu reconheço que isso CloudFormation pode criar recursos do IAM com nomes personalizados.**
   + **Eu reconheço que isso CloudFormation pode exigir o seguinte recurso: CAPABILITY\$1AUTO\$1EXPAND**

1. Selecione **Criar pilha**.

### Etapa 3: criar um webhook do Twilio
<a name="create-twilio-webhook"></a>

Depois de configurar a URL da função do Lambda, é preciso fornecê-la ao Twilio para que os dados do evento possam ser enviados. Para obter mais informações, consulte [Configurar seu URL público com o Twilio](https://www.twilio.com/docs/usage/webhooks/getting-started-twilio-webhooks#configure-your-public-url-with-twilio) na documentação do Twilio.

## Atualizar o segredo do webhook ou o token de autenticação
<a name="furls-update-secret"></a>

### Atualizar segredo do GitHub
<a name="update-gh-secret"></a>

**nota**  
O GitHub não é compatível com dois segredos ao mesmo tempo. Você pode passar por um tempo de inatividade dos recursos enquanto o GitHub segredo e o segredo na CloudFormation pilha estão fora de sincronia. GitHubas mensagens enviadas enquanto os segredos estiverem fora de sincronia falharão devido a assinaturas incorretas. GitHubEspere até que os CloudFormation segredos e estejam sincronizados e tente novamente.

1. Criar um novo segredo do GitHub. Para obter mais informações, consulte [Segredos criptografados](https://docs.github.com/en/actions/security-guides/encrypted-secrets) na documentação do GitHub.

1. Abra o CloudFormation console em [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Do painel de navegação, escolha **Pilhas**.

1. Escolha a pilha do webhook que inclui o segredo que deseja atualizar.

1. Selecione **Atualizar**.

1. Verifique se a opção **Usar modelo atual** está selecionada e escolha **Avançar**.

1. Em **GitHubWebhookSecret**, desmarque **Usar valor existente**, insira o novo GitHub segredo que você criou na etapa 1 e escolha **Avançar**.

1. Escolha **Próximo**.

1. Escolha **Atualizar pilha**.

Pode levar até uma hora para que o segredo seja propagado. Para reduzir esse tempo de inatividade, é possível atualizar o contexto de execução do Lambda.

### Atualizar segredo do Twilio
<a name="update-twilio-secret"></a>

**nota**  
O Twilio não é compatível com dois segredos ao mesmo tempo. Você pode passar por um tempo de inatividade dos recursos enquanto o Twilio segredo e o segredo na CloudFormation pilha estão fora de sincronia. Twilioas mensagens enviadas enquanto os segredos estiverem fora de sincronia falharão devido a assinaturas incorretas. TwilioEspere até que os CloudFormation segredos e estejam sincronizados e tente novamente.

1. Criar um novo segredo do Twilio. Para obter mais informações, consulte [Tokens de autenticação e como alterá-los](https://support.twilio.com/hc/en-us/articles/223136027-Auth-Tokens-and-How-to-Change-Them) na documentação do Twilio.

1. Abra o CloudFormation console em [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Do painel de navegação, escolha **Pilhas**.

1. Escolha a pilha do webhook que inclui o segredo que deseja atualizar.

1. Selecione **Atualizar**.

1. Verifique se a opção **Usar modelo atual** está selecionada e escolha **Avançar**.

1. Em **TwilioWebhookSecret**, desmarque **Usar valor existente**, insira o novo Twilio segredo que você criou na etapa 1 e escolha **Avançar**.

1. Escolha **Próximo**.

1. Escolha **Atualizar pilha**.

Pode levar até uma hora para que o segredo seja propagado. Para reduzir esse tempo de inatividade, é possível atualizar o contexto de execução do Lambda.

## Atualizar função do Lambda
<a name="furls-update-function"></a>

A função Lambda criada pela CloudFormation pilha cria o webhook básico. Se você quiser personalizar a função Lambda para um caso de uso específico, como registro personalizado, use o CloudFormation console para acessar a função e, em seguida, use o console Lambda para atualizar o código da função Lambda.

**Acesse a função do Lambda**

1. Abra o CloudFormation console em [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Do painel de navegação, escolha **Pilhas**.

1. Escolha a pilha do webhook que inclui a função do Lambda que deseja atualizar.

1. Escolha a guia **Recursos**.

1. Para abrir a função do Lambda no console Lambda, em **Physical ID**, escolha a ID da função do Lambda.

Agora que acessou a função do Lambda, use o console do Lambda para atualizar o código da função.

**Atualizar o código de função do Lambda**

1. Em **Ações**, escolha **Exportar função**.

1. Escolha **Baixar pacote de implantação** e salve o arquivo no computador.

1. Descompacte o arquivo.zip do pacote de implantação, atualize o arquivo `app.py` e compacte o pacote de implantação atualizado, certificando-se de que todos os arquivos no arquivo.zip original estejam incluídos.

1. No console do Lambda, escolha a guia **Código**.

1. Em **Fonte de código)**, escolha **Fazer upload de**.

1. Escolha **Arquivo .zip** e **Fazer upload**. 

   1. No seletor de arquivos, selecione a nova versão da imagem e escolha **Abrir** e **Salvar**.

1. Em **Ações**, escolha **Publicar nova versão**.

## Tipos de eventos disponíveis
<a name="furls-event-types"></a>

Atualmente, os seguintes tipos de eventos são compatíveis com CloudFormation barramentos de eventos:
+ **GitHub**— [Todos os tipos de eventos](https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads) são suportados.
+ **Twilio**: [webhooks pós-evento](https://www.twilio.com/docs/chat/webhook-events) são compatíveis

## Cotas, códigos de erro e novas tentativas de entrega
<a name="furls-quotas-errors"></a>

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

O número de solicitações recebidas para o webhook é limitado pelos serviços subjacentes. AWS A tabela a seguir inclui as cotas relevantes.


| Serviço | Quota | 
| --- | --- | 
|  AWS Lambda  |  Padrão: 10 execuções simultâneas Para obter mais informações sobre cotas, incluindo a solicitação de aumentos de cotas, consulte [Cotas do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html).  | 
|  AWS Secrets Manager  |  Padrão: cinco mil solicitações por segundo Para obter mais informações sobre cotas, incluindo a solicitação de aumentos de cota, consulte [Cotas de serviço do AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_limits.html). O número de solicitações por segundo é minimizado usando o [cliente de cache em Python do AWS Secrets Manager](https://github.com/aws/aws-secretsmanager-caching-python#cache-configuration).  | 
|  Amazon EventBridge  |  Tamanho máximo de entrada de 1 MB para PutEvents ações.  EventBridge impõe cotas tarifárias baseadas na região. Para obter mais informações, consulte [EventBridge cotas de ônibus para eventos](eb-quota.md#eb-limits).  | 

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

Cada AWS serviço retorna códigos de erro específicos quando ocorrem erros. A tabela a seguir inclui os códigos de erro relevantes.


| Serviço | Código de erro | Description | 
| --- | --- | --- | 
|  AWS Lambda  |  429 “” TooManyRequestsExption  |  A cota de execução simultânea foi excedida.  | 
|  AWS Secrets Manager  |  500 "Erro interno do servidor"  |  A cota de solicitações por segundo foi excedida.  | 
|  Amazon EventBridge  |  500 "Erro interno do servidor"  |  A cota tarifária é excedida para a região.  | 

### Reentrega do evento
<a name="furls-redelivery"></a>

Quando ocorrem erros, é possível tentar novamente a entrega dos eventos afetados. Cada provedor de SaaS tem procedimentos de repetição diferentes.

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

Use a API de webhooks GitHub para verificar o status de entrega de qualquer chamada de webhook e reenviar o evento, se necessário. Para obter mais informações, consulte a seguinte documentação do GitHub:
+ **Organização**: [reenvie uma entrega para um webhook da organização](https://docs.github.com/en/rest/orgs/webhooks#redeliver-a-delivery-for-an-organization-webhook)
+ **Repositório**: [reenvie uma entrega para um webhook do repositório](https://docs.github.com/en/rest/webhooks/repo-deliveries#redeliver-a-delivery-for-a-repository-webhook)
+ **Aplicação**: [reenvie uma entrega para um webhook de aplicação](https://docs.github.com/en/rest/apps/webhooks#redeliver-a-delivery-for-an-app-webhook)

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

Os usuários do Twilio podem personalizar as opções de repetição de eventos usando substituições de conexão. Para obter mais informações, consulte [Webhooks (retornos de chamada HTTP): substituições de conexão](https://www.twilio.com/docs/usage/webhooks/webhooks-connection-overrides) na documentação do Twilio.