Estou tentando criar uma função AWS Lambda baseada em python e preciso importar um módulo. Eu segui as instruções emCriando um pacote de implantação (Python)na Amazon.
Quando eu crio e carrego o arquivo ZIP, o ZIP inclui:
Na pasta usaddress, coloquei as dependências usaddress, embora eu esteja apenas supondo que é a esse lugar que elas pertencem.
De qualquer forma, quando faço o upload do arquivo para o Lambda, retorna um erro:
{
"errorMessage": "Unable to import module 'Tester2'"
}
START RequestId: e9c2cafe-3705-11e6-a289-5366a5578765 Version: $LATEST
Unable to import module 'Tester2': No module named future.builtins
END RequestId: e9c2cafe-3705-11e6-a289-5366a5578765
O arquivo usaddress/pycrfsuite/_pycrfsuite.pyd está sendo importado pelo usaddress/pycrfsuite __init_
arquivo. O _pycrfsuite está no diretório correto, mas não sei por que está sendo ignorado.
Como faço para que isso funcione?
Responder1
Depois de muita pesquisa, percebi que os arquivos .pyd (que é o tipo de arquivo que estava sendo ignorado) são arquivos cython compilados e que compilam de maneira diferente em sistemas DOS e UNIX. Então abri uma instância do EC2, instalei o usaddress, a biblioteca de dependências, e copiei no arquivo .so a instância do ec2 compilada.
Isso acabou funcionando, então era realmente um problema de arquivos de sistema incompatíveis.