
Compartilhar:
Adam é um desenvolvedor e consultor que gosta de corridas de ultramaratona, escrever em blogs e gravar vlogs, além de ajudar outras pessoas a dominar a tecnologia para realizar coisas incríveis, movido por um desejo insaciável de orientar e ajudar.
Python sem servidor com o AWS Lambda
Tempo de leitura: 8 minutos
O uso do Python em ambientes sem servidor pode ser mais automatizado do que o que mostrei na minha postagem anterior postagem anterior, que utilizava PHP e Bref. Na AWS, já existem ambientes pré-configurados que facilitam a implantação inicial sem a necessidade de ferramentas adicionais. No entanto, o uso de ferramentas como o Serverless Framework ainda traz valor.
Este exemplo criará um função do AWS Lambda para Python usando Serverless. Em seguida, adicionaremos um API Gateway para disponibilizá-la por meio de um cliente HTTP ou navegador de sua escolha.
Pré-requisitos
Aqui estão os itens necessários para acompanhar todos os exemplos:
Node.js para instalar o Serverless
Sem servidor para facilitar a criação e o gerenciamento de ambientes
Account da AWS e chaves de acesso de um usuário com acesso ao AWS S3 , bem como AWS Lambda
Abordagem do Console da AWS
Para a criação de funções básicas, é possível usar o Console da AWS para acessar a área de gerenciamento do Lambda e clicar Create Function no canto superior direito. Em seguida, você deve nomear e selecionar o ambiente desejado.
AWS Console Lambda Python Function Creation
Estrutura sem servidor
Embora o Console da AWS possa realizar as tarefas essenciais para criar uma função, vamos usar o Serverless Framework daqui em diante, que é uma “solução completa para a criação e operação de aplicativos sem servidor”. Ao usar o Serverless Framework, temos acesso a scripts para automatizar qualquer repetição potencial do processo, bem como a um código inicial para validação imediata. Portanto, nosso primeiro passo é instalar esse framework no sistema de desenvolvimento que você está usando. Recomendamos instalá-lo globalmente, para permitir o uso de qualquer lugar por meio da CLI.
Credenciais da AWS
Após instalar o Serverless, certifique-se de também ter configurado as credenciais da AWS necessárias para que o Serverless interaja com os diversos serviços da AWS (S3, Lambda e, eventualmente, EC2 ou bancos de dados, conforme necessário). Neste exemplo, utilizaremos apenas o S3 e o Lambda. Você pode ler mais sobre isso em serverless.com.
Criar base
O Serverless irá guiá-lo por algumas etapas para ajudá-lo a criar uma estrutura inicial. Para isso, execute o Serverless a partir do diretório do projeto por meio da CLI.
Siga as instruções
O Serverless começará a orientá-lo na criação de um novo projeto, indicando o tipo de projeto que você deseja criar (Node.js, Python ou Outro), um nome para esse projeto e se você deseja ativar serviços adicionais do Serverless (o que requer um Account no Serverless). Após a conclusão, a estrutura básica será gerada.
AWS Lambda Python Project Creation With Serverless
Exemplo de arquivo YML
A título de exemplo, segue abaixo um serverless.yml arquivo inicial criado pelo processo:
service: app
provider:
name: aws
runtime: python3.8
functions:
hello:
handler: handler.helloNo arquivo, observe o nome do serviço, que você pode alterar para se adequar às convenções de nomenclatura desejadas para suas funções. Por padrão, ele terá o nome que você especificou durante a criação do projeto.
Em seguida, podemos ver as informações do provedor do AWS Lambda com o ambiente de execução Python.
Em seguida, há a seção que descreve os detalhes da função. Está incluído o manipulador inicial para testá-la tanto como função quanto como HTTP (o que requer uma etapa adicional, mostrada mais adiante).
Implantação no AWS Lambda
Tanto para casos de uso de Função quanto de HTTP, o projeto padrão serverless projeto oferece uma estrutura básica suficiente para ser implantado diretamente no AWS Lambda e testado usando o Serverless. Aproveitando a configuração de credenciais da AWS adicionada anteriormente, o Serverless fará a implantação diretamente no Lambda usando o conteúdo de serverless.yml como critérios.
IMPORTANTE: O aplicativo de exemplo, da forma como está, não possui nenhum mecanismo de autenticação ou verificação. Qualquer pessoa com acesso à URL fornecida após a implantação poderá acessá-lo. Isso pode resultar em cobranças inesperadas em seus Accounts. Portanto, proteja o aplicativo caso pretenda mantê-lo ativo.
Testando a função
No caso de uma função, há duas maneiras de testá-la. Uma delas é usar o Console da AWS, enquanto a segunda é usar o Serverless por meio da CLI do sistema utilizado para a implantação.
Console da AWS
No Console da AWS, selecione o item Lambda na lista de serviços de computação.
AWS Console-Lambda Dashboard
No painel do Lambda, você pode selecionar a função criada e criar um novo teste clicando em Configure test events. Como alternativa, você pode clicar no Test botão para receber a mesma solicitação.
Lambda Create Test
Para testar o esboço criado, adicione um nome e altere ligeiramente o JSON no corpo da mensagem.
Configure Test Events
Ao clicar no Create botão na parte inferior da caixa de diálogo, você poderá clicar no Test botão para executar o teste. A execução deve resultar em uma área verde na caixa de diálogo que você pode expandir para exibir os resultados.
Lambda Test Results
Execução de funções sem servidor
Conforme mencionado acima, você também pode usar a CLI do Serverless para testar a função, executando o seguinte comando a partir da raiz do aplicativo local:
Exemplo de resultado:
Serverless Lambda Function Execution
Testando uma função HTTP
Você também pode testar como uma função HTTP. No entanto, para fazer isso, será necessário adicionar um gatilho do API Gateway no Console do AWS Lambda. O gatilho poderia ter sido especificado no serverless.yml também, mas, para este exemplo básico, é bom que você saiba como fazer isso manualmente.
Na página de propriedades da função Lambda, clique Add Trigger na área do Designer. Na janela de diálogo que aparecer, selecione API Gateway na lista.
Add an API Gateway Trigger
Em seguida, defina o gatilho para Create a new API e selecione HTTP API antes de clicar no Add botão.
Define the API Gateway Trigger
Após adicionar o gatilho do API Gateway, agora é possível acessar a URL fornecida pelo gatilho usando um cliente HTTP ou um navegador comum.
Request the Function in a Browser
E agora?
Depois de criar uma função do AWS Lambda, você pode continuar adicionando mais código e criando aplicativos em Python mais robustos, aproveitando as tecnologias sem servidor disponíveis atualmente. Fique atento às próximas publicações, que mostrarão como criar funções úteis para aproveitar as APIs e os serviços da Vonage usando o AWS Lambda.