Come posso creare un livello Lambda utilizzando un ambiente Lambda simulato con Docker?

4 minuti di lettura
0

Voglio creare un livello AWS Lambda compatibile con i runtime dell'ambiente di destinazione. Come posso farlo?

Breve descrizione

Quando si sviluppano le funzioni Lambda, bisogna scegliere tra le versioni di runtime Lambda supportate. Per creare funzioni e livelli Lambda compatibili con runtime specifici, puoi effettuare una delle seguenti operazioni:

Per ulteriori informazioni, consulta Creating and sharing Lambda layers.

Risoluzione

Nota: se ricevi errori durante l'esecuzione dei comandi dell'Interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.

Le seguenti istruzioni utilizzano Python come linguaggio di codifica e una piattaforma informatica basata su Linux come esempio. Per altri linguaggi di codifica e piattaforme, adatta opportunamente i passaggi.

Installa Docker sul tuo computer

Se non l'hai già fatto, installa Docker per Linux, Windows o macOS sul tuo computer.

Creare la struttura della directory appropriata e specificare le dipendenze nel file dei requisiti pip (requirements.txt)

Per ulteriori informazioni sulla creazione di strutture delle directory, consulta le istruzioni su Including library dependencies in a layer. Per ulteriori informazioni su come specificare le dipendenze, consulta la sezione Requirements files nella guida per l'utente di pip.

Esempio di struttura delle directory per un livello Lambda compatibile con le versioni Python 3.6 e 3.8

├── requirements.txt
└── python/
    └── lib/
        ├── python3.6/
        │   └── site-packages/
        └── python3.8/
            └── site-packages/

Nota: la dimensione totale decompressa della funzione e di tutti i livelli non può superare il limite previsto per la dimensione del pacchetto di implementazione decompresso di 250 MB. Per ulteriori informazioni sul supporto della versione Python in Lambda, consulta la pagina Building Lambda functions with Python.

Installare le dipendenze della libreria nelle sottocartelle appropriate in base ai runtime specificati nella struttura della directory

Esegui il seguente comando AWS CLI una volta per ogni runtime specificato nella struttura della directory:

Importante: sostituisci 3.6 con 3.7 o 3.8 in base alle librerie compatibili che desideri installare.

docker run -v "$PWD":/var/task "public.ecr.aws/sam/build-python3.6" /bin/sh -c "pip install -r requirements.txt -t python/lib/python3.6/site-packages/; exit"

Creare un archivio di file .zip per il proprio livello

Esegui il comando seguente per comprimere la cartella python e creare il pacchetto del livello:

Nota: puoi sostituire mypythonlibs con il nome che preferisci.

zip -r mypythonlibs.zip python > /dev/null

Il file .zip è sgonfiato nella cartella /opt dell'ambiente Lambda. La cartella /opt è accessibile dal codice della funzione Lambda.

Creare o aggiornare il livello

Per creare o aggiornare il tuo livello Lambda, esegui il comando seguente:

Importante: assicurati di includere i runtime compatibili specificati in precedenza. Sostituisci mypythonlibs con il nome del pacchetto che hai usato nel passaggio precedente. Sostituisci My python libs con la descrizione che preferisci.

aws lambda publish-layer-version --layer-name mypythonlibs --description "My python libs" --zip-file fileb://mypythonlibs.zip --compatible-runtimes "python3.6" "python3.8"

Esamina l'output e copia il nome della risorsa Amazon (ARN) del livello. L'ARN del livello è necessario per completare il passaggio successivo.

Aggiornare la configurazione della funzione Lambda per utilizzare il livello

Esegui il comando seguente per aggiornare la configurazione della funzione Lambda affinché possa utilizzare il livello:

Importante: sostituisci arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1 con l'ARN del livello.

aws lambda update-function-configuration --layers arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1 --function-name my-function

(Facoltativo) Utilizzare le immagini Docker per il pacchetto Lambda anziché un file AWS SAM

Invece di usare un file AWS SAM, puoi anche usare le immagini Docker amazon/aws-sam-cli-build-image per creare il tuo pacchetto Lambda. L'uso delle immagini Docker consente di creare il pacchetto senza creare un livello.

1.    Esegui il comando seguente per ottenere le versioni richieste delle tue dipendenze:

Importante: sostituisci 3.6 con 3.7 o 3.8 in base alle librerie compatibili che desideri installare.

docker run -v "$PWD":/var/task "public.ecr.aws/sam/build-python3.6" /bin/sh -c "pip install -r requirements.txt -t libs; exit"

2.    Crea un pacchetto di implementazione Lambda che includa il codice della funzione e le librerie corrette.


Informazioni correlate

Perché ricevo gli errori "unknown service", "parameter validation failed" oppure "object has no attribute" con la mia funzione Lambda con Python (Boto 3)?

Building layers

Use any programming language and share common components

Lambda (AWS CLI Command Reference)

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa