Geral

P: O que é o AWS Lambda?

O AWS Lambda permite que você execute código sem provisionar ou gerenciar servidores. Você paga apenas pelo tempo de computação que 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 se encarrega de todos os itens necessários para executar e alterar a escala do 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 criar e executar aplicativos e serviços sem preocupações com servidores. Com a computação sem servidor, seu aplicativo ainda é executado em 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.

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 a pilha 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 oferece suporte nativamente aos códigos Java, Go, PowerShell, Node.js, C#, Python e Ruby, bem como fornece uma API de tempo de execução que permite usar qualquer linguagem de programação adicional para criar suas funções. Leia nossa documentação sobre o uso de Node.js, Python, Java, Ruby, C#, Go e PowerShell.

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.

P: Quais regiões da AWS estão disponíveis para o AWS Lambda?

Consulte a tabela de regiões da infraestrutura global da AWS.

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 "stateless", 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 como stateless 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 stateless, 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, inclusive 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 e UDP/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ê estiver usando o Node.js ou o Python, poderá 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. Os arquivos para upload não devem ter mais de 50 MB (total comprimido). É 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 (total comprimido). 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: Posso compartilhar o código entre funções?

Sim, é possível empacotar qualquer código (frameworks, SDKs, bibliotecas e mais) como uma Camada Lambda e gerenciá-lo e compartilhá-lo facilmente em múltiplas funções.

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 ao Amazon CloudWatch logs, criando um grupo de logs para cada função do Lambda e fornecendo entradas de log de eventos básicos do ciclo de vida do aplicativo, 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 do Amazon CloudWatch Logs 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 é stateless, 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. Para saber mais, veja nossa documentação de Configuração de função.

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?

As funções do AWS Lambda podem ser configuradas para execução por até 15 minutos de cada vez. Você pode definir o tempo limite em qualquer valor entre 1 segundo e 15 minutos.

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: Posso economizar dinheiro no AWS Lambda com um Compute Savings Plan?

Sim. Além de economizar dinheiro no Amazon EC2 e no AWS Fargate, você também pode usar o Compute Savings Plans para economizar no AWS Lambda. Os Compute Savings Plans oferecem até 17% de desconto em Duração, Simultaneidade provisionada e Duração (Simultaneidade provisionada). Os Compute Savings Plans não oferecem desconto em Solicitações na sua fatura do Lambda. No entanto, seu compromisso com os Compute Savings Plans pode ser aplicado às Solicitações sob as taxas regulares.

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 a 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 aplicativo criado 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 obter registros de um stream do Amazon Kinesis ou de uma fila do Amazon SQS e executar uma função do Lambda para cada mensagem recuperada.

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 Amazon SQS, Amazon Kinesis e Streams do Amazon DynamoDB, o parâmetro de evento pode conter vários eventos em uma única chamada, com base no tamanho do lote solicitado. Para saber mais sobre as notificações de eventos do Amazon S3, consulte 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 Amazon Kinesis Streams 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 guia para desenvolvedores do Amazon CloudWatch 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 meu aplicativo 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 a aplicação 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 da aplicação que fez a chamada por meio do objeto ‘context’.

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

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. 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 do Amazon Cognito, ou como uma chave para armazenar e recuperar dados no Amazon DynamoDB ou outros serviços da web.

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 acontecerá 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 Amazon DynamoDB Streams e Amazon Kinesis Streams, 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 é um aplicativo 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. Um aplicativo 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 aplicações sem servidor já existentes que foram desenvolvidas 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 uma aplicação, você pode configurá-la e implantá-la diretamente do console do Lambda.

P: Como automatizar a implantação para uma aplicação 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 no seu aplicativo), e um arquivo .ZIP (que inclui o código da função). Você poderá usar os comandos do AWS CloudFormation para empacotar e implantar o aplicativo sem servidor que você acabou de obter por download. 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 Solução de problemas de aplicativos baseados em Lambda para saber mais. As taxas do AWS X-Ray serão aplicadas.

P: Posso criar aplicativos sem servidor que se conectam a bancos de dados relacionais?

Sim. Você pode criar aplicativos sem servidor altamente escaláveis, seguros e baseados em Lambda que se conectam a bancos de dados relacionais usando o Amazon RDS Proxy, um proxy de banco de dados altamente disponível que gerencia milhares de conexões simultâneas com bancos de dados relacionais. Atualmente, o RDS Proxy oferece suporte para bancos de dados MySQL e Aurora. Você pode começar a usar o RDS Proxy através do console do Amazon RDS ou do console do AWS Lambda. Aplicativos sem servidor que usam grupos de conexão totalmente gerenciados do RDS Proxy serão faturados de acordo com a Definição de preço do RDS Proxy.

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.

Simultaneidade provisionada

P: O que é a Simultaneidade provisionada do AWS Lambda?

A Simultaneidade provisionada oferece maior controle sobre o desempenho dos seus aplicativos sem servidor. Quando habilitada, a simultaneidade provisionada mantém as funções inicializadas e prontas para responder em questão de milissegundos.

P: Como configurar e gerenciar a Simultaneidade provisionada?

Você pode configurar a simultaneidade na sua função por meio do Console de Gerenciamento da AWS, da API do Lambda, da CLI da AWS e do AWS CloudFormation. A maneira mais simples de se beneficiar com a Simultaneidade provisionada é usando o AWS Auto Scaling. Você pode usar o Auto Scaling de aplicativos para configurar agendamentos ou fazer com que o Auto Scaling ajuste automaticamente o nível de Simultaneidade provisionada em tempo real conforme a demanda mudar. Para saber mais sobre a Simultaneidade provisionada, consulte a documentação.

P: Eu preciso mudar meu código se quiser usar a Simultaneidade provisionada?

Você não precisa fazer alterações no seu código para usar a Simultaneidade provisionada. Ela funciona perfeitamente com todas as funções e tempos de execução existentes. Não há alterações no modelo de chamada e execução do Lambda ao usar a Simultaneidade provisionada.

P: Como serei cobrado pela Simultaneidade provisionada?

A Simultaneidade provisionada adiciona uma dimensão de preço, de "Simultaneidade provisionada", para manter as funções inicializadas. Quando ela está habilitada, você paga pela quantidade de simultaneidade configurada e pelo período em que a configura. Quando sua função é executada enquanto a Simultaneidade provisionada está configurada, você também paga pelas solicitações e pela duração da execução. Para saber mais sobre a definição de preço para Simultaneidade provisionada, consulte Definição de preço do AWS Lambda.

P: Quando a Simultaneidade provisionada deve ser usada?

A Simultaneidade provisionada é ideal para criar aplicativos sensíveis à latência, como back-end da Web ou móveis, APIs invocadas de forma síncrona e microsserviços interativos. Você pode configurar facilmente a quantidade apropriada de simultaneidade com base na demanda exclusiva do seu aplicativo. Você pode aumentar a quantidade de simultaneidade durante períodos de alta demanda e reduzi-la ou desativá-la completamente quando a demanda diminuir.

P: O que acontecerá se uma função receber chamadas acima do nível configurado da Simultaneidade provisionada?

Se a simultaneidade de uma função atingir o nível configurado, as chamadas subsequentes dessa função terão as características de latência e escala das funções regulares do Lambda. Você pode restringir sua função para aumentar apenas o nível configurado. Fazer isso impede que a função exceda o nível configurado de Simultaneidade provisionada. Este é um mecanismo para evitar variabilidade indesejada no seu aplicativo quando a demanda excede a quantidade prevista.

Amazon EFS para AWS Lambda

P: O que é o Amazon EFS para AWS Lambda?

Com o Amazon Elastic File System (Amazon EFS) para AWS Lambda, os clientes podem ler, gravar e persistir com segurança grandes volumes de dados em praticamente qualquer escala, usando um sistema de arquivos NFS elástico totalmente gerenciado que pode ser dimensionado sob demanda sem a necessidade de provisionamento ou gerenciamento de capacidade. Anteriormente, os desenvolvedores adicionavam código às suas funções para baixar dados do S3 ou de bancos de dados para o armazenamento temporário local, limitado a 512 MB. Com o EFS para Lambda, os desenvolvedores não precisam escrever código para baixar dados para armazenamento temporário para processá-los.

P: Como configuro o Amazon EFS para Lambda?

Os desenvolvedores podem conectar facilmente um sistema de arquivos EFS existente a uma função Lambda por meio de um Ponto de acesso do EFS usando o console, CLI ou SDK. Quando a função é invocada pela primeira vez, o sistema de arquivos é montado e disponibilizado automaticamente para o código da função. Você pode saber mais na documentação.

P: Preciso definir minha função com as configurações de VPC antes de poder usar meu sistema de arquivos do Amazon EFS?

Sim. Os destinos de montagem para o Amazon EFS estão associados a uma sub-rede em uma VPC. A função do AWS Lambda precisa ser configurada para acessar essa VPC.

P: Quem deve usar o Amazon EFS para Lambda?

Usar o EFS for Lambda é ideal para criar aplicativos de machine learning ou carregar grandes arquivos ou modelos de referência, processar ou fazer backup de grandes quantidades de dados, hospedar conteúdo da Web ou desenvolver sistemas de criação internos. Os clientes também podem usar o EFS para Lambda para manter o estado entre invocações em uma arquitetura de microsserviço com estado, em um fluxo de trabalho StepFunctions ou compartilhar arquivos entre aplicativos sem servidor e aplicativos baseados em instância ou contêiner.

P: Meus dados serão criptografados em trânsito?

Sim. A criptografia de dados em trânsito usa o padrão de mercado Transport Layer Security (TLS) 1.2 para criptografar dados enviados entre as funções do AWS Lambda e os sistemas de arquivos do EFS.

P: Meus dados são criptografados em repouso?

Os clientes podem provisionar o Amazon EFS para criptografar dados em repouso. Os dados ociosos são criptografados de modo transparente enquanto são gravados, e descriptografados (também de modo transparente) quando são lidos. Dessa forma, você não precisa modificar os aplicativos. As chaves de criptografia são gerenciadas pelo AWS Key Management Service (KMS), o que elimina a necessidade de criar e manter uma infraestrutura segura de gerenciamento de chaves.

P: Como serei cobrado pelo Amazon EFS para AWS Lambda?

Não há custo adicional para o uso do Amazon EFS para AWS Lambda. Os clientes pagam o preço padrão pelo AWS Lambda e pelo Amazon EFS. Ao usarem o Lambda e o EFS na mesma zona de disponibilidade, os clientes não são cobrados pela transferência de dados. No entanto, se eles usarem o emparelhamento da VPC para acesso entre contas, taxas de transferência de dados serão cobradas. Para saber mais, consulte a definição de preço.

P: Posso associar mais de um sistema de arquivos do Amazon EFS à minha função do AWS Lambda?

Não. Cada função do Lambda poderá acessar um sistema de arquivos do EFS.

P: Posso usar o mesmo sistema de arquivos do Amazon EFS em várias funções, contêineres e instâncias?

Sim. O Amazon EFS oferece suporte a funções do Lambda, contêineres do ECS e Fargate e instâncias do EC2. Você pode compartilhar o mesmo sistema de arquivos e usar a política e os pontos de acesso do IAM para controlar o que cada função, contêiner ou instância pode acessar.  

Extensões do Lambda

P: O que são as extensões do AWS Lambda?

As extensões do AWS Lambda (em demonstração) permitem integrar o Lambda a ferramentas favoritas para fins de monitoramento, observação, segurança e governança. As extensões permitem que você e os fornecedores de suas ferramentas favoritas conectem-se ao ciclo de vida do Lambda e se integrem mais completamente ao ambiente de execução do Lambda.

P: Como funcionam as extensões do Lambda?

As extensões são processos complementares executados no ambiente de execução do Lambda, o mesmo local em que o código das funções é executado. Além disso, elas podem ser executadas fora da invocação da função. Ou seja, elas começam antes da inicialização da função, executam em paralelo com a função, podem ser executadas após a conclusão da execução da função e também antes que o Lambda encerre o ambiente de execução.

P: Qual a utilidade das extensões do Lambda?

Você pode usar as extensões com suas ferramentas favoritas de monitoramento, observação, segurança e governança da AWS, bem como dos parceiros AppDynamics, Datadog, Dynatrace, Epsagon, HashiCorp, Lumigo, Check Point CloudGuard, New Relic e Thundra, além dos serviços AWS AppConfig e Amazon CloudWatch. Para saber mais sobre essas extensões, acesse a publicação de blog sobre o lançamento.

P: Como configuro e gerencio as extensões do Lambda?

Você pode implantar as extensões usando camadas em uma ou mais funções do Lambda por meio do ferramentas de console, ILC ou infraestrutura como código, como CloudFormation, AWS Serverless Application Model e Terraform. Para começar a usar, consulte a documentação. Durante a demonstração, você pode executar no máximo 10 extensões por função.

P: Com quais tempos de execução posso usar as extensões do AWS Lambda?

Você pode usar as extensões com os tempos de execução .NET Core 3.1 (C#/PowerShell) (dotnetcore3.1), tempo de execução personalizado (provided), tempo de execução personalizado no Amazon Linux 2 (provided.al2), Java 11 (Corretto) (java11), Java 8 (Corretto) (java8.al2), Node.js 12.x (nodejs12.x), Node.js 10.x (nodejs10.x), Python 3.8 (python3.8), Python 3.7 (python3.7), Ruby 2.7 (ruby2.7) e Ruby 2.5 (ruby2.5). As extensões do Lambda e as funções estendidas podem usar tempos de execução diferentes.

P: As extensões são consideradas no limite de pacotes de implantação?

Sim. O tamanho total descompactado da função e de todas as extensões não pode exceder o limite de tamanho de do pacote de implantação descompactado de 250 MB.

P: O uso de uma extensão afeta a performance?

As extensões podem afetar a performance da função porque compartilham recursos, como CPU, memória e armazenamento, com a função e porque são inicializadas antes do código da função. Por exemplo, se uma extensão executa operações com uso intenso de computação, o tempo de execução da função pode aumentar, pois a extensão e o código da função compartilham os mesmos recursos de CPU.

Você pode usar a métrica PostRuntimeExecutionDuration Para medir o tempo extra de execução da extensão após a execução da função e a métrica MaxMemoryUsed para medir o aumento da memória utilizada. Para compreender o impacto de uma extensão específica, você também pode usar a métrica Duration. No momento, a resposta da execução da função é retornada após o término da execução da função e da extensão. Para saber mais, consulte a documentação para desenvolvedores do Lambda.

P: Como serei cobrado pelo uso das extensões do Lambda?

As extensões compartilham o mesmo modelo de faturamento das funções do Lambda. Quando você usa funções do Lambda com extensões, paga pelas solicitações atendidas e pelo tempo de computação combinado usado para executar o código e todas as extensões, em incrementos de 100 milissegundos. O tempo de computação será cobrado de acordo com a definição de preço da duração do Lambda em vigor. Para saber mais, consulte a definição de preço do AWS Lambda.

O ciclo de vida do Lambda consiste em três fases distintas: “início”, quando o AWS Lambda inicializa a função, as dependências e as extensões; “invocação”, quando o Lambda executa o código da função e da extensão como resposta a triggers; e encerramento, após a conclusão da execução da função (o código da extensão pode ainda estar em execução). Para saber mais sobre o ciclo de vida do Lambda, consulte a documentação sobre o ambiente de execução do Lambda.

Nota: um problema conhecido no momento do anúncio desta demonstração é que você é cobrado apenas pelo tempo de computação usado durante a fase de “invocação” do ciclo de vida do Lambda. Todas as fases serão cobradas após a correção desse problema. No entanto, a cobrança não será retroativa, ou seja, não serão cobradas as fases que, devido a esse problema, não foram devidamente cobradas.

Não há custo adicional pela instalação de extensões, mas as ofertas de parceiros podem ser cobradas. Veja o site do parceiro relevante para obter mais detalhes.

P: Posso criar minhas próprias extensões do Lambda?

Sim, usando a API Runtime Extensions do AWS Lambda. Consulte a documentação para saber mais.

P: Como as extensões funcionam com o Provisioned Concurrency habilitado?

O Provisioned Concurrency mantém as funções inicializadas e prontas para responder em menos de 100 milissegundos. Quando habilitado, o Provisioned Concurrency também inicializa as extensões e as mantêm prontas para executar juntamente com o código da função.

P: Quais são as permissões das extensões?

Como as extensões são executadas no mesmo ambiente que a função do Lambda, elas têm acesso aos mesmos recursos que a função. As permissões são compartilhadas entre a função e a extensão. Portanto, elas compartilham as variáveis de credenciais, função e ambiente. As extensões têm acesso somente leitura ao código da função e podem ler e gravar em /tmp.

P: O que é a API Runtime Logs do AWS Lambda?

A API Runtime Logs do AWS Lambda permite que você use extensões para enviar logs das funções do AWS Lambda diretamente a um destino de sua escolha. As extensões usam esta API para se inscrever nos mesmos logs que são transmitidos para o Amazon CloudWatch Logs e podem então processar, filtrar e enviá-los para qualquer destino preferencial.

P: Como a API Runtime Logs funciona?

O serviço Lambda captura automaticamente os logs e os transmite ao Amazon CloudWatch. Esse fluxo contém os logs que são gerados a partir do seu código de função e também aqueles gerados pelo serviço Lambda como parte da invocação.

A API Runtime Logs permite que os autores da extensão assinem os mesmos fluxos de log diretamente de dentro do ambiente de execução Lambda. Depois de receber a solicitação de assinatura, o serviço Lambda transmite logs para a extensão via HTTP ou TCP, além de enviá-los ao CloudWatch.

P: Como faço para começar a usar a API Runtime Logs?

Você pode implantar as extensões que usam a API Runtime Logs usando Camadas em uma ou mais funções do Lambda por meio do ferramentas de console, ILC ou infraestrutura como código, como CloudFormation, AWS Serverless Application Model e Terraform.

Você pode usar as extensões com suas ferramentas favoritas de monitoramento, observação, segurança e governança da AWS, bem como dos parceiros Coralogix, Datadog, Honeycomb, Lumigo, New Relic, Sumo Logic e Amazon CloudWatch. Para saber mais sobre essas extensões, acesse a publicação de blog sobre o lançamento.

P: O uso de uma API Runtime Logs afeta a performance?

Você só pode usar a API Runtime Logs de dentro das extensões AWS Lambda. As extensões podem afetar a performance da função porque compartilham recursos, como CPU, memória e armazenamento, com a função e porque são inicializadas antes do código da função. Por exemplo, se uma extensão executa operações com uso intenso de computação, o tempo de execução da função pode aumentar, pois a extensão e o código da função compartilham os mesmos recursos de CPU. Além disso, cada assinatura da API Runtime Logs pode consumir memória adicional para armazenar logs, além do que a extensão que os contém consome.

P: Como serei cobrado pelo uso da API Runtime Logs?

Não há custo adicional para o uso da API Runtime Logs de AWS Lambda. As extensões que usam a API Runtime Logs compartilham o mesmo modelo de cobrança que outras extensões e funções Lambda. Para saber mais sobre a definição de preço de extensões, consulte as perguntas frequentes.

P: O uso da API Runtime Logs desativa o envio de logs para o Amazon CloudWatch Logs?

Não, por padrão, a plataforma Lambda envia todos os logs para CloudWatch Logs e o uso da API Runtime Logs não desativa a saída para CloudWatch Logs.

Lambda@Edge

P: O que é o Lambda@Edge?

O Lambda@Edge permite que você execute códigos 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 ou Python 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 oferece suporte para o Node.js e o Python 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. Todas as informações necessárias para tomar uma decisão devem estar disponíveis na borda CloudFront, dentro da função e da solicitação. Isso significa que os casos de uso de tomada de decisões sobre como distribuir conteúdo com base nas características do usuário (por exemplo, localização, dispositivo do cliente, etc.) já podem ser executados e distribuídos perto dos usuários, sem que seja necessário acessar um servidor centralizado.

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

Você pode associar funções do Lambda a eventos do CloudFront para invocação global, desde que a função atenda aos requisitos e limites de serviço 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 na borda 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 na borda 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 na borda 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 acontecerá 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 do Amazon Kinesis Streams e do Amazon DynamoDB Streams serão repetidos até que a função do Lambda seja bem-sucedida ou os dados expirem. O Amazon Kinesis e o Amazon DynamoDB Streams 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 acontecerá 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 do Amazon Kinesis Streams e do Amazon DynamoDB Streams 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 acontecerá 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 Configuração do 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 à sua função do Lambda também determina quais recursos o AWS Lambda pode sondar em seu nome. Consulte o guia para desenvolvedores do Lambda para saber mais.

P: Como eu controlo qual fila do Amazon SQS pode ser sondada por uma função do AWS Lambda?

Os controles de acesso podem ser gerenciados pela função da função do Lambda ou por uma configuração de política de recursos na própria fila. Se as duas políticas estiverem presentes, serão aplicadas as permissões mais restritivas.

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 a 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 uma localização do Amazon S3 onde o arquivo ZIP esteja. Para obter mais detalhes, consulte a 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”

Funções do AWS Lambda no PowerShell

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

Um pacote de implantação do Lambda para PowerShell é um arquivo ZIP que contém o script do PowerShell, os módulos do PowerShell necessários para o seu script do PowerShell e as montagens necessárias para hospedar o PowerShell Core. Assim, use o módulo PowerShell do AWSLambdaPSCore, que pode ser instalado da PowerShell Gallery, para criar seu pacote de implantação do PowerShell Lambda.

P: Como faço para implantar o código da função do AWS Lambda codificado em PowerShell?  Um pacote de implantação do Lambda para PowerShell é um arquivo ZIP que contém o script do PowerShell, os módulos do PowerShell necessários para o seu script do PowerShell e as montagens necessárias para hospedar o PowerShell Core. Assim, use o módulo PowerShell do AWSLambdaPSCore, que pode ser instalado da PowerShell Gallery, para criar seu pacote de implantação do PowerShell Lambda.
P: Como faço para implantar o código da função do AWS Lambda codificado em PowerShell?  Um pacote de implantação do Lambda para PowerShell é um arquivo ZIP que contém o script do PowerShell, os módulos do PowerShell necessários para o seu script do PowerShell e as montagens necessárias para hospedar o PowerShell Core. Assim, use o módulo PowerShell do AWSLambdaPSCore, que pode ser instalado da PowerShell Gallery, para criar seu pacote de implantação do PowerShell Lambda.

Funções do AWS Lambda em Go

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

Faça o upload de seu artefato executável do Go como um arquivo ZIP por meio do console do AWS CLI ou Lambda e selecionar o tempo de execução go1.x. Com o Lambda, você pode usar as ferramentas nativas do Go para criar e empacotar seu código. Leia nossa documentação para obter mais detalhes. 

Funções do AWS Lambda em Ruby

P: Como implantar o código da função do AWS Lambda codificado em Ruby? 

Para implantar uma função do Lambda codificada em Ruby, empacote seu código Ruby e gems como um ZIP. Você pode fazer o upload do ZIP do seu ambiente local ou especificar uma localização do Amazon S3 onde o arquivo ZIP esteja.

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 tempo de execução de linguagem?

Não, o AWS Lambda oferece uma única versão do sistema operacional e tempo de execução de linguagem gerenciada para todos os usuários do serviço. Você pode trazer seu próprio tempo de execução de linguagem para usar no Lambda.

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?
Cadastre-se
Tem outras dúvidas?
Entre em contato conosco