Eu tenho uma função Lambda simples que está usando a numpybiblioteca,
configurei um ambiente virtual em meu local e meu código é capaz de buscar e usar a biblioteca localmente.
Tentei usar a camada do AWS Lambda, fechei a venvpasta e carreguei para a camada.
Em seguida, anexei a camada e a versão corretas à minha função,
mas a função não é capaz de buscar a biblioteca
A seguir está o código que funciona bem no local -
import numpy as np
def main(event, context):
a = np.array([1, 2, 3])
print("Your numpy array:")
print(a)
A seguir está a estrutura venv que eu compilei e carreguei -

Eu obtenho o seguinte erro -
{
"errorMessage": "Unable to import module 'handler': No module named 'numpy'",
"errorType": "Runtime.ImportModuleError"
}
Minha implantação Lambda se parece com isto -

Estou tentando referir isso -
https://towardsdatascience.com/introduction-to-amazon-lambda-layers-and-boto3-using-python3-39bd390add17
Eu vi que algumas bibliotecas como numpy e pandas não funcionam no Lambda quando instaladas usando pip. Tive sucesso ao usar os .whlarquivos de pacote dessas bibliotecas para criar a camada Lambda. Consulte as etapas abaixo:
NOTA: Essas etapas configuram as bibliotecas específicas para o tempo de execução do Python 3.7. Se usar qualquer outra versão, você precisará baixar os
.whlarquivos correspondentes a essa versão do Python.
Crie uma instância EC2 usando Amazon Linux AMI e SSH nesta instância. Devemos criar nossa camada no Amazon Linux AMI enquanto o Lambda Python 3.7 runtime é executado neste sistema operacional (doc) .
Certifique-se de que esta instância tenha o Python3 e a ferramenta "pip" instalados.
Baixe o arquivo numpy .whl para a cp37versão Python e o manylinux1_x86_64sistema operacional executando o comando abaixo:
$ wget https://files.pythonhosted.org/packages/d6/c6/58e517e8b1fb192725cfa23c01c2e60e4e6699314ee9684a1c5f5c9b27e1/numpy-1.18.5-cp37-cp37m-manylinux1_x86_64.whl
.whl para a cp37versão Python e o manylinux1_x86_64sistema operacional executando o comando abaixo:$ wget https://files.pythonhosted.org/packages/a4/5f/1b6e0efab4bfb738478919d40b0e3e1a06e3d9996da45eb62a77e9a090d9/pandas-1.0.4-cp37-cp37m-manylinux1_x86_64.whl
$ mkdir python $ unzip pandas-1.0.4-cp37-cp37m-manylinux1_x86_64.whl -d python/
$ unzip numpy-1.18.5-cp37-cp37m-manylinux1_x86_64.whl -d python/
$ pip3 install -t python/ pytz
$ cd python $ sudo rm -rf *.dist-info
Isso instalará todas as bibliotecas necessárias para executar o pandas e o numpy.
Compacte o diretório "python" atual e carregue-o em seu balde S3. Certifique-se de que as bibliotecas estejam presentes na hierarquia conforme fornecida aqui .
$ cd .. $ zip -r lambda-layer.zip python/
$ aws s3 cp lambda-layer.zip s3://YOURBUCKETNAME
Base em aws lamda layer doc, https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html seu pacote zip para a camada deve ter esta estrutura.
my_layer.zip
| python/numpy
| python/numpy-***.dist-info
Portanto, o que você precisa fazer é criar uma pasta python e colocar o conteúdo dos pacotes do site dentro dela e, em seguida, compactar essa pasta python. Eu tentei isso com um pacote simples e parece funcionar bem.
Também tenha em mente que alguns pacotes requerem compilação c / c ++, e para que isso funcione você deve instalar e empacotar em uma máquina com arquitetura semelhante ao lambda. Normalmente, você precisaria fazer isso em um EC2, onde instala e empacota, onde tem uma arquitetura semelhante ao lambda.
Essa é uma pergunta meio enganosa , porque você pelo menos não mencionou que usa serverless. Eu o encontrei no instantâneo da estrutura do projeto que você forneceu. Isso significa que você provavelmente usa serverlesspara implantação de seu projeto dentro do provedor AWS.
Na verdade, existem várias maneiras de organizar lambda layer. Vamos dar uma olhada em cada um deles.
Native AWSUma vez que você vai navegar para Add a layer, você encontrará 3 opções: [AWS Layers, Custom Layers, Specify an ARN;].
Specify an ARNPessoal, quem fez todo o trabalho para vocês:
KLayers
então, você precisa numpy, ok. Dentro de função lambda navegar para as camadas -> criar uma nova camada -> de 3 opções, escolher Specify an ARNe como o valor de venda: arn:aws:lambda:eu-west-1:770693421928:layer:Klayers-python38-numpy:12. Isso resolverá seu problema e você poderá trabalhar com numpyNamespace.
Custom Layers
Escolha uma camada em uma lista de camadas criada por sua conta ou organização AWS.
Para camadas personalizadas, a forma de implementação pode ser diferente com base em seus requisitos em termos de implantação. Se você tem permissão para realizar as coisas manualmente, você deve dar uma olhada no seguinte artigo do Medium . Suponho que isso irá ajudá-lo!
AWS Layers
Quanto às camadas de pré-construção da AWS, tudo é simples.
Camadas fornecidas pela AWS que são compatíveis com o tempo de execução de sua função. Pode diferenciar entre
runtimes
Para mim, tenho uma lista de: Perl5, SciPy, AppConfig Extension
ServerlessDentro das serverlesscoisas é muito mais fácil, porque você pode definir suas camadas diretamente com a definição lambda no serverless.ymlarquivo. Posteriormente, COMO defini-los também pode ser diferente.
Os exemplos podem ser encontrados em: Como publicar e usar AWS Lambda Layers com o Serverless Framework
Se você tiver alguma dúvida, sinta-se à vontade para expandir a discussão. Felicidades!
Jana Duggar foi aberta sobre sua busca pelo amor. Aqui está tudo o que ela disse sobre o assunto e sua janela de cinco anos para o casamento.
O astro de 'Outlander', Sam Heughan, revelou recentemente o que vai levar do set para relembrar Jamie Fraser, o papel que o tornou uma estrela.
'She Loves You' foi escrita em uma hora, gravada em um dia, e foi a música dos Beatles com uma de suas melhores apresentações de sua carreira.
Dolly Parton e sua avó Bessie tiveram um relacionamento especial. Vovó Parton estava muito doente, mas isso não impediu Dolly de pregar uma peça nela.
Você pode achar que o carvalho ou a nogueira são madeiras resistentes, mas quando se trata da madeira mais dura do mundo, elas nem chegam perto.
O oceano é repleto de beleza, mas também esconde algumas das criaturas marinhas mais assustadoras do planeta. Muitos desses animais espreitam nas profundezas do oceano, no mundo escuro e de alta pressão do fundo do mar.
Se você está enfrentando criaturas hostis ou se preparando para cenários PvP, conhecer os melhores encantamentos de espada no Minecraft pode te dar uma grande vantagem. Encantar espadas permite causar mais dano, aumentar a quantidade de itens obtidos de criaturas e prolongar a durabilidade da sua espada.
Quando as pessoas falam sobre países socialistas, geralmente imaginam o controle total do governo e a ausência de propriedade privada. Mas, na prática, as economias socialistas variam muito.
“Children” traz uma participação especial de grande nome e algumas notícias devastadoras
Este RAV4 está em excelentes condições e está preparado para um jogo de cadeiras musicais.
Imagens de drone capturaram bombeiros parecendo lutar para apagar o incêndio.
Eyes of Wakanda está diretamente relacionado ao MCU, além de atualizações sobre X-Men '97, What If..., Demolidor e muito mais.
O anel de noivado de Kate Middleton pertenceu à Princesa Diana antes do Príncipe William pedi-la em casamento. Descubra tudo o que há para saber sobre a peça histórica aqui.
John Cleese se casou com sua esposa, Jennifer Wade, em 2012. Aqui está tudo o que você precisa saber sobre a esposa de John Cleese, Jennifer Wade.
Patton Oswalt se casou com sua esposa, a também atriz Meredith Salenger, em 2017. Aqui está tudo o que você precisa saber sobre a esposa de Patton Oswalt, Meredith Salenger.
Mena Suvari é casada com o marido Michael Hope desde 2018. Aqui está tudo o que você precisa saber sobre o marido de Mena Suvari.
Isso me atinge De repente, como tantas vezes acontece É o meio do caminho tudo de novo <Não, não aquele no Pacífico, seu marrom, aquele no carnaval> Todas as manchetes em voz alta…..
Em 2022, com o lançamento do GPT-3, a habilidade de escrita parece se tornar menos importante. Com a IA, pessoas com redação ruim também podem gerar funcionários de qualidade.
No mundo acelerado e competitivo de hoje, a carreira desempenha um papel significativo no crescimento pessoal, na estabilidade financeira e na satisfação geral com a vida. No entanto, muitos indivíduos encontram-se presos em um ciclo implacável de estagnação e insatisfação, definhando gradualmente em suas vidas profissionais.
Na semana passada, notei um comunicado de imprensa, enviado via PressGazette (um site de notícias da mídia britânica). O artigo anunciava que a Acast, a empresa de publicidade e hospedagem de podcast Scandi, lideraria um consórcio de "provavelmente os editores mais influentes" em podcasting.