Come faccio ad aggiungere librerie python per un AWS funzione lambda per Alexa?

Stavo seguendo il tutorial per creare un Alexa app usando Python:

Python Alexa Tutorial

Sono stato in grado di seguire tutti i passaggi e ottenere l’applicazione al lavoro.Ora voglio modificare il codice python e l’uso di librerie esterne come import requests
o di eventuali altre librerie che ho installato utilizzando pip. Come faccio a impostare il mio lambda funzione per includere qualsiasi pip pacchetti che ho installato in locale sulla mia macchina?

 

5 Replies
  1. 14

    Come descritto in Amazzonia documentazione ufficiale di collegamento qui è così semplice come la creazione di una zip di tutto il contenuto della cartella dopo aver installato i pacchetti necessari nella cartella dove avete il vostro python lambda codice.

    Come Vineeth sottolineato sopra, nel suo commento, Il primo passo nel passaggio da un codice inline, come editor caricamento di file zip approccio è quello di cambiare la vostra funzione lambda nome del gestore, sotto le impostazioni di configurazione per includere lo script python nome del file che contiene la lambda gestore.

    lambda_handler => {il-python-script-file-name}.lambda_handler.

    Come faccio ad aggiungere librerie python per un AWS funzione lambda per Alexa?

    Altre soluzioni come python-lambda e lambda-uploader aiutare con la semplificazione del processo di caricamento e il più importante LOCALE di TEST. Questi farà risparmiare un sacco di tempo in fase di sviluppo.

    • In questo modo non è lavoro per python 3.6 script con psycopg2. Sempre errore “Impossibile importare il modulo ‘ProcessRawRetailSalesUsingCOPY’: No module named ‘psycopg2._psycopg’:” sto usando windows7 prof con pycharm. Bisogno di qualche aiuto se puoi.
  2. 15

    Il la documentazione ufficiale di è abbastanza buono. In sintesi, è necessario creare un file zip di una directory che contiene sia il codice della funzione lambda e tutte le librerie esterne si utilizza al livello superiore.

    È possibile simulare che disattivando il tuo virtualenv, la copia di tutti i necessari librerie nella directory di lavoro (che è sempre in sys.path se si richiama uno script a riga di comando), e verifica se il tuo script funziona ancora.

    • Ho provato a seguire la documentazione. I pip installato le richieste in libreria. Ho preso il color_game.py e ha aggiunto import requests in alto, le richieste di directory, e le richieste-2.11.0.dist-info directory e inviato le tre di un file zip. Ho caricato il file zip lambda, ma quando cerco di eseguire la Alexa funzione; non funziona. Ho The remote endpoint could not be called, or the response it returned was invalid.
    • Ho capito! Ho capito di non cambiare il nome del mio gestore. Dovrebbe essere il nome del file.lambda_handler se vai dal codice inline in un file zip. Grazie!
    • Abbiamo appena iniziato un progetto di bstpy per esporre un Pitone lambda come un servizio http. Si possono trovare utile per il test. Si può buttare payload json con arricciatura o postino. Se provate con altri Bespoken Strumenti si può avere un molto bello l’ambiente di sviluppo.
    • non incolpare il messaggero, ma questo è un kluge su AWS parte. Ci dovrebbe davvero essere un modo più strutturato dal pip/condã requisiti di lambda di distribuzione.
    • The official documentation is pretty good. Andando a essere in disaccordo con voi. Il titolo e la prima frase della pagina si è collegato da solo sono completamente chiaro per me se si hanno niente a che fare con l’importazione dei pacchetti per il mio AWS istanza. (Si tratta di imballaggio a qualcosa che ho creato? Chi lo sa!)
    • Abbiamo iniziato ginepro come un modo per automatizzare la creazione di python a base di artefatti, come descritto nella documentazione ufficiale. Edificio zip manualmente non è una soluzione scalabile, ginepro è nata la nostra frustrazione costruzione di questi manufatti personalizzati e script di shell.

  3. 7

    Si potrebbe desiderare di guardare in utilizzando framework come zappa che gestirà il confezionamento e la distribuzione della funzione lambda per voi.

    È possibile utilizzarlo in combinazione con pallone-chiedere per avere un tempo più facile fare Alexa competenze. C’è anche un video tutorial di questo (da la zappa readme) qui

  4. 3

    Eco @d3ming risposta, un quadro è un buon modo per andare, a questo punto. La creazione del pacchetto di distribuzione manualmente non è impossibile, ma è necessario essere a caricare i tuoi pacchetti’ compilato il codice, e se si sta compilando il codice su un non-sistema linux, la possibilità di incorrere in problemi con le differenze tra il sistema e la funzione Lambda implementato ambiente è alta.

    È quindi possibile aggirare il problema con la compilazione del codice su una macchina linux o Mobile contenitore.. ma tra tutte le complessità che si può ottenere molto di più con l’adozione di un quadro.

    Serverless è ben adottate e ha il supporto per python personalizzato pacchetti. Si integra anche con la finestra Mobile per compilare python, dipendenze e costruire il pacchetto di distribuzione per voi.

    Se stai cercando un tutorial completo su questo, Ho scritto in Python funzioni Lambda qui.

  5. 0

    Per risolvere questo particolare problema che si sta utilizzando una libreria che si chiama ginepro. In sintesi, tutto quello che dovete fare è creare un semplice file di manifesto che sembra:

    functions:
      # Name the zip file you want juni to create
      router:
        # Where are your dependencies located?
        requirements: ./src/requirements.txt.
        # Your source code.
        include:
        - ./src/lambda_function.py

    Da questo file manifesto di chiamata juni build creerà il file zip artefatto per voi. Il file conterrà tutte le dipendenze si specifica nel requirements.txt.

    Il comando crea questo file ./dist/router.zip. Stiamo usando il file in combinazione con un modello sam. Tuttavia, è possibile fare uso di zip e caricarlo su console, o attraverso il awscli.

Lascia un commento