AWS Lambda - Função em Python
Neste capítulo, criaremos uma função simples do AWS Lambda em Python e entenderemos seus conceitos de trabalho seguindo os detalhes.
Antes de continuar a trabalhar na criação de uma função Lambda no AWS, precisamos do suporte do kit de ferramentas AWS para Python. Para isso, siga os passos abaixo e observe as capturas de tela correspondentes anexadas -
Passo 1
Faça login no console AWS, crie a função Lambda e selecione o idioma como Python.

Passo 2
Agora clique Create functione insira os detalhes para criar um AWS Lambda simples em Python. Este código retorna a mensagemHello from Lambda using Python e parece como mostrado aqui -

etapa 3
Agora, salve as alterações e teste o código para ver a saída. Você deve ver a seguinte saída e logs ao testá-lo no console da AWS usando o botão de teste da IU.

Passo 4
Agora, você pode escrever código dentro de qualquer editor ou IDE para Python. Aqui, estamos usando o código do Visual Studio para escrever o código. Posteriormente, você deve compactar o arquivo e fazer o upload no console da AWS.

Aqui, compactamos o código e o usamos no console da AWS.
Etapa 5
Agora, selecione Upload a .ZIP file opção como mostrado abaixo -

Detalhes do manipulador para Python
Observe que o manipulador deve ser o nome do arquivo seguido pelo nome da função. No caso acima, nosso nome de arquivo éhellopython.py e o nome da função é my_handler; então o manipulador será hellopython.my_handler.
Depois que o upload é feito e as alterações salvas, ele realmente mostra os detalhes do arquivo zip no editor online no console do AWS Lambda. Agora, vamos testar o código para ver a saída e os logs.

Agora, vamos entender os detalhes da função Lambda usando o seguinte código de exemplo -
def my_handler(event, context):
return "aws lambda in python using zip file"
No código acima, o nome da função my_handler tem 2 parâmetros, evento e contexto.
Objeto de contexto em Python
O objeto de contexto fornece detalhes como o nome da função Lambda, tempo restante em milissegundos, ID da solicitação, nome do grupo de observação da nuvem, detalhes de tempo limite etc.
Os métodos e atributos disponíveis no objeto de contexto são mostrados nas tabelas fornecidas abaixo -
Sr. Não | Nome e descrição do método |
---|---|
1 | get_remaining_time_in_millis() Este método fornece o tempo restante em milissegundos até que a função lambda termine a função |
Sr. Não | Atributo e descrição |
---|---|
1 | function_name Isso dá o nome da função aws lambda |
2 | function_version Isso dá a versão da função lambda de aws em execução |
3 | invoked_function_arn Isso fornecerá detalhes do ARN. |
4 | memory_limit_in_mb Isso mostra o limite de memória adicionado ao criar a função lambda |
5 | aws_request_id Isso fornece o id do pedido aws. |
6 | og_group_name Isso dará o nome do grupo Cloudwatch |
7 | log_stream_name Isso fornecerá o nome do fluxo de log do Cloudwatch onde os logs são gravados. |
8 | identity Isso fornecerá detalhes sobre o provedor de identidade cognito amazon quando usado com o aws mobile sdk. Os detalhes fornecidos são os seguintes -
|
9 | client_context Isso fornecerá detalhes do aplicativo cliente quando usado com o aws mobile sdk. Os detalhes fornecidos são os seguintes -
|
Vamos ver um exemplo de trabalho em Python que mostra os detalhes do contexto. Observe o código fornecido abaixo -
def my_handler(event, context):
print("Log stream name:", context.log_stream_name)
print("Log group name:", context.log_group_name)
print("Request ID:",context.aws_request_id)
print("Mem. limits(MB):", context.memory_limit_in_mb)
print("Time remaining (MS):", context.get_remaining_time_in_millis())
return "aws lambda in python using zip file"
A saída correspondente do código mostrado acima é fornecida abaixo -

Registro usando Python
Para registrar informações usando Python, podemos usar a função de impressão ou logger disponível. Vamos usar o exemplo de contexto acima e verificar inCloudWatch para ver se os logs são impressos. Observe o seguinte código -
def my_handler(event, context):
print("Log stream name:", context.log_stream_name)
print("Log group name:", context.log_group_name)
print("Request ID:",context.aws_request_id)
print("Mem. limits(MB):", context.memory_limit_in_mb)
print("Time remaining (MS):", context.get_remaining_time_in_millis())
return "aws lambda in python using zip file"
A saída deste código no CloudWatch é mostrada abaixo -

Observe o exemplo a seguir para entender sobre como usar o logger para imprimir logs para CloudWatch -
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def my_handler(event, context):
logger.info('Using logger to print messages to cloudwatch logs')
return "aws lambda in python using zip file"
A saída para isso será como mostrado na captura de tela fornecida abaixo -

Tratamento de erros em Python para função Lambda
Nesta seção, vamos ver um exemplo prático que mostra como manipular erros em Python. Observe o trecho de código fornecido aqui -
def error_handler(event, context):
raise Exception('Error Occured!')

A exibição do log é como mostrado na imagem aqui -
