Livelli di costruzione - AWS Serverless Application Model

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-layer-logical-id 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 dallaContentUri proprietà della risorsa del livello e deve essere denominataMakefile.

Nota

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
Nota

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 ilsam build layer-logical-id comando.

  • Come dipendenza di una funzione Lambda. Quando si include l'ID logico di un layer nellaLayers 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 function-logical-id comando.

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 build function-logical-id # Build the entire application, including the layers that any function depends on sam build