Utilizzo dei livelli per le funzioni Lambda in Java - AWS Lambda

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo dei livelli per le funzioni Lambda in Java

Usa i livelli Lambda per impacchettare codice e dipendenze che desideri riutilizzare in più funzioni. I livelli di solito contengono dipendenze dalla libreria, un runtime personalizzato o file di configurazione. La creazione di un livello prevede tre passaggi generali:

  1. Crea un pacchetto per il contenuto del livello. Ciò significa creare un archivio di file con estensione .zip che contiene le dipendenze che desideri utilizzare nelle funzioni.

  2. Crea il livello in Lambda.

  3. Aggiungi il livello alle tue funzioni.

Crea un pacchetto per il contenuto del livello

Per creare un layer, raggruppa i pacchetti in un archivio di file.zip che soddisfi i seguenti requisiti:

  • Assicurati che la versione Java a cui fanno riferimento Maven o Gradle sia la stessa della versione Java della funzione che intendi distribuire. Ad esempio, per una funzione Java 21, il mvn -v comando dovrebbe elencare Java 21 nell'output.

  • Le dipendenze devono essere archiviate nella java/lib directory, alla radice del file.zip. Per ulteriori informazioni, consulta Percorsi dei livelli per ciascun runtime Lambda.

  • I pacchetti del livello devono essere compatibili con Linux. Le funzioni Lambda vengono eseguite su Amazon Linux.

  • Se il tuo layer include file binari o eseguibili nativi, devono avere come target la stessa architettura (x86_64 o arm64) della tua funzione.

È possibile creare livelli che contengono librerie Java di terze parti o moduli e pacchetti Java personalizzati. La procedura seguente utilizza Maven. Puoi anche usare Gradle per impacchettare il contenuto del tuo layer.

Per creare un livello utilizzando le dipendenze di Maven
  1. Crea un progetto Apache Maven con un pom.xml file che definisce le tue dipendenze.

    L'esempio seguente include Jackson Databind per l'elaborazione JSON. La <build> sezione utilizza il maven-dependency-pluginper creare file JAR separati per ogni dipendenza invece di raggrupparli in un unico uber-jar. Se vuoi creare un uber-jar, usa il. maven-shade-plugin

    Esempio pom.xml
    <dependencies> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.17.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.13.0</version> <configuration> <source>21</source> <target>21</target> <release>21</release> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.6.1</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build>
  2. Compilare il progetto. Questo comando crea tutti i file JAR di dipendenza nella directory. target/lib/

    mvn clean package
  3. Crea la struttura di directory richiesta per il tuo livello:

    mkdir -p java/lib
  4. Copia i file JAR delle dipendenze nella java/lib directory:

    cp target/lib/*.jar java/lib/
  5. Comprimi il contenuto del livello:

    Linux/macOS
    zip -r layer.zip java/
    PowerShell
    Compress-Archive -Path .\java -DestinationPath .\layer.zip

    La struttura delle cartelle del file.zip dovrebbe essere simile alla seguente:

    java/              
    └── lib/
        ├── jackson-databind-2.17.0.jar
        ├── jackson-core-2.17.0.jar
        └── jackson-annotations-2.17.0.jar
    Nota

    Assicurati che il tuo file.zip includa la java directory a livello principale al lib suo interno. Questa struttura assicura che Lambda possa localizzare e importare le tue librerie. Ogni dipendenza viene conservata come file JAR separato anziché raggruppata in un uber-jar.

Crea il layer in Lambda

È possibile pubblicare il layer utilizzando la console AWS CLI o la console Lambda.

AWS CLI

Esegui il publish-layer-version AWS CLI comando per creare il livello Lambda:

aws lambda publish-layer-version --layer-name my-layer --zip-file fileb://layer.zip --compatible-runtimes java21

Il parametro di runtime compatibile è facoltativo. Quando specificato, Lambda utilizza questo parametro per filtrare i livelli nella console Lambda.

Console
Creazione di un livello (console)
  1. Apri la pagina Layers (Livelli) nella console Lambda.

  2. Scegli Create layer (Crea livello).

  3. Scegli Carica un file.zip, quindi carica l'archivio.zip che hai creato in precedenza.

  4. (Facoltativo) Per i runtime compatibili, scegliete il runtime Java che corrisponde alla versione Java utilizzata per creare il layer.

  5. Scegli Create (Crea).

Aggiungete il layer alla vostra funzione

AWS CLI

Per collegare il layer alla tua funzione, esegui il update-function-configuration AWS CLI comando. Per il --layers parametro, utilizzate il livello ARN. L'ARN deve specificare la versione (ad esempio,arn:aws:lambda:us-east-1:123456789012:layer:my-layer:1). Per ulteriori informazioni, consulta Livelli e versioni di livelli.

aws lambda update-function-configuration --function-name my-function --cli-binary-format raw-in-base64-out --layers "arn:aws:lambda:us-east-1:123456789012:layer:my-layer:1"

L'cli-binary-formatopzione è obbligatoria se si utilizza la AWS CLI versione 2. Per rendere questa impostazione come predefinita, esegui aws configure set cli-binary-format raw-in-base64-out. Per ulteriori informazioni, consulta la pagina AWS CLI supported global command line options nella Guida per l'utente di AWS Command Line Interface versione 2.

Console
Per aggiungere un livello a una funzione
  1. Aprire la pagina Funzioni della console Lambda.

  2. Scegliete la funzione.

  3. Scorri verso il basso fino alla sezione Livelli, quindi scegli Aggiungi un livello.

  4. In Scegli un livello, seleziona Livelli personalizzati, quindi scegli il tuo livello.

    Nota

    Se non hai aggiunto un runtime compatibile quando hai creato il layer, il tuo layer non verrà elencato qui. È possibile specificare invece il livello ARN.

  5. Scegli Aggiungi.