Imagine que você precisa executar um script Python na função AWS Lambda e recebe este erro?
{ "errorMessage": "Unable to import module 'lambda_function': No module named 'pandas', "errorType": "Runtime.ImportModuleError" ... }
Não se preocupe, este é um erro comum e não vou demorar tanto
Existem várias maneiras, mas vou mostrar a maneira mais fácil de importar pandas na função AWS Lambda: adicionar camada Lambda ?
É um? camada de queijo na função Lambda contendo código adicional como bibliotecas, dependências, etc.
AWS Lambda Layers são como blocos de construção para suas funções. Imagine que você precisa de ferramentas extras (como a biblioteca Pandas) para concluir um projeto. Em vez de empacotar todas essas ferramentas dentro de cada projeto (o que desperdiça espaço e tempo), a AWS permite criar camadas de ferramentas (bibliotecas, dependências ou código compartilhado). Essas camadas ficam fora de sua função principal, mas estão sempre disponíveis quando sua função precisa delas.
Resumindo, as camadas Lambda ajudam você a:
Economize espaço no seu código separando a lógica principal das bibliotecas extras.
Reutilize bibliotecas e códigos em várias funções do Lambda.
Atualize ou gerencie facilmente suas dependências sem alterar o código de função principal.
Pense nas camadas como uma caixa de armazenamento extra anexada à sua função Lambda, contendo tudo o que sua função precisa para funcionar sem problemas. Você pode empilhar várias camadas em sua função sem sobrecarregar seu código principal.
São necessárias apenas 3 etapas para executar o Pandas em sua função Lambda com sucesso
Como você pode ver, temos uma opção Layers sob o nome de nossa função Lambda, no meu caso, é "import-pandas-function" e a contagem de camadas é 0
Esta etapa é dividida em duas etapas porque precisamos adicionar um script Python que contenha algum código Pandas e escrever um evento de teste em JSON para verificar se o código está sendo executado corretamente.
import json import pandas as pd def lambda_handler(event, context): data = event.get('data', []) df = pd.DataFrame(data) if not df.empty: mean_value = df['column_name'].mean() result = { "mean_value": mean_value, "data_shape": df.shape, "summary": df.describe().to_dict() } else: result = { "message": "Empty DataFrame" } # Return the response return { 'statusCode': 200, 'body': json.dumps(result) }
{ "data": [ {"column_name": 10, "other_column": "A"}, {"column_name": 20, "other_column": "B"}, {"column_name": 30, "other_column": "C"}, {"column_name": 40, "other_column": "D"} ] }
Pressione o botão de teste e provavelmente receberá o ?error:-
"errorMessage": "Não foi possível importar o módulo 'lambda_function': Nenhum módulo chamado 'pandas',
"errorType": "Runtime.ImportModuleError"
...
Role para baixo até sua função Lambda, você provavelmente verá a seção separada "Camadas" no final da página
Depois de clicar em "Adicionar uma camada", você pode ver a página que possui algumas seções "Configurações de tempo de execução da função" e "Escolher uma camada"
Você pode ver três opções na seção "Escolha uma camada", clique em "Camadas AWS".
Depois de selecionar as camadas AWS, você pode ver o menu suspenso em "Camadas AWS".
Em uma lista suspensa de "camadas AWS", selecione -> AWSSDKPandas-Python312
Em uma lista suspensa de "Versão", selecione -> 13(selecione a mais)
clique no botão "Adicionar"
Quando sua página é direcionada para a visão geral da função, você pode ver que a camada é adicionada abaixo do nome da função "import-pandas-function"
Você obteve a resposta "statusCode": 200
{ "statusCode": 200, "body": "{\"mean_value\": 25.0, \"data_shape\": [4, 2], \"summary\": {\"column_name\": {\"count\": 4.0, \"mean\": 25.0, \"std\": 12.909944487358056, \"min\": 10.0, \"25%\": 17.5, \"50%\": 25.0, \"75%\": 32.5, \"max\": 40.0}}}" }
Continuar codificando?
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3