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à.
Livelli di costruzione
Puoi usarliAWS SAM per creare livelli personalizzati. Per informazioni sui livelli, consulta i livelliAWS Lambda nella Guida per gliAWS Lambda sviluppatori.
Per creare un livello personalizzato, dichiaralo nel tuo file modelloAWS Serverless Application Model (AWS SAM) e includi una sezione relativa agli attributiMetadata
delle risorse con unaBuildMethod
voce. I valori validi perBuildMethod
sono identificatori per un AWS Lambdaruntime, oppuremakefile
. Includi unaBuildArchitecture
voce per specificare le architetture del set di istruzioni supportate dal layer. I valori validi perBuildArchitecture
sono le architetture dei set di istruzioni Lambda.
Se lo specifichimakefile
, fornisci il makefile personalizzato, in cui dichiari un obiettivo di build del modulobuild-
che contiene i comandi di build per il tuo layer. Il tuo makefile è responsabile della compilazione del layer, se necessario, e della copia degli artefatti della build nella posizione corretta richiesta per le fasi successive del flusso di lavoro. La posizione del makefile è specificata dallalayer-logical-id
ContentUri
proprietà della risorsa del livello e deve essere denominataMakefile
.
Quando si crea un layer personalizzato,AWS Lambda dipende dalle variabili di ambiente per trovare il codice del layer. I runtime Lambda includono i percorsi nella/opt
directory in cui viene copiato il codice del layer. La struttura della cartella Build Artifact del tuo progetto deve corrispondere alla struttura delle cartelle prevista dal runtime in modo da poter trovare il codice di livello personalizzato.
Ad esempio, per Python puoi inserire il tuo codice nellapython/
sottodirectory. Per NodeJS, puoi inserire il tuo codice nellanodejs/node_modules/
sottodirectory.
Per ulteriori informazioni, consulta Includere le dipendenze delle librerie in un livello nella Guida per gliAWS Lambda sviluppatori.
Di seguito è riportato un esempio di sezione relativa agli attributiMetadata
delle risorse.
Metadata: BuildMethod: python3.8 BuildArchitecture: arm64
Se non includi la sezione degli attributi dellaMetadata
risorsa,AWS SAM non crea il layer. Invece, copia gli artefatti della build dalla posizione specificata nellaCodeUri
proprietà della risorsa del livello. Per ulteriori informazioni, consulta la ContentUriproprietà del tipo diAWS::Serverless::LayerVersion
risorsa.
Quando si include la sezione degli attributi dellaMetadata
risorsa, è possibile utilizzare ilstessa costruzione
comando per creare il livello, sia come oggetto indipendente che come dipendenza di unaAWS Lambda funzione.
-
Come oggetto indipendente. Potresti voler creare solo l'oggetto layer, ad esempio quando stai testando localmente una modifica del codice al layer e non hai bisogno di creare l'intera applicazione. Per creare il livello in modo indipendente, specificate la risorsa del livello con il
sam build
comando.layer-logical-id
-
Come dipendenza di una funzione Lambda. Quando si include l'ID logico di un layer nella
Layers
proprietà di una funzione Lambda nello stesso fileAWS SAM modello, il layer è una dipendenza di quella funzione Lambda. Quando quel livello include anche una sezione di attributi diMetadata
risorsa con unaBuildMethod
voce, si crea il livello costruendo l'intera applicazione con ilsam build
comando o specificando la risorsa della funzione con ilsam build
comando.function-logical-id
Esempi
Esempio di modello 1: crea un livello sull'ambiente di runtime Python 3.6
Il seguenteAWS SAM modello di esempio crea un livello sull'ambiente di runtime Python 3.6.
Resources: MyLayer: Type: AWS::Serverless::LayerVersion Properties: ContentUri: my_layer CompatibleRuntimes: - python3.9 Metadata: BuildMethod: python3.9 # Required to have AWS SAM build this layer
Esempio di modello 2: crea un livello usando un makefile personalizzato
Il seguenteAWS SAM modello di esempio utilizza una personalizzazionemakefile
per creare il layer.
Resources: MyLayer: Type: AWS::Serverless::LayerVersion Properties: ContentUri: my_layer CompatibleRuntimes: - python3.8 Metadata: BuildMethod: makefile
Quanto seguemakefile
contiene il target di build e i comandi che verranno eseguiti. Nota che laContentUri
proprietà è impostata sumy_layer
, quindi il makefile deve trovarsi nella radice dellamy_layer
sottodirectory e il nome del file deve essereMakefile
. Nota anche che gli artefatti della build vengono copiati nellapython/
sottodirectory in modoAWS Lambda che sia possibile trovare il codice del livello.
build-MyLayer: mkdir -p "$(ARTIFACTS_DIR)/python" cp *.py "$(ARTIFACTS_DIR)/python" python -m pip install -r requirements.txt -t "$(ARTIFACTS_DIR)/python"
Esempi di comandi sam build
Isam build
comandi seguenti creano livelli che includono le sezioni degli attributiMetadata
delle risorse.
# Build the 'layer-logical-id' resource independently sam build
layer-logical-id
# Build the 'function-logical-id' resource and layers that this function depends on sam buildfunction-logical-id
# Build the entire application, including the layers that any function depends on sam build