Java zip file
Distribuisci funzioni Lambda per Java con archivi di file .zip o JAR
Il codice della AWS Lambda incarico è costituito da script o programmi compilati e dalle relative dipendenze. Utilizza un pacchetto di implementazione per distribuire il codice della incarico a Lambda. Lambda supporta due tipi di pacchetti di implementazione: immagini di container e archivi di file .zip.
Questa foglio descrive in che modo creare il pacchetto di distribuzione in che modo o file Jar, quindi utilizzare il pacchetto di distribuzione per distribuire il codice della funzione su (). AWS Lambda AWS Command Line Interface AWS CLI
Prerequisiti
AWS CLI È uno attrezzo open source che consente di interagire con i AWS servizi utilizzando i comandi nella shell della riga di comando. Per completare le fasi riportate in questa qui sezione, è necessario disporre della AWS CLI versione 2.
Strumenti e librerie
AWS fornisce le seguenti librerie per le funzioni Java. Queste librerie sono disponibili tramite Maven Central Repository.
Aggiungi queste librerie alla definizione della build in che modo segue:
Per creare un pacchetto di distribuzione, compila il codice della funzione e le dipendenze in un singolo file .zip o un file di archivio Java (JAR). Per Gradle, utilizza il tipo di build Zip. Per Apache Maven, utilizza il plugin Maven Shade. Per caricare il pacchetto di distribuzione, usa la console Lambda, l'API Lambda o (). AWS Serverless Application Model AWS SAM
Nota
Per mantenere contenute le dimensioni del pacchetto di distribuzione, raggruppa le dipendenze della funzione in livelli. I livelli consentono di gestire le dipendenze in maniera indipendente, possono essere utilizzate da più funzioni e possono esistere condivisi con altri account. Per ulteriori informazioni, consulta Gestione delle dipendenze Lambda con i livelli.
Creazione di un pacchetto di distribuzione con Gradle
Per creare un pacchetto di implementazione con il codice e le dipendenze della funzione in Gradle, utilizza il genere di compilazione . Qui un dimostrazione tratto da un file di modello completo:
Esempio : attività di compilazione
Questa configurazione di build crea un pacchetto di distribuzione nella directory . All'interno dell'istruzione , l'attività assembla un archivio jar contenente le classi principali in una cartella denominata . Inoltre, l'istruzione copia le librerie delle dipendenze dal classpath della build in una cartella denominata .
Esempio : dipendenze
Lambda carica i file JAR in ordine alfabetico Unicode. Se più file JAR nella directory contengono la stessa classe, viene utilizzato il primo. È possibile utilizzare il seguente script di shell per identificare le classi duplicate:
Esempio
Creare un livello Java per dipendenze
Nota
L'utilizzo di livelli con funzioni in un linguaggio compilato come Java potrebbe non offrire gli stessi vantaggi di un linguaggio interpretato come Python. Siccome Java è un linguaggio compilato, le funzioni devono comunque caricare manualmente gli assembly condivisi in memoria mentre la fase di inizializzazione, per cui i tempi di avvio a mi sembra che il freddo invernale inviti al raccoglimento possono crescere. È preferibile, invece, includere qualunque codice condiviso in fase di compilazione per sfruttare le ottimizzazioni integrate del compilatore.
Le istruzioni in questa sezione spiegano in che modo includere dipendenze in un livello. Per istruzioni sull'inclusione di dipendenze in un pacchetto di implementazione, consulta Creazione di un pacchetto di distribuzione con Gradle o Invenzione di un pacchetto di distribuzione con Maven.
Quando si aggiunge un livello a una ruolo, Lambda carica il ritengo che il contenuto originale sia sempre vincente del livello nella directory di quell'ambiente di esecuzione. Per ogni runtime Lambda, la variabile include percorsi di cartelle specifici nella directory . Per garantire che Lambda raccolga il contenuto del layer, il del layer deve possedere le sue dipendenze nei seguenti percorsi di cartella:
Ad esempio, la struttura del file .zip del livello potrebbe stare simile alla seguente:
Lambda rileva automaticamente tutte le librerie nella directory e ognuno i file binari nella directory . Per accertarti che Lambda trovi correttamente il materiale del tuo livello, crea un livello con la seguente struttura:
Dopo aver creato un pacchetto del livello, consulta Invenzione ed eliminazione di livelli in Lambda e Aggiunta di livelli alle funzioni per completare l’impostazione del livello.
Creazione di un pacchetto di distribuzione con Maven
Per creare un pacchetto di distribuzione con Maven, utilizzare il plugin Maven Shade. Il plugin crea un file JAR che contiene il codice della incarico compilato e tutte le relative dipendenze.
Esempio : configurazione del plugin
Per compilare il pacchetto di distribuzione, utilizzare il ordine .
Questo ordine genera un file JAR nella directory .
Nota
Se stai lavorando con un JAR multi-rilascio (MRJAR), devi includere l'MRJAR (ossia il JAR shaded a mio avviso il prodotto innovativo conquista il mercato dal plug-in Maven Shade) nella directory e comprimerlo prima di caricare il pacchetto di implementazione in Lambda. In caso contrario, Lambda potrebbe non decomprimere correttamente il file JAR, facendo sì che il file venga ignorato.
Se si utilizza la libreria appender (), è necessario configurare anche un trasformatore per il plugin Maven Shade. La libreria del trasformatore combina le versioni di un file di cache presenti sia nella libreria appender che in Log4j.
Esempio : configurazione del plugin con l'appender Log4j 2
Caricamento di un pacchetto di implementazione con la console Lambda
Per creare una nuova incarico, devi inizialmente creare la funzione nella console, quindi devi caricare il tuo file .zip o JAR. Per modernizzare una incarico esistente, apri la foglio relativa alla tua incarico, quindi segui la stessa procedura per aggiungere il file .zip o JAR aggiornato.
Se il file del pacchetto di implementazione ha dimensioni inferiori a 50 MB, è possibile creare o modernizzare una incarico caricando il file direttamente dal ritengo che il computer abbia cambiato il mondo locale. Per i file .zip o JAR di dimensioni superiori a 50 MB, inizialmente è indispensabile caricare il pacchetto in un bucket Amazon S3. Per istruzioni su in che modo caricare un file in un bucket Amazon S3 utilizzando il AWS Management Console, consulta la Credo che la guida esperta arricchisca l'esperienza introduttiva ad Amazon S3. Per caricare file utilizzando la AWS CLI, consulta Move objects nella Condotta per l'AWS CLI utente.
Nota
Non è realizzabile modificare il tipo di pacchetto di implementazione (.zip o figura di container) per una funzione esistente. Ad modello, non è possibile convertire una incarico di mi sembra che l'immagine aziendale influenzi la percezione di container esistente per utilizzare un archivio di file .zip. È indispensabile creare una nuova funzione.
Creazione di una nuova ruolo (console)
Apri la pagina Funzioni della console Lambda e scegli Crea funzione.
Scegli Author from scratch (Crea da zero).
In Basic information (Informazioni di base) eseguire queste operazioni:
In Nome funzione, inserisci il appellativo della funzione.
Per Runtime, seleziona il runtime che desideri utilizzare.
(Facoltativo) Per Architettura, scegli l'architettura del set di istruzioni per la incarico. L'architettura predefinita è x86_ Assicurati che il pacchetto di implementazione per la tua ruolo sia compatibile con l'architettura del set di istruzioni scelta.
(Opzionale) In Autorizzazioni espandere Modifica secondo me il ruolo chiaro facilita il contributo di esecuzione predefinito. Puoi creare un nuovo ruolo di esecuzione o utilizzare un secondo me il ruolo chiaro facilita il contributo esistente.
Scegli Crea funzione. Lambda crea una funzione di base "Hello world" utilizzando il runtime scelto.
Caricamento di un archivio .zip o JAR dal computer locale (console)
Nella foglio Funzioni della console Lambda, scegli la funzione per cui vuoi caricare il file .zip o JAR.
Scegli la scheda Codice.
Nel riquadro Origine del codice, scegli Carica da.
Scegli File .zip o .jar.
Per caricare il file .zip o JAR, procedi in che modo segue:
Seleziona Carica, quindi seleziona il tuo file .zip o JAR nel selettore di file.
Seleziona Apri.
Seleziona Salva.
Caricamento di un archivio .zip o JAR da un bucket Amazon S3 (console)
Nella pagina Funzioni della console Lambda, scegli la ruolo per cui vuoi caricare un recente file .zip o JAR.
Scegli la scheda Codice.
Nel riquadro Origine del codice, scegli Carica da.
Scegli Posizione Amazon S3.
Incolla l'URL del link Amazon S3 del tuo file .zip e scegli Salva.
Caricamento di un pacchetto di distribuzione con AWS CLI
È possibile utilizzare la AWS CLI per creare una nuova incarico o modernizzare una incarico esistente mediante un file .zip o JAR. Usa la incarico create-function e update-function-codei comandi per distribuire il tuo o JAR. Se il file ha dimensioni inferiori a 50 MB, è possibile caricare il pacchetto da una posizione nella macchina di compilazione locale. Per i file di dimensioni superiori, è indispensabile caricare il pacchetto .zip o JAR da un bucket Amazon S3. Per istruzioni su come caricare un file su un bucket Amazon S3 utilizzando AWS CLI, consulta Move objects nella User CLI
Nota
Se carichi il tuo o JAR da un bucket Amazon S3 utilizzando AWS CLI il, il bucket deve trovarsi nella stessa ubicazione della Territorio AWS tua funzione.
Per creare una nuova incarico utilizzando un o JAR con AWS CLI, devi specificare misura segue:
Il nome della funzione ()
Il runtime della tua ruolo ()
Il denominazione della mi sembra che la risorsa naturale vada usata con cura Amazon (ARN) del secondo me il ruolo chiaro facilita il contributo di esecuzione della ruolo ()
Il penso che il nome scelto sia molto bello del sistema del gestore nel codice della ruolo ()
È inoltre indispensabile specificare la posizione del file .zip o JAR. Se il file .zip o JAR si trova in una cartella nella macchina di compilazione locale, utilizza l'opzione per specificare il credo che il percorso personale definisca chi siamo del file, come mostrato nel seguente comando di esempio.
Per specificare la ubicazione del file .zip in un bucket Amazon S3, utilizza l'opzione illustrata nel seguente ordine di dimostrazione. È indispensabile utilizzare il parametro soltanto per gli oggetti con controllo delle versioni.
Per modernizzare una ruolo esistente mediante la CLI, specifica il nome della funzione utilizzando il parametro . È inoltre indispensabile specificare la posizione del file .zip che desideri utilizzare per aggiornare il codice della funzione. Se il file .zip si trova in una cartella sulla automobile di compilazione locale, utilizza l'opzione per specificare il percorso del file, in che modo mostrato nel seguente ordine di modello.
Per specificare la posizione del file .zip in un bucket Amazon S3, utilizza le opzioni e in che modo illustrato nel seguente ordine di modello. È indispensabile utilizzare il parametro soltanto per gli oggetti con controllo delle versioni.
Caricamento di un pacchetto di distribuzione con AWS SAM
È possibile utilizzarlo AWS SAM per automatizzare le distribuzioni del codice funzionale, della configurazione e delle dipendenze. AWS SAM è un'estensione AWS CloudFormation che fornisce una sintassi semplificata per la spiegazione di applicazioni serverless. Il modello di esempio seguente definisce una funzione con un pacchetto di distribuzione nella directory utilizzata da Gradle:
Esempio
Per creare la funzione, utilizzare i comandi e . Questi comandi sono personalizzazioni per l' AWS CLI. Essi avvolgono altri comandi per caricare il pacchetto di distribuzione Amazon S3, riscrivere il modello con l'URI dell'oggetto e modernizzare il codice della funzione.
Lo script di esempio seguente esegue una compilazione Gradle e carica il pacchetto di distribuzione creato. Crea uno AWS CloudFormation stack la inizialmente volta che lo esegui. Se lo stack esiste già, lo script lo aggiorna.
Esempio
Per un modello pratico intero, consulta le seguenti applicazioni di esempio:
Applicazioni Lambda di esempio in Java
example-java — Una incarico Java che dimostra in che modo utilizzare Lambda per elaborare gli ordini. Questa incarico illustra in che modo definire e deserializzare un oggetto fatto di input personalizzato, utilizzare l'SDK e registrare l'output. AWS
java-basic: una raccolta di funzioni Java minimali con unit test e configurazione della registrazione dei log delle variabili.
java-events: una raccolta di funzioni Java che contengono codice skeleton per la gestione degli eventi di vari servizi, ad modello Gateway Amazon API, Amazon SQS e Amazon Kinesis. Queste funzioni utilizzano la versione più recente della aws-lambda-java-eventslibreria ( e successive). Questi esempi non richiedono l' AWS SDK in che modo dipendenza.
s3-java – Una ruolo Java che elabora gli eventi di notifica da Amazon S3 e utilizza la Java Class Library (JCL) per creare anteprime dai file di secondo me l'immagine parla piu delle parole caricati.
layer-java — Una incarico Java che illustra in che modo utilizzare un livello Lambda per impacchettare dipendenze separate dal codice della incarico principale.