Geral

P: O que é o AWS Lambda?

O AWS Lambda permite que você execute códigos sem provisionar ou gerenciar servidores. Você paga apenas pelo tempo de computação que você utilizar. Não haverá cobranças quando o seu código não estiver em execução. Com o Lambda, você pode executar o código para praticamente qualquer tipo de aplicativo ou serviço de back-end, tudo sem precisar de administração. Basta carregar o código e o Lambda toma conta de tudo o que for necessário para executar e escalar o seu código com alta disponibilidade. Você pode configurar o seu código para que ele seja acionado automaticamente por meio de outros serviços da AWS ou chamá-lo diretamente usando qualquer aplicativo móvel ou da web.

P: O que é computação sem servidor?

A computação sem servidor permite compilar e executar aplicações e serviços sem pensar em servidores. Com a computação sem servidor, sua aplicação ainda é executada nos servidores, mas todo o gerenciamento do servidor é feito pela AWS. A base da computação sem servidor é o AWS Lambda, que permite executar seu código sem provisionar ou gerenciar servidores. Saiba mais sobre a computação sem servidor acessando aqui.

P: Quais eventos podem acionar uma função do AWS Lambda?

Consulte nossa documentação para obter uma lista completa de fontes de evento.

P: Quando devo usar o AWS Lambda em vez do Amazon EC2?

O Amazon Web Services oferece um conjunto de serviços de computação para atender a uma variedade de necessidades.

O Amazon EC2 oferece flexibilidade, com uma grande variedade de tipos de instâncias e a opção de personalizar o sistema operacional, as configurações de rede e de segurança e toda o stack de software, permitindo mover facilmente os aplicativos existentes para a nuvem. Com o Amazon EC2, você é responsável pelo provisionamento de capacidade, monitoramento da saúde e do desempenho da frota e por projetar tolerância a falhas e escalabilidade. O AWS Elastic Beanstalk oferece um serviço fácil de usar para implantar e dimensionar aplicações web nas quais você mantém a propriedade e total controle sobre as instâncias do EC2 subjacentes. O Amazon EC2 Container Service é um serviço de gerenciamento escalável que oferece suporte para os contêineres Docker e permite que você execute facilmente aplicações distribuídas em um cluster gerenciado de instâncias do Amazon EC2.

O AWS Lambda facilita a execução de código em resposta a eventos, como alterações nos buckets do Amazon S3, atualizações em uma tabela do Amazon DynamoDB ou eventos personalizados gerados por suas aplicações ou dispositivos. Com o Lambda, você não precisa provisionar suas próprias instâncias, o Lambda faz todas as tarefas operacionais e administrativas em seu nome, inclusive provisionamento de capacidade, monitoramento da saúde da frota, aplicação de patches de segurança aos recursos de computação adjacentes, implementação do seu código, execução de um serviço de front end de web e monitoramento e registro do seu código. O AWS Lambda oferece escalabilidade fácil e alta disponibilidade para o seu código sem esforço adicional da sua parte.

P: Que tipo de código pode ser executado no AWS Lambda?

O AWS Lambda oferece uma maneira fácil de realizar muitas atividades na nuvem. Por exemplo, você pode usar o AWS Lambda para criar back-ends móveis que recuperam e transformam dados do Amazon DynamoDB, manipuladores que compactam ou transformam objetos conforme eles são carregados no Amazon S3, auditoria e relatórios de chamadas de API feitas para qualquer Amazon Web Service e processamento sem servidor de dados de streaming usando o Amazon Kinesis.

P: Que linguagens são compatíveis com o AWS Lambda?

O AWS Lambda é compatível com código escrito em Node.js (JavaScript), Python, Java (compatível com Java 8), C# (.NET Core) e Go. Seu código pode incluir bibliotecas atuais, até mesmo as nativas. Leia nossa documentação sobre o uso de Node.js, Python, Java, C# e Go.

P: Posso acessar a infraestrutura em que o AWS Lambda é executado?

Não. O AWS Lambda opera a infraestrutura de computação em seu nome, permitindo realizar verificações da saúde, aplicar patches de segurança e fazer outras tarefas de rotina de manutenção.

P: Como o AWS Lambda isola o meu código?

Cada função do AWS Lambda é executada em seu próprio ambiente isolado, com seus próprios recursos e visualização de sistema de arquivo. O AWS Lambda usa as mesmas técnicas do Amazon EC2 para fornecer segurança e separação nos níveis de infraestrutura e de execução.

P: Como o AWS Lambda protege meu código?

O AWS Lambda armazena o código no Amazon S3 e o criptografa quando está ocioso. O AWS Lambda realiza outras verificações de integridade enquanto seu código está em uso.

Funções do AWS Lambda

P: O que é uma função do AWS Lambda?

O código que você executa no AWS Lambda é carregado como uma "função do Lambda". Cada função tem informações de configuração associadas, como nome, descrição, ponto de entrada e requisitos de recurso. O código deve ser escrito em estilo "sem estado", ou seja, deve assumir que não há afinidade com a infraestrutura de computação adjacente. O acesso ao sistema de arquivo local, processos filhos e itens semelhantes não podem se estender além da duração da solicitação, e qualquer estado persistente deve ser armazenado no Amazon S3, no Amazon DynamoDB ou em outro serviço de armazenamento disponível na Internet. As funções do Lambda podem incluir bibliotecas, até mesmo nativas.

P: O AWS Lambda reutilizará instâncias de função?

Para melhorar o desempenho, o AWS Lambda pode escolher reter uma instância de sua função e reutilizá-la para atender a uma solicitação posterior em vez de criar uma nova cópia. Para saber mais sobre como o Lambda reutiliza instâncias de função, acesse a nossa documentação. Seu código não deve assumir que isso sempre acontecerá novamente.

P: E se eu precisar de espaço temporário no disco para minha função do AWS Lambda?

Cada função do Lambda recebe 500 MB de espaço em disco não persistente em seu próprio diretório /tmp.

P: Por que as funções do AWS Lambda devem ser stateless?

Manter as funções sem estado permite que o AWS Lambda lance rapidamente quantas cópias da função forem necessárias para oferecer escalabilidade para a taxa de eventos de entrada. Embora o modelo de programação do AWS Lambda seja sem estado, seu código pode acessar dados com estado chamando outros serviços web, como o Amazon S3 ou o Amazon DynamoDB.

P: Posso usar threads e processos no código de função do AWS Lambda?

Sim. O AWS Lambda permite que você use linguagem normal e recursos do sistema operacional, como criação de threads e processos adicionais. Os recursos alocados para a função do Lambda, incluindo memória, tempo de execução, disco e uso de rede, devem ser compartilhados entre todos os threads/processos que ela utiliza. É possível iniciar processos utilizando qualquer linguagem suportada pelo Amazon Linux.

P: Quais restrições se aplicam ao código da função do AWS Lambda?

O Lambda tenta impor o menor número possível de restrições sobre as atividades normais da linguagem e do sistema operacional, mas algumas atividades são desativadas: conexões de rede de entrada são bloqueadas pelo AWS Lambda e, para conexões de saída, apenas os soquetes TCP/IP são permitidos, e as chamadas de sistema ptrace (depuração) são bloqueadas. O tráfego da porta 25 do TCP também é bloqueado como medida antispam.

P: Como faço para criar uma função do AWS Lambda usando o console do Lambda?

Se você está usando o Node.js ou o Python, pode criar o código para sua função usando o editor de códigos no console do AWS Lambda. Esse editor permite a criação e o teste das suas funções e também a visualização dos resultados das execuções das funções em um ambiente robusto e semelhante ao IDE. Vá para o console para começar.

Você também pode empacotar o código (e quaisquer bibliotecas dependentes) como um arquivo ZIP e carregá-lo usando o console do AWS Lambda do seu ambiente local ou especificar uma localização do Amazon S3 onde o arquivo ZIP esteja localizado. Os arquivos para upload não devem ter mais de 50 MB (compactados). É possível usar o plugin do AWS Eclipse para criar e implantar funções do Lambda em Java. É possível usar o plugin do Visual Studio para criar e implantar funções do Lambda em C# e Node.js.

P: Como faço para criar uma função do AWS Lambda usando a ILC do Lambda?

Você pode empacotar o código (e quaisquer bibliotecas dependentes) como um arquivo ZIP e carregá-lo usando o AWS CLI do seu ambiente local ou especificar uma localização do Amazon S3 onde o arquivo ZIP esteja. Os arquivos para upload não devem ter mais de 50 MB (compactados). Visite o Guia de conceitos básicos do Lambda para começar.

P: O AWS Lambda é compatível com variáveis de ambiente?

Sim. Você pode criar e modificar facilmente variáveis de ambiente por meio do Console, da ILC ou dos SDKs do AWS Lambda. Para saber mais sobre variáveis de ambiente, consulte a documentação.

P: Posso armazenar informações confidenciais nas variáveis de ambiente?

Para informações confidenciais, como senhas de banco de dados, recomendamos usar a criptografia no lado do servidor com o AWS Key Management Service e armazenar os valores resultantes como texto cifrado na sua variável de ambiente. Será necessário incluir lógica no código de função do AWS Lambda para descriptografar esses valores.

P: Como posso gerenciar minhas funções do AWS Lambda?

Você pode listar, excluir, atualizar e monitorar facilmente suas funções do Lambda usando o painel no console do AWS Lambda. Você também pode usar o AWS CLI e o AWS SDK para gerenciar suas funções do Lambda. Consulte o guia para desenvolvedores do Lambda para saber mais.

P: Como faço para monitorar uma função do AWS Lambda?

O AWS Lambda monitora automaticamente as funções do Lambda em seu nome, gerando métricas em tempo real através do Amazon CloudWatch que incluem total de solicitações, uso concomitante no nível da conta e da função, latência, taxas de erro e solicitações suspensas. Você pode ver as estatísticas de cada uma de suas funções do Lambda no console do Amazon CloudWatch ou no console do AWS Lambda. Você também pode chamar APIs de monitoramento de terceiros em sua função do Lambda.

Acesse a Solução de problemas de métricas do CloudWatch para saber mais. As cobranças padrão do AWS Lambda se aplicam para o uso de métricas internas do Lambda.

P: Como faço para solucionar falhas em uma função do AWS Lambda?

O AWS Lambda integra-se automaticamente aos logs do Amazon CloudWatch, criando um grupo de logs para cada função do Lambda e fornecendo entradas de log de eventos básicos do ciclo de vida da aplicação, inclusive registrando os recursos consumidos para cada uso dessa função. Você pode inserir facilmente instruções de log adicionais em seu código. Pode também chamar APIs de log de terceiros em sua função do Lambda. Acesse a Solução de problemas de funções do Lambda para saber mais. As tarifas de logs do Amazon CloudWatch serão aplicadas.

P: Como faço para alterar a escala de uma função do AWS Lambda?

Você não precisa obter escalabilidade das suas funções do Lambda – o AWS Lambda faz a escalabilidade automaticamente para você. Toda vez que uma notificação de evento é recebida para sua função, o AWS Lambda rapidamente localiza capacidade livre na sua frota de computação e executa seu código. Como seu código não tem estado, o AWS Lambda pode iniciar quantas cópias de sua função forem necessárias sem implementações demoradas e atrasos de configuração. Não há limites fundamentais de escalabilidade para uma função. O AWS Lambda alocará capacidade dinamicamente para atender à taxa de eventos de entrada.

P: Como os recursos de computação são atribuídos a uma função do AWS Lambda?

No modelo de recurso do AWS Lambda, você seleciona a quantidade de memória que quer para sua função e potência de CPU e outros recursos proporcionais são alocados. Por exemplo, escolher 256 MB de memória aloca aproximadamente duas vezes a potência de CPU para sua função do Lambda usada ao solicitar 128 MB de memória e metade da potência de CPU alocada ao solicitar 512 MB de memória. Você pode definir sua memória em incrementos de 64 MB, de 128 MB até 3 GB.

P: Por quanto tempo uma função do AWS Lambda pode ser executada?

Todas as chamadas feitas ao AWS Lambda devem concluir a execução dentro de 300 segundos. O tempo limite padrão é de 3 segundos, mas você pode definir esse limite com qualquer valor entre 1 e 300 segundos.

P: Como serei cobrado pelo uso das funções do AWS Lambda?

O preço do AWS Lambda é baseado em pagamento por uso. Consulte a página de definição de preço do AWS Lambda para obter mais detalhes.

P: O AWS Lambda é compatível com versionamento?

Sim. Como padrão, cada função do AWS Lambda tem uma versão única e atual do código. Os clientes da sua função do Lambda podem chamar uma versão específica ou obter a implementação mais recente. Leia a documentação sobre o controle de versão de funções do Lambda.

P: Em quanto tempo depois de fazer upload do meu código minha função do AWS Lambda estará pronta para chamar?

Os tempos de implementação podem variar com o tamanho do seu código, mas as funções do AWS Lambda estão tipicamente prontas em segundos após o upload.

P: Posso usar minha própria versão de uma biblioteca compatível?

Sim, você pode incluir a sua própria cópia de uma biblioteca (incluindo o AWS SDK) para usar uma versão diferente da versão padrão disponibilizada pelo AWS Lambda.

Uso do AWS Lambda para processar eventos da AWS

P: O que é uma fonte de evento?

Uma fonte de evento é um serviço da AWS ou aplicação criada por desenvolvedor que gera eventos que acionam a execução de uma função do AWS Lambda. Alguns serviços publicam esses eventos no Lambda invocando a função de nuvem diretamente (por exemplo, o Amazon S3). O Lambda também pode sondar recursos em outros serviços que não publicam eventos no Lambda. Por exemplo, o Lambda pode usar recursos de um stream do Kinesis e executar uma função do Lambda para cada mensagem no stream.

Muitos outros serviços, como o AWS CloudTrail, podem agir como fontes de eventos simplesmente registrando para o Amazon S3 e usando notificações do bucket do S3 para acionar funções do AWS Lambda.

P: Que fontes de eventos podem ser usadas com o AWS Lambda?

Consulte nossa documentação para obter uma lista completa de fontes de evento.

P: Como os eventos são representados no AWS Lambda?

Os eventos são passados para uma função do Lambda como um parâmetro de entrada de evento. Para fontes de eventos nos quais os eventos chegam em lotes, como streams do Amazon Kinesis e do Amazon DynamoDB, o parâmetro de evento pode conter vários eventos em uma única chamada, com base no tamanho do lote que você solicitar. Para saber mais sobre as notificações de eventos do Amazon S3, acesse Como configurar notificações de eventos do Amazon S3. Para saber mais sobre os streams do Amazon DynamoDB, acesse o DynamoDB Stream Developers Guide. Para saber mais sobre como invocar funções do Lambda usando o Amazon SNS, acesse o Amazon SNS Developers Guide. Para obter mais informações sobre eventos do Amazon Cognito, acesse Amazon Cognito. Para obter mais informações sobre logs do AWS CloudTrail e auditoria de chamadas de API em serviços da AWS, consulte AWS CloudTrail.

P: Como faço para que uma função do AWS Lambda responda a alterações em um bucket do Amazon S3?

No console do AWS Lambda, você pode selecionar uma função e associá-la a notificações de um bucket do Amazon S3. Como alternativa, você pode usar o console do Amazon S3 e configurar as notificações do bucket para enviar para sua função do AWS Lambda. Essa mesma funcionalidade também está disponível no AWS SDK e no CLI.

P: Como faço para que uma função do AWS Lambda responda a atualizações em uma tabela do Amazon DynamoDB?

Você pode acionar uma função do Lambda em atualizações de tabela do DynamoDB assinando a função do Lambda para o stream do DynamoDB associado à tabela. Você pode associar um stream do DynamoDB com uma função do Lambda usando o console do Amazon DynamoDB, o console do AWS Lambda ou a API registerEventSource do Lambda.

P: Como faço para usar uma função do AWS Lambda para processar registros em um stream do Amazon Kinesis?

No console do AWS Lambda, você pode selecionar uma função e associá-la a um stream do Amazon Kinesis pertencente à mesma conta. Essa mesma funcionalidade também está disponível no AWS SDK e no CLI.

P: Como o AWS Lambda processa dados de streams do Amazon Kinesis e do Amazon DynamoDB?

Os registros do Amazon Kinesis e do Streams do DynamoDB enviados à função do AWS Lambda são rigorosamente serializados por fragmento. Isso significa que, se você colocar dois registros no mesmo fragmento, o Lambda garantirá que sua função do Lambda seja invocada com êxito com o primeiro registro antes de ser invocada com o segundo registro. Se o tempo limite da invocação de um registro se esgotar, for controlado ou encontrar qualquer outro erro, o Lambda tentará novamente até ter êxito (ou até que o registro alcance a expiração de 24 horas) antes de mudar para o próximo registro. A ordem dos registros entre fragmentos diferentes não é garantida, e o processamento de cada fragmento ocorre em paralelo.

P: Como faço para usar uma função do AWS Lambda para responder às notificações enviadas pelo Amazon Simple Notification Service (SNS)?

No console do AWS Lambda, você pode selecionar uma função e associá-la a um tópico do Amazon SNS. Essa mesma funcionalidade também está disponível no AWS SDK e no CLI.

P: Como faço para usar uma função do AWS Lambda para responder aos e-mails enviados pelo Amazon Simple Email Service (SES)?

No Console do Amazon SES, você pode configurar sua regra de recebimento para fazer com que o Amazon SES entregue suas mensagens para uma função do AWS Lambda. A mesma funcionalidade está disponível no AWS SDK e no CLI.

P: Como faço para usar uma função do AWS Lambda para responder a alertas do Amazon CloudWatch?

Primeiro, configure o alerta para enviar notificações do Amazon SNS. Em seguida, no console do AWS Lambda, selecione uma função e associe-a a esse tópico do Amazon SNS. Consulte o Amazon CloudWatch Developer Guide para obter mais detalhes de como configurar alertas do Amazon CloudWatch.

P: Como faço para usar uma função do AWS Lambda para responder a alterações em dados de usuários ou dispositivos gerenciados pelo Amazon Cognito?

No console do AWS Lambda, você pode selecionar uma função para acionar quando qualquer conjunto de dados associado a um pool de identidades do Amazon Cognito for sincronizado. Essa mesma funcionalidade também está disponível no AWS SDK e no CLI. Acesse Amazon Cognito para obter mais informações sobre como usar o Amazon Cognito para compartilhar e sincronizar dados entre os dispositivos de um usuário.

P: Como minha aplicação pode disparar uma função do AWS Lambda diretamente?

Você pode invocar uma função do Lambda usando um evento personalizado por meio da API invoke do AWS Lambda. Apenas o proprietário da função ou outra conta da AWS à qual o proprietário tenha concedido permissão pode invocar a função. Consulte o guia para desenvolvedores do Lambda para saber mais.

P: Qual é a latência para invocar uma função do AWS Lambda em resposta a um evento?

O AWS Lambda é projetado para processar eventos em alguns milissegundos. A latência será maior imediatamente após a criação ou a atualização de uma função do Lambda ou se ela não tiver sido usada recentemente.

P: Como faço para criar um back-end móvel usando o AWS Lambda?

Faça o upload do código que deseja executar no AWS Lambda e invoque-o do seu aplicativo móvel usando o SDK do AWS Lambda, fornecido com o AWS Mobile SDK. Você pode fazer chamadas diretas (síncronas) para recuperar ou verificar dados em tempo real, bem como chamadas assíncronas. Além disso, é possível definir uma API personalizada usando o Amazon API Gateway e invocar as funções do Lambda por meio de qualquer cliente compatível com REST. Para saber mais sobre o AWS Mobile SDK, visite a página do AWS Mobile SDK. Para saber mais sobre o Amazon API Gateway, visite a página do Amazon API Gateway.

P: Como faço para invocar uma função do AWS Lambda por meio de HTTPS?

É possível invocar uma função do Lambda por meio de HTTPS definindo uma API RESTful personalizada no Amazon API Gateway. O resultado é um endpoint para a sua função que pode responder a chamadas REST como GET, PUT e POST. Leia mais sobre o uso do AWS Lambda com o Amazon API Gateway.

P: Como minha função do AWS Lambda pode personalizar seu comportamento para o dispositivo e o aplicativo que está fazendo a solicitação?

Quando são chamadas pelo AWS Mobile SDK, as funções do AWS Lambda ganham visibilidade imediatamente do dispositivo e do aplicativo que fez a chamada através do objeto ‘context’.

P: Como minha função do AWS Lambda pode personalizar seu comportamento com base na identidade do usuário final de um aplicativo?

Quando seu aplicativo usa a identidade do Amazon Cognito, os usuários finais podem se autenticar usando uma variedade de provedores de login públicos, como Amazon, Facebook, Google e outros serviços compatíveis com OpenID Connect. Então, a identidade do usuário é apresentada de maneira automática e segura à sua função do Lambda sob a forma de um ID do Amazon Cognito, permitindo acessar dados de usuários a partir do Amazon Cognito, ou como uma chave para armazenar e recuperar dados no Amazon DynamoDB ou outros web services.

P: Como posso criar uma habilidade do Alexa usando o AWS Lambda?

O AWS Lambda é integrado ao Alexa Skills Kit, um conjunto de APIs, ferramentas, documentação e exemplos de código de autoatendimento que facilitam criar recursos acionados por voz (ou "habilidades") para o Alexa. Basta fazer o upload do código da função do Lambda para a nova habilidade da Alexa que você está criando e o AWS Lambda faz o resto, executando esse código em resposta a interações de voz do Alexa e gerenciando automaticamente os recursos de computação para você. Leia a documentação do Alexa Skills Kit para obter mais detalhes.

P: O que acontece se minha função falhar ao processar um evento?

Para notificações do bucket do Amazon S3 e eventos personalizados, o AWS Lambda tentará executar sua função três vezes em caso de condição de erro no seu código ou se você exceder um limite de serviço ou de recurso. Para fontes de eventos ordenados que o AWS Lambda sonda para você, como streams do Amazon DynamoDB e do Amazon Kinesis, o Lambda continuará tentando executar em caso de erro de código do desenvolvedor até que os dados expirem. Você pode monitorar o progresso através dos consoles do Amazon Kinesis e do Amazon DynamoDB e através das métricas do Amazon CloudWatch que o AWS Lambda gera para sua função. Você também pode definir alertas do Amazon CloudWatch com base nas taxas de erro ou de suspensão da execução.

Como usar o AWS Lambda para criar aplicações

P: O que é uma aplicação sem servidor?

As aplicações baseadas no Lambda (também conhecidas como aplicações sem servidor) são compostas de funções acionadas por eventos. Uma aplicação sem servidor comum consiste em uma ou mais funções acionadas por eventos, como uploads de objetos no Amazon S3, notificações do Amazon SNS ou ações de API. Essas funções podem ser independentes ou utilizar outros recursos, como tabelas do DynamoDB ou buckets do Amazon S3. A aplicação sem servidor mais básica é apenas uma função.

P: Como posso implantar e gerenciar uma aplicação sem servidor?

É possível implantar e gerenciar suas aplicações sem servidor usando o AWS Serverless Application Model (AWS SAM). O AWS SAM é uma especificação que prescreve as regras para expressar aplicações sem servidor na AWS. Essa especificação alinha-se à sintaxe usada pelo AWS CloudFormation atualmente e é compatível de modo nativo no AWS CloudFormation como um conjunto de tipos de recurso (conhecido como "recursos sem servidor"). Esses recursos facilitam para os clientes da AWS usar o CloudFormation para configurar e implantar aplicações sem servidor, usando APIs atuais do CloudFormation.

P: Como posso descobrir aplicativos sem servidor já existentes que foram desenvolvidos pela comunidade AWS?

Você tem uma coleção de aplicativos sem servidor publicados por desenvolvedores, empresas e parceiros na comunidade AWS para escolher usando o AWS Serverless Application Repository. Após encontrar um aplicativo, você pode configurá-lo e implantá-lo diretamente do console do Lambda.

P: Como automatizar a implantação para um aplicativo sem servidor?

Você pode automatizar seu processo de lançamento de aplicativos sem servidor usando o AWS CodePipeline e o AWS CodeDeploy. O CodePipeline é um serviço de entrega contínua que permite modelar, visualizar e automatizar as etapas necessárias para liberar o aplicativo sem servidor. O CodeDeploy fornece um mecanismo de automação de implantação para aplicativos baseados em Lambda. O CodeDeploy permite orquestrar implantações de acordo com as metodologias de melhores práticas estabelecidas, como implantações canary e lineares, e ajuda você a estabelecer os guardrails necessários para verificar a segurança, a estabilidade e a disponibilidade do código recém-implantado para ser totalmente lançado em produção.

Para saber mais sobre a CI/CD sem servidor, consulte a nossa documentação.

P: Como posso começar a criar uma aplicação sem servidor?

Para começar, acesse o console do AWS Lambda e faça o download de um dos nossos modelos. O arquivo baixado conterá um arquivo do AWS SAM (que define os recursos da AWS na sua aplicação), e um arquivo .ZIP (que inclui o código da função). Você poderá usar os comandos do AWS CloudFormation para empacotar e implantar a aplicação sem servidor que você acabou de baixar. Para obter mais detalhes, acesse a nossa documentação.

P: Como coordenar chamadas entre várias funções do AWS Lambda?

É possível usar o AWS Step Functions para coordenar uma série de funções do AWS Lambda em uma ordem específica. É possível invocar várias funções do Lambda sequencialmente, passando a saída de uma para a outra, e/ou em paralelo, e o Step Functions manterá o estado durante as execuções para você.

P: Como posso solucionar problemas de uma aplicação sem servidor?

É possível habilitar a função do Lambda para rastreamento com o AWS X-Ray ao adicionar permissões do X-Ray à atribuição de execução da função do Lambda e alterar o "modo de rastreamento" da função para "ativo". Quando o X-Ray estiver habilitado para a sua função do Lambda, o AWS Lambda emitirá informações de rastreamento para o X-Ray a respeito da sobrecarga de serviço do Lambda gerada ao chamar a função. Isso disponibilizará informações, como a sobrecarga de serviço do Lambda, a hora de inicialização da função e o tempo de execução. Além disso, é possível incluir o X-Ray SDK no pacote de implantação do Lambda para criar segmentos próprios de rastreamento, anotar rastreamentos ou visualizar segmentos de rastreamento para chamadas downstream feitas por meio da função do Lambda. No momento, os X-Ray SDKs estão disponíveis para Node.js e Java. Acesse a seção Troubleshooting Lambda-based applications para saber mais. As taxas do AWS X-Ray serão aplicadas.

P: Como é o licenciamento do AWS SAM?

A especificação no Apache 2.0 é de código aberto, o que permite que você e outros adotem e incorporem o AWS SAM em ferramentas de criação, implantação, monitoramento e gestão com uma licença para uso comercial. Você pode acessar o repositório do AWS SAM no GitHub aqui.

Lambda@Edge

P: O que é o Lambda@Edge?

O Lambda@Edge permite executar código nas localizações da AWS globalmente sem a necessidade de provisionar ou gerenciar servidores, respondendo aos usuários finais com a mais baixa latência de rede. Basta fazer upload do código Node.js no AWS Lambda e configurar a função para que seja acionada em resposta a solicitações do Amazon CloudFront (ou seja, quando uma solicitação do visualizador for recebida, uma solicitação for encaminhada para a origem, ou recebida de volta dela, e logo antes da resposta ser enviada de volta para o usuário final). Depois disso, o código estará pronto para ser executado nas localizações da AWS globalmente quando uma solicitação de conteúdo for recebida, além de fazer o ajuste de escala de acordo com o volume das solicitações do CloudFront recebidas do mundo todo. Saiba mais consultando nossa documentação.

P: Como usar o Lambda@Edge?

Para usar o Lambda@Edge, basta fazer upload do código no AWS Lambda e associar uma versão de função para que seja acionada em resposta a solicitações do Amazon CloudFront. O código deve cumprir com os Service Limits do Lambda@Edge. No momento, o Lambda@Edge só aceita o Node.js para invocação global feita por eventos do CloudFront. Saiba mais consultando nossa documentação.

P: Quando o Lambda@Edge deve ser usado?

O Lambda@Edge é otimizado para casos de uso que dependem da latência e cujos espectadores estejam distribuídos globalmente. Convenientemente, todas as informações necessárias para tomar uma decisão estão disponíveis na borda do CloudFront, dentro da função e da solicitação. Isso significa que os casos de uso investigados para a tomada de decisões sobre como distribuir conteúdo com base nas características do usuário (ex.: localização, dispositivo do cliente etc.) agora podem ser executados e distribuídos diretamente por meio da borda no Node.js-6.10 sem que seja necessário direcioná-los de volta para um servidor centralizado.

P: É possível implantar funções atuais do Lambda para invocação global?

É possível associar funções do Lambda de Node.js-6.10 a eventos do CloudFront para invocação global, se a função atender aos Service Limits do Lambda@Edge. Leia mais aqui para saber como atualizar propriedades da função.

P: Quais eventos do Amazon CloudFront podem ser usados para acionar minhas funções?

As funções serão acionadas automaticamente em resposta aos seguintes eventos do Amazon CloudFront:

  • Solicitação do visualizador – esse evento ocorre quando um usuário final ou um dispositivo na Internet faz uma solicitação de HTTP(S) ao CloudFront, e a solicitação chega ao ponto de presença mais próximo do usuário.
  • Resposta do visualizador – esse evento ocorre quando o servidor CloudFront no ponto de presença está pronto para responder ao usuário final ou dispositivo que enviou a solicitação.
  • Solicitação para origem – esse evento ocorre quando o servidor CloudFront no ponto de presença não tem o objeto solicitado no cache e a solicitação do visualizador está pronta para ser enviada ao servidor web de origem no back-end (por exemplo, Amazon EC2, Application Load Balancer ou Amazon S3).
  • Resposta da origem – esse evento ocorre quando o servidor CloudFront no ponto de presença recebe uma resposta do servidor web de origem no back-end.

P: Qual é a diferença entre o AWS Lambda@Edge e o AWS Lambda por trás do Amazon API Gateway?

A diferença é que o API Gateway e o Lambda são serviços regionais. O uso do Lambda@Edge e do Amazon CloudFront permite executar lógica em vários locais da AWS de acordo com o posicionamento dos visualizadores finais.

Escalabilidade e disponibilidade

P: Qual é o nível de disponibilidade das funções do AWS Lambda?

O AWS Lambda usa replicação e redundância para oferecer alta disponibilidade tanto ao próprio serviço quanto às funções que opera. Não há janelas de manutenção, nem tempos de inatividade programados.

P: Minhas funções do AWS Lambda permanecem disponíveis quando eu altero meu código ou sua configuração?

Sim. Quando você atualizar uma função do Lambda, haverá um breve intervalo de tempo, normalmente menos de um minuto, quando as solicitações poderão ser atendidas tanto pela versão antiga da sua função quanto pela nova.

P: Existe um limite para o número de funções do AWS Lambda que eu posso executar de uma vez?

Não. O AWS Lambda foi projetado para executar várias instâncias de suas funções em paralelo. No entanto, o AWS Lambda tem um controle de segurança padrão para o número de execuções simultâneas por conta por região (acesse aqui para obter informações sobre os limites do controle de segurança padrão). Você também pode controlar o máximo de execuções simultâneas para funções individuais do AWS Lambda a serem usadas para reservar um subconjunto do limite de concomitância da sua conta para funções críticas, ou taxas de tráfego de capacidade para fazer o downstream dos recursos.

Se você deseja enviar uma solicitação para aumentar o limite desse controle, acesse nossa central de suporte, clique em "Open a new case" e registre uma solicitação de aumento de limite de serviço.

P: O que acontece se minha conta exceder o limite padrão para execuções simultâneas?

Quando o limite for excedido, as funções do AWS Lambda chamadas de forma síncrona retornarão um erro de controle de recursos (código de erro 429). As funções do Lambda que estiverem sendo invocadas de forma assíncrona poderão absorver intermitências de tráfego razoáveis por cerca de 15 a 30 minutos. Após esse intervalo, os eventos recebidos serão rejeitados como suspensos. Caso a função do Lambda esteja sendo invocada em resposta a eventos do Amazon S3, eventos rejeitados pelo AWS Lambda poderão ser retidos e repetidos pelo S3 por 24 horas. Eventos de streams do Amazon Kinesis e do Amazon DynamoDB serão repetidos até que a função do Lambda seja bem-sucedida ou os dados expirem. Os streams do Amazon Kinesis e do Amazon DynamoDB retêm os dados por 24 horas.

P: O limite padrão é aplicado por função?

Não, o limite padrão aplica-se apenas no nível da conta.

P: O que acontece se minha função do Lambda falhar ao processar um evento?

Em caso de falha, as funções do Lambda que estiverem sendo invocadas de forma síncrona responderão com uma exceção. As funções do Lambda invocadas de modo assíncrono são repetidas pelo menos três vezes. Eventos de streams do Amazon Kinesis e do Amazon DynamoDB serão repetidos até que a função do Lambda seja bem-sucedida ou os dados expirem. Os streams do Kinesis e do DynamoDB retêm dados por no mínimo 24 horas.

P: O que acontece se as invocações da função do Lambda excederem a política disponível?

Se a política de repetição de invocações assíncronas for excedida, será possível configurar uma "dead letter queue" (DLQ) em que o evento será inserido. Caso não exista uma DLQ configurada, o evento poderá ser rejeitado. Se a política de repetição de invocações com base em streams for excedida, os dados já terão expirado e, portanto, serão rejeitados.

P: Quais recursos é possível configurar como uma dead letter queue para uma função do Lambda?

É possível configurar uma fila do Amazon SQS ou um tópico do Amazon SNS como a dead letter queue.

Controle de segurança e acesso

P: Como faço para permitir que minha função do AWS Lambda acesse outros recursos da AWS?

Você concede permissões à sua função do Lambda para acessar outros recursos usando uma função do IAM. O AWS Lambda assume a função enquanto executa sua função do Lambda, para que você sempre mantenha controle total e seguro de quais recursos da AWS ela pode usar exatamente. Visite Setting up AWS Lambda para saber mais sobre funções.

P: Como controlo quais buckets do Amazon S3 podem chamar quais funções do AWS Lambda?

Quando você configura um bucket do Amazon S3 para enviar mensagens para uma função do AWS Lambda, uma regra de política de recursos é criada para conceder acesso. Consulte o guia para desenvolvedores do Lambda para saber mais sobre as políticas de recursos e os controles de acesso das funções do Lambda.

P: Como posso controlar qual tabela do Amazon DynamoDB ou stream do Amazon Kinesis pode ser pesquisada por uma função do AWS Lambda?

Os controles de acesso são gerenciados pela função do Lambda. O papel que você atribui à função do Lambda também determina quais recursos o AWS Lambda pode pesquisar em seu nome. Consulte o guia para desenvolvedores do Lambda para saber mais.

P: Posso acessar os recursos subjacentes da Amazon VPC com minha função do AWS Lambda?

Sim. Você pode acessar os recursos subjacentes da Amazon VPC.

P: Como posso ativar e desativar o suporte à VPC em uma função do Lambda?

Para ativar o suporte à VPC, é necessário especificar uma ou mais sub-redes em uma única VPC e um security group como parte da configuração da função. Para desativar o suporte à VPC, é necessário atualizar a configuração da função e especificar uma lista vazia para a sub-rede e o security group. Você pode alterar essas configurações usando as APIs, a ILC ou o AWS Lambda Management Console da AWS.

P: Uma única função do Lambda pode acessar várias VPCs?

Não. As funções do Lambda oferecem acesso apenas a uma única VPC. Se várias sub-redes forem especificadas, deverão estar todas na mesma VPC. Você pode se conectar a outras VPCs usando o emparelhamento de VPCs.

P: As funções do Lambda em uma VPC também podem acessar a Internet e endpoints de serviços da AWS?

Na configuração padrão, as funções do Lambda configuradas para acessar recursos em uma determinada VPC não têm acesso à Internet. Se você precisar acessar endpoints externos, será necessário criar uma NAT na VPC para encaminhar esse tráfego e configurar o security group para permitir esse tráfego de saída.

Funções do AWS Lambda em Java

P: Como faço para compilar o código Java da minha função do AWS Lambda?

Você pode usar ferramentas padrão como Maven ou Gradle para compilar a sua função do Lambda. O seu processo de compilação deve imitar o mesmo processo de compilação usado para qualquer código Java que depende do AWS SDK. Execute a sua ferramenta de compilação Java nos arquivos fonte e inclua o AWS SDK 1.9 ou posterior com dependências transitivas no seu classpath. Para obter mais detalhes, consulte nossa documentação.

P: Qual é o ambiente de JVM usado pelo Lambda para executar minha função?

O Lambda oferece a compilação do openjdk 1.8 no Amazon Linux.

Funções do AWS Lambda no Node.js

P: Posso usar pacotes com o AWS Lambda?

Sim. Você pode usar pacotes NPM, bem como pacotes personalizados. Saiba mais aqui.

P: Posso executar outros programas em minha função do AWS Lambda codificada em Node.js?

Sim. O sandbox interno do Lambda permite executar scripts ("shell") em lote, outros runtimes de linguagem, rotinas de utilitários e executáveis. Saiba mais aqui.

P: É possível usar módulos nativos com funções do AWS Lambda escritas em Node.js?

Sim. Qualquer módulo nativo vinculado estaticamente pode ser incluído no arquivo ZIP para upload, bem como módulos compilados dinamicamente com rpath apontando para o diretório raiz da função do Lambda. Saiba mais aqui.

P: Posso executar binários codificados em Node.js com o AWS Lambda?

Sim. Você pode usar o comando child_process do Node.js para executar um binário incluído em sua função ou qualquer executável do Amazon Linux que seja visível para sua função. Como alternativa, existem vários pacotes NPM que encapsulam binários de linha de comando, como node-ffmpeg. Saiba mais aqui.

P: Como faço para implantar o código da função do AWS Lambda codificado em Node.js?

Para implantar uma função do Lambda codificada em Node.js, basta empacotar o código Javascript e as bibliotecas dependentes como um arquivo ZIP. Você pode fazer o upload do ZIP do seu ambiente local ou especificar a localização do arquivo ZIP no Amazon S3. Para obter mais detalhes, consulte nossa documentação.

Funções do AWS Lambda no Python

P: Posso usar pacotes do Python com o AWS Lambda?

Sim. Você pode usar o Pip para instalar os pacotes necessários do Python.

Funções do AWS Lambda em C#

P: Como empacotar e implantar uma função do AWS Lambda em C#?

Crie uma função do C# Lambda usando o IDE do Visual Studio selecionando "Publish to AWS Lambda" no Solution Explorer. Como alternativa, você pode executar diretamente o comando "dotnet lambda publish" da ILC do dotnet com o [# Lambda CLI tools patch] instalado, que então cria o arquivo ZIP do seu código-fonte C# justamente com as dependências NuGet e suas próprias montagens DLL, e faz upload automaticamente dele para o AWS Lambda usando o parâmetro de runtime “dotnetcore1.0”

Outros tópicos

P: Quais versões de Amazon Linux, Node.js, Python, JDK, .NET Core, SDKs e outras bibliotecas são compatíveis com o AWS Lambda?

É possível ver a lista de versões compatíveis aqui.

P: É possível mudar a versão do Amazon Linux ou de qualquer runtime de linguagem?

Não. O AWS Lambda oferece uma única versão de sistema operacional e de runtime de linguagem a todos os usuários do serviço.

P: Como posso gravar e auditar chamadas feitas para a API do AWS Lambda?

O AWS Lambda é integrado ao AWS CloudTrail. O AWS CloudTrail pode registrar e entregar arquivos de log em seu bucket do Amazon S3 que descrevem o uso da API pela sua conta.

P: Como coordenar chamadas entre várias funções do Lambda?

É possível usar o Amazon Step Functions para coordenar várias invocações de funções do Lambda. É possível invocar várias funções do Lambda em série, passando a saída de uma para a outra, ou em paralelo. Consulte a nossa documentação para obter mais detalhes.

Saiba mais sobre a definição de preço do AWS Lambda

Acesse a página de definição de preço
Pronto para começar?
Cadastrar-se
Mais dúvidas?
Entre em contato conosco