

# Criar e configurar um mapeamento de origem de evento do Amazon SQS
<a name="services-sqs-configure"></a>

Para processar mensagens do Amazon SQS com o Lambda, configure sua fila com as configurações apropriadas e, em seguida, crie um mapeamento de origem de evento do Lambda.

**Topics**
+ [Configurar uma fila para usar com o Lambda](#events-sqs-queueconfig)
+ [Configurar permissões do perfil de execução do Lambda](#events-sqs-permissions)
+ [Criar um mapeamento de origem de evento do SQS](#events-sqs-eventsource)

## Configurar uma fila para usar com o Lambda
<a name="events-sqs-queueconfig"></a>

Se você ainda não tiver uma fila do Amazon SQS, [crie uma](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-create-queue.html) para servir como uma origem de eventos para a sua função do Lambda. A função do Lambda e a fila do Amazon SQS devem estar na mesma Região da AWS, embora possam estar em [diferentes Contas da AWS](with-sqs-cross-account-example.md).

Para permitir que a função tenha tempo para processar cada lote de registros, defina o [tempo limite de visibilidade](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html) da fila de origem para, no mínimo, seis vezes o [tempo limite da configuração](configuration-timeout.md) na sua função. Esse tempo extra permite que o Lambda repita o processo se a execução da sua função for limitada durante o processamento de um lote anterior.

**nota**  
O tempo limite da sua função deve ser menor ou igual ao tempo limite de visibilidade da fila. O Lambda valida esse requisito quando você cria ou atualiza um mapeamento da origem do evento e retornará um erro se o tempo limite da função exceder o tempo limite de visibilidade da fila.

Por padrão, se o Lambda se deparar com um erro em algum momento durante o processamento de um lote, todas as mensagens naquele lote retornarão para a fila. Após o [tempo limite de visibilidade](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html), as mensagens se tornam visíveis para o Lambda novamente. É possível configurar o mapeamento de origem de evento para usar [respostas parciais em lote](services-sqs-errorhandling.md#services-sqs-batchfailurereporting) para recolocar na fila somente as mensagens com falha. Além disso, se a sua função não conseguir processar uma mensagem várias vezes, o Amazon SQS poderá enviá-la para uma [fila de mensagens não entregues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html). Recomendamos definir a `maxReceiveCount` na [política de redirecionamento](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html#policies-for-dead-letter-queues) da fila de origem para pelo menos 5. Isso dá ao Lambda algumas chances de tentar novamente antes de enviar mensagens com falha diretamente para a fila de mensagens não entregues.

## Configurar permissões do perfil de execução do Lambda
<a name="events-sqs-permissions"></a>

A política gerenciada pela AWS [AWSLambdaSQSQueueExecutionRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaSQSQueueExecutionRole.html) inclui as permissões necessárias para o Lambda ler da sua fila do Amazon SQS. É possível [adicionar essa política gerenciada](lambda-intro-execution-role.md) ao perfil de execução da função.

Opcionalmente, se você estiver usando uma fila criptografada, também precisará adicionar a seguinte permissão à sua função de execução:
+ [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)

## Criar um mapeamento de origem de evento do SQS
<a name="events-sqs-eventsource"></a>

Crie um mapeamento de fontes de eventos para orientar o Lambda a enviar itens da sua fila para uma função do Lambda. É possível criar vários mapeamentos da fonte do evento para processar itens de várias filas com uma única função. Quando o Lambda invoca a função de destino, o evento pode conter vários itens, até um *tamanho de lote* máximo configurável.

Para configurar sua função para ler do Amazon SQS, associe a política gerenciada pela AWS [AWSLambdaSQSQueueExecutionRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaSQSQueueExecutionRole.html) ao seu perfil de execução. Em seguida, crie um mapeamento de origem de evento do **SQS** via console usando as etapas a seguir.

**Para adicionar permissões e criar um acionador**

1. Abra a [página Funções](https://console.aws.amazon.com/lambda/home#/functions) do console do Lambda.

1. Escolha o nome de uma função.

1. Escolha a guia **Configuration** (Configuração) e, depois, **Permissions** (Permissões).

1. Em **Nome do perfil**, escolha o link para seu perfil de execução. Esse link abre o perfil no console do IAM.  
![Link para perfil de execução](http://docs.aws.amazon.com/pt_br/lambda/latest/dg/images/execution-role.png)

1. Escolha **Adicionar permissões** e depois **Anexar políticas**.  
![Associar políticas no console do IAM](http://docs.aws.amazon.com/pt_br/lambda/latest/dg/images/attach-policies.png)

1. No campo de pesquisa, digite `AWSLambdaSQSQueueExecutionRole`. Adicione esta política ao seu perfil de execução Essa é uma política gerenciada pela AWS que contém as permissões que sua função precisa para ler de uma fila do Amazon SQS. Para obter mais informações sobre essa política, consulte [AWSLambdaSQSQueueExecutionRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambdaSQSQueueExecutionRole.html) na *Referência de políticas gerenciadas pela AWS*.

1. Volte para a sua função no console do Lambda Em **Visão geral da função**, escolha **Adicionar gatilho**.  
![Seção de visão geral da função do console do Lambda](http://docs.aws.amazon.com/pt_br/lambda/latest/dg/images/add-trigger.png)

1. Escolha um tipo de acionador.

1. Configure as opções necessárias e escolha **Add** (Adicionar).

O Lambda oferece suporte às seguintes opções de configuração para origens de eventos do Amazon SQS:

**Fila do SQS**  
A fila do Amazon SQS de onde os registros serão lidos. A função do Lambda e a fila do Amazon SQS devem estar na mesma Região da AWS, embora possam estar em [diferentes Contas da AWS](with-sqs-cross-account-example.md).

**Habilitar acionador**  
O status do mapeamento da origem do evento. **Enable trigger** (Habilitar acionador) está selecionado por padrão.

**Tamanho do lote**  
O número máximo de registros a serem enviados para a função em cada lote. Em uma fila padrão, isso pode ser até 10.000 registros. Em uma fila FIFO, o máximo é 10. Para um tamanho de lote acima de dez, você também deve definir a janela do lote (`MaximumBatchingWindowInSeconds`) para, no mínimo, um segundo.  
Configure o [tempo limite da função](https://serverlessland.com/content/service/lambda/guides/aws-lambda-operator-guide/configurations#timeouts) para permitir tempo suficiente para o processamento de um lote inteiro de itens. Se os itens levarem muito tempo para serem processados, escolha um tamanho de lote menor. Um tamanho de lote grande pode melhorar a eficiência das workloads muito rápidas ou com muita sobrecarga. Se você configurar a [simultaneidade reservada](configuration-concurrency.md) na sua função, defina pelo menos cinco execuções simultâneas para reduzir as chances de erros de controle de utilização quando o Lambda invocar a sua função.  
O Lambda transmite todos os registros do lote para a função em uma única chamada, desde que o tamanho total dos eventos não exceda a [cota de tamanho da carga útil de invocação](gettingstarted-limits.md) para invocação síncrona (6 MB). O Lambda e o Amazon SQS geram metadados para cada registro. Esses metadados adicionais contam para o tamanho total da carga útil e podem fazer com que o total de registros enviados em um lote seja menor que o tamanho do lote configurado. Os campos de metadados enviados pelo Amazon SQS podem variar em termos de comprimento. Para saber mais sobre os campos de metadados do Amazon SQS, consulte a documentação da operação de API [ReceiveMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html) na *Referência de APIs do Amazon Simple Queue Service*.

**Janela do lote**  
O máximo de tempo para reunir registros antes de invocar a função, em segundos. Aplicável somente a filas padrão.  
Se você estiver usando uma janela de lote maior que zero segundos, deverá considerar o aumento do tempo de processamento no [tempo limite de visibilidade](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html) da fila. Recomendamos definir o tempo limite de visibilidade da fila para seis vezes o [tempo limite da função](configuration-timeout.md), acrescido do valor de `MaximumBatchingWindowInSeconds`. Isso permite que sua função do Lambda tenha tempo para processar cada lote de eventos e tentar novamente em caso de erro de controle de utilização.  
Quando as mensagens ficam disponíveis, o Lambda começa a processar as mensagens em lotes. O Lambda começa a processar cinco lotes por vez com cinco invocações simultâneas de sua função. Se ainda houver mensagens disponíveis, o Lambda adicionará até 300 invocações simultâneas da sua função por minuto, até alcançar um máximo de 1.250 invocações simultâneas. Ao usar o modo provisionado, cada agente de sondagem de eventos pode tratar até 1 MB/s de throughput, até 10 invocações simultâneas ou até 10 chamadas da API de sondagem do Amazon SQS por segundo. O Lambda escala o número de agentes de sondagem de eventos entre o mínimo e o máximo configurados, adicionando rapidamente até 1.000 invocações simultâneas por minuto para fornecer processamento de baixa latência de seus eventos do Amazon SQS. Você controla a escalabilidade e a simultaneidade por meio dessas configurações mínimas e máximas do agente de sondagem de eventos. Para saber mais sobre a escalabilidade e simultaneidade de funções, consulte [Como entender a escalabilidade da função do Lambda](lambda-concurrency.md).  
Para processar mais mensagens, você pode otimizar sua função do Lambda para aumentar o throughput. Para obter mais informações, consulte [Entender como o AWS Lambda escala com as filas padrão do Amazon SQS](https://aws.amazon.com/blogs/compute/understanding-how-aws-lambda-scales-when-subscribed-to-amazon-sqs-queues/#:~:text=If there are more messages,messages from the SQS queue.).

**Critérios de filtro**  
Adicione critérios de filtro para controlar quais eventos o Lambda enviará à função para processamento. Para obter mais informações, consulte [Controlar quais eventos o Lambda envia para a função](invocation-eventfiltering.md).

**Simultaneidade máxima**  
O número máximo de funções simultâneas que a origem do evento pode invocar. Não pode ser usado com o modo provisionado habilitado. Para obter mais informações, consulte [Configuração de simultaneidade máxima para origens de eventos do Amazon SQS](services-sqs-scaling.md#events-sqs-max-concurrency).

**Modo provisionado**  
Quando habilitado, aloca recursos de sondagem dedicados para o mapeamento da origem do evento. É possível configurar o número mínimo (2-200) e máximo (2-2000) de agentes de sondagem de eventos. Cada agente de sondagem de eventos pode tratar até 1 MB/s de throughput, até 10 invocações simultâneas ou até 10 chamadas da API de sondagem do Amazon SQS por segundo.  
Observação: não é possível usar o modo provisionado e a simultaneidade máxima juntos. Quando o modo provisionado estiver habilitado, use a configuração máxima de agentes de sondagem para controlar a simultaneidade.