Salta al contenuto

Come posso utilizzare un'immagine Amazon ECR e Docker per creare un livello Lambda?

3 minuti di lettura
0

Desidero utilizzare un'immagine Amazon Elastic Container Registry (Amazon ECR) e Docker per creare un livello AWS Lambda compatibile con i runtime del mio ambiente.

Risoluzione

Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI. La seguente risoluzione utilizza Python e Linux. I passaggi possono variare per altri linguaggi di codifica e sistemi operativi.

Prerequisito: installa Docker sul computer. Per i passaggi di installazione, consulta Get Docker (Scarica Docker) e Install Docker Engine (Installa Docker Engine) (solo Linux) sul sito web Docker Docs.

Crea la struttura di directory e specifica le dipendenze

Crea la struttura di directory e specifica le dipendenze nel file dei requisiti pip requirements.txt. Per ulteriori informazioni sulle modalità per specificare le dipendenze, consulta Requirements files (File dei requisiti) sul sito web pip.

Il seguente esempio di struttura di directory è per un livello Lambda compatibile con Python 3.x:

my-layer/
├── requirements.txt
└── python/

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 informazioni sul supporto della versione Python in Lambda, consulta Building Lambda functions with Python (Costruzione di funzioni Lambda con Python).

Installa le dipendenze della libreria nelle relative sottocartelle

Esegui questo comando una volta per ogni runtime specificato nella struttura di directory:

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

Nota: sostituisci 3.x con la libreria Python compatibile che desideri installare.

Crea un archivio di file .zip per il livello

Per comprimere la cartella python e creare il pacchetto del livello, esegui questo comando:

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

Nota: sostituisci mypythonlibs con un nome per il tuo pacchetto del livello.

Creare o aggiornare il livello

Esegui questo comando AWS CLI publish-layer-version:

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

Nota: sostituisci mypythonlibs con il nome del tuo pacchetto del livello, My python libs con una descrizione del pacchetto del livello e python3.x con la libreria Python installata.

Nell'output, annota il nome della risorsa Amazon (ARN) del livello.

Aggiorna la configurazione della funzione Lambda per utilizzare il livello

Esegui questo comando update-function-configuration:

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

Nota: sostituisci arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1 con l'ARN del livello e my-function con il nome della tua funzione. Il comando precedente inserisce il livello nella cartella /opt dell'ambiente Lambda. Puoi accedere alla cartella /opt dal codice della funzione Lambda.

Informazioni correlate

Come faccio a risolvere gli errori "unknown service", "parameter validation failed" o restituiti da una funzione Lambda in Python (Boto3)?"object has no attribute"

New for AWS Lambda – Use Any Programming Language and Share Common Components (Novità per AWS Lambda: utilizza qualsiasi linguaggio di programmazione e condividi componenti comuni)

Amazon ECR Public Gallery (Galleria pubblica di Amazon ECR)

AWS UFFICIALEAggiornata 3 mesi fa