2017-05-09 42 views
13

no'lu hatalar verir. Kodumu, pandaları içe aktaran AWS Lambda'da çalıştırmaya çalışıyorum. İşte burada yaptığım şey. Ben şöyle basit bir kod içeren bir piton dosyası var ben bir dağıtım paketi olarak numpy, pandalar ve pytz kütüphaneleri ile birlikte bu piton dosyayı sıkıştırılmış olanAWS lambdadaki pandalar,

import json 
print('Loading function') 
import pandas as pd 
def lambda_handler(event, context): 
    return "Welcome to Pandas usage in AWS Lambda" 
  1. (Bu dosya lambda işleyicisi vardır) (mü tüm bu Amazon EC2 linux makine)
  2. sonra
  3. bir lambda fonksiyonunu (işletim zamanı = python3.6 oluşturuldu) ve S3
  4. gelen dağıtım paketi yüklenmiş
S3 içine paketi yüklenmiş Ben AWS Lambda içinde lambda fonksiyonu test ederkenAma aşağıdaki hatayı alıyorum:

Unable to import module 'lambda_function': Missing required dependencies ['numpy'] 

Zaten sıkıştırılmış paketinde numpy var ama yine de bu hatayı alabilirsiniz. Pandas & AWS Lambda'da verilen ipuçlarını takip etmeye çalıştım ama şans yok.

Aynı konuya giren biri var mıydı? Bu sorunu çözmek için herhangi bir ipucu veya önerileriniz için teşekkür ederiz. python3.6 motorunu kullanmaya çalışırken

Teşekkür

+0

Vay, bunun çok kolay olduğunu bilmiyordum (van python'unda kendi pandalar gibi yardımcılarımı lambda için yazıyordum). –

+1

Bu amazon linux makinesinde pandalar, numpy vb. Derlediniz mi? Çünkü onları orada derlemelisin, sadece zip'i değil. –

+0

@AdamOwczarczyk cevabınız için teşekkür ederiz. Paketlerin nasıl derleneceğini/oluşturulacağını anlamak için çok zaman harcadım. Bu girişimde, bu blog gönderisini takip ettim (https://blog.datapolitan.com/2015/08/25/installing-matplotlib-and-pandas-on-amazon-ec2/). Ama yine de şans :( – Kingz

cevap

0

Ben benzer bir hata ile mücadele ediyorum. 2.7'ye geçtiğimde benim için iyi çalıştı. Benim zip dosyası oluşturmak için Amazon AMI kullandım, ancak 3.6 değil sadece python3.5 vardır. Sürüm uyumsuzluğu nedeni sanırım. Ama bu sadece bir tahmin, henüz bir python3.6 kurulumunda işlemi denemedim.

3

DÜZENLEME: AWS Lambda python 3.6 çalışma ortamı ortamında phonları & numpy'yi nasıl çalıştıracağımı anladım.

aşağıdaki repo için yaptığım dağıtım paketi yükledik

: S3 ve kaynağına

zip -ur lambda.zip lambda_function.py

yükle için:

git clone https://github.com/pbegle/aws-lambda-py3.6-pandas-numpy.git

Basitçe çalıştırarak lambda_function.py zip dosyası eklemek lambda.

ORİJİNAL:

Bir lambda fonksiyonu çalışmaya pandalar aldık tek yolu piton 2.7 kullanılarak ardından this blog post gelen adımları izleyerek bir AWS Linux EC2 örneğinde pandalar (ve numpy) kütüphaneleri derlemek ve ile lambda fonksiyonum için çalışma zamanı.

+0

Bir python 3.6 çalışma ortamı ortamında nasıl yapılacağını bilmek ister misiniz? Birisi bunu anlarsa – pbegle

+0

bunu nasıl yapacağınızı açıklayabilir miydiniz? Diğer paketlere teşekkürler – kd88

+2

I wro tam olarak nasıl yapılacağı hakkında bir blog yazısı. Şuna bir göz atın: https://medium.com/i-like-big-data-and-i-cannot-lie/how-to-create-an-aws-lambda-python-3-6-deployment-package -using-docker-d0e847207dd6 – pbegle

0

Lambda'da ek kütüphaneler almak için onları Amazon Linux'ta derlememiz gerekir (temel kütüphane Numpy için C veya C++'ya dayanıyorsa bu önemlidir) ve bunları istediğiniz bir python betiğiyle birlikte bir ZIP dosyasına paketleyin. Lambda'da koşmak için.

Kitaplığın Amazon Linux derlenmiş sürümünü almak için. Birinin önceden derlenmiş bir sürümünü (örneğin, @pbegle gibi) bulabilir veya kendiniz derleyebilirsiniz.iki seçenek vardır o kendimizi derlemek için: - Bir EC2 örneği https://streetdatascience.com/2016/11/24/using-numpy-and-pandas-on-aws-lambda/ üzerinde kütüphanelerini derlemek - Docker ile son seçenek ardından Lambda çevre https://serverlesscode.com/post/scikitlearn-with-amazon-linux-container/

bir liman işçisi sürümüne kütüphanelerini derlemek, onu yapmak mümkündür yukarıdaki blog yayınında ve ekleyerek talimatları kullanarak çalışır:

pip install --use-wheel pandas 

komut kütüphaneler derlemeye:

https://github.com/ryansb/sklearn-build-lambda/blob/master/build.sh#L21

+0

bunu denedim, ancak elde edilen zip dosyası yaklaşık 55MB'dir. bu konuda herhangi bir güncelleme var mı? –

1

Biraz Sen Lambda'ya ile kütüphaneleri paketlemesi gereken Cannot find MySQL in NodeJS using AWS Lambda

arasında çoğaltmak. Lambda, genel bir bulut üzerinde çalıştığından, bunu yapılandıramazsınız.

Şimdi sizin durumunuzda, pandaları kullandığınız için, Panda'ları fermuarınızla paketlemeniz gerekir. Pandalara giden bir yol alın (örneğin: /Users/dummyUser/anaconda/lib/python3.6/site-packages) ve kütüphaneyi lambda işlev kodunuzun olduğu yere kopyalayın. Kodunuzun içinde, yerel kopyanızdaki pandalara bakın. Yükleme yaparken, tüm seti (kod + kitaplıkları) sıkıştırın ve istediğiniz gibi yükleyin. İşe yaramalı.