Não é possível usar o módulo de Pedidos no Lambda AWS
Preciso de fazer uma chamada de descanso dentro de um script python, que funciona uma vez por dia.
Não posso embalar o pacote "requests" no meu pacote python usando o AWS Lambdas. Obtenho o erro:"incapaz de importar o módulo 'lambda_function': nenhum módulo chamado lambda_function "
Passei para o guião predefinido do hello_world. Posso embalá-lo num zíper e carregá-lo. Tudo funciona. Assim que eu colocar "pedidos de importação" no arquivo, eu recebo este erro.
Aqui está o que eu já fiz. did:
- as permissões do zip e da pasta do projecto (incluindo sub-pastas) são definidas como `chmod 777`. Então as permissões não devem ser um problema.
- o programa em si está dentro da pasta raiz. Quando você abre o arquivo zip, você o vê diretamente.
- instalei o pacote de pedidos na pasta de topo do projecto, usando o 'sudo pip install requests-t PATH_ TOO_ ROOT_FOLDER'
o nome de tudo se parece com isto:
- ficheiro zip: função lambda_function.zip
- ficheiro py: lambda_function.py
- Método de tratamento: lambda_handler (evento, contexto)
- manipulador-definição na " webconfig: lambda_function.lambda_handler
o ficheiro que quero executar no final parece-se com isto:
import requests
import json
def lambda_handler(event, context):
url = 'xxx.elasticbeanstalk.com/users/login'
headers = {"content-type": "application/json", "Authorization": "Basic Zxxxxxxxxx3NjxxZxxxxzcw==" }
response = requests.put(url, headers=headers, verify=False)
return 'hello lambda_handler'
Fico feliz por qualquer tipo de Ajuda. Já usei várias horas neste assunto.
16
3 answers
Para usar o módulo de pedidos, pode simplesmente importar requests
de botocore.vendored
. Por exemplo:
from botocore.vendored import requests
def lambda_handler(event, context):
response = requests.get("https://example.com/")
print response.json
Você pode ver este gist para saber mais módulos que podem ser importados diretamente na AWS lambda
69
Author: Sining Liu, 2018-01-29 06:46:39
Finalmente resolvi o problema: a estrutura do meu arquivo zip estava quebrada. É importante que o script python e as dependências empacotadas (como pastas) estejam na raiz do arquivo zip. Isto resolveu o meu problema.
É um pouco deprimente encontrar erros tão fáceis depois de horas de tentativas e falhas.
10
Author: codepleb, 2016-11-22 12:30:48
Acho que tens na consola Lambda. Você precisa primeiro criar o pacote de implementação da função Lambda, e, em seguida, usar o console para carregar o pacote.
- você cria uma pasta, por exemplo
project-dir
no seu sistema (localmente) - crie
lambda_function.py
emproject-dir
, Copie o conteúdo de {[[0]} da consola lambda e cole-o emproject-dir/lambda_function.py
pip install requests -t /path/to/project-dir
- fecha o conteúdo do directório
project-dir
, que é o teu pacote de implementação (fecha o conteúdo do directório, não é o directório)
Vá para a consola Lambda, seleccione Enviar o ficheiro zip no tipo de entrada de código e envie o seu pacote de implementação. Os pedidos de importação devem funcionar sem qualquer erro.
5
Author: Pramod Munemanik, 2017-12-20 10:20:40