

# Práticas recomendadas de uso do DynamoDB Streams com o Lambda
<a name="Streams.Lambda.BestPracticesWithDynamoDB"></a>

Uma função do AWS Lambda é executada em um *contêiner*, um ambiente de execução isolado de outras funções. Quando você executa uma função pela primeira vez, o AWS Lambda cria um novo contêiner e começa a executar o código da função.

Uma função do Lambda tem um *manipulador* que é executado uma vez por invocação. O manipulador contém a lógica de negócios principal da função. Por exemplo, a função do Lambda mostrada em [Etapa 4: criar e testar uma função do Lambda](Streams.Lambda.Tutorial.md#Streams.Lambda.Tutorial.LambdaFunction) tem um identificador que pode processar registros em um fluxo do DynamoDB. 

Você também pode fornecer o código de inicialização que é executado apenas uma vez: depois que o contêiner é criado, mas antes que o AWS Lambda execute o manipulador pela primeira vez. A função do Lambda mostrada em [Etapa 4: criar e testar uma função do Lambda](Streams.Lambda.Tutorial.md#Streams.Lambda.Tutorial.LambdaFunction) possui um código de inicialização que importa o SDK for JavaScript in Node.js e cria um cliente para o Amazon SNS. Esses objetos devem ser definidos somente uma vez, fora do manipulador.

Depois da execução da função, o AWS Lambda pode optar por reutilizar o contêiner para invocações subsequentes da função. Neste caso, o manipulador da função pode reutilizar os recursos que você definiu no seu código de inicialização. (Você não pode controlar por quanto tempo o AWS Lambda reterá o contêiner, ou se o contêiner será reutilizado.)

Para acionadores do DynamoDB que usam o AWS Lambda, recomendamos o seguinte:
+ AWSOs clientes de serviço da devem ser instanciados no código de inicialização, e não no manipulador. Isso permite que o AWS Lambda reutilize conexões existentes, durante o ciclo de vida do contêiner.
+ Em geral, você não precisa gerenciar explicitamente as conexões ou implementar o pool de conexões porque o AWS Lambda gerencia isso para você.

Um consumidor do Lambda para um fluxo do DynamoDB não garante entrega exatamente uma vez, podendo resultar em duplicações ocasionais. Verifique se o código da função do Lambda é idempotente para evitar que problemas inesperados ocorram devido ao processamento de duplicações.

Para obter mais informações, consulte [Práticas recomendadas para trabalhar com funções do AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html) no *Guia do desenvolvedor do AWS Lambda*.