Utilizzo del AWS Toolkit AWS SAM - AWS Cloud9

AWS Cloud9 non è più disponibile per i nuovi clienti. I clienti esistenti di AWS Cloud9 possono continuare a utilizzare il servizio normalmente. Ulteriori informazioni

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 del AWS Toolkit AWS SAM

Il AWS Toolkit fornisce supporto per applicazioni serverless. Utilizzando il AWS Toolkit, è possibile creare applicazioni serverless che contengono AWS Lambdafunzioni e quindi distribuire le applicazioni in uno stack. AWS CloudFormation

Creazione di un'applicazione serverless

Questo esempio mostra come utilizzare il AWS Toolkit per creare un'applicazione serverless. Per ulteriori informazioni sull'esecuzione e il debug di applicazioni serverless, consulta Esecuzione e debug di applicazioni serverless.

I prerequisiti necessari per la creazione di un'applicazione serverless includono e. AWS SAM CLIAWS CLI Questi sono inclusi con. AWS Cloud9 Se non AWS SAM CLI è installato o se è obsoleto, potrebbe essere necessario eseguire un'installazione o un aggiornamento. Per istruzioni su come installare AWS SAM CLI, vedere Installazione di AWS SAM CLI e per istruzioni su come aggiornare il AWS SAM CLI, vedere Aggiornamento di. AWS SAM CLI

Creazione di un'applicazione serverless con AWS Toolkit

Questo esempio mostra come creare un'applicazione serverless con il AWS Toolkit utilizzando il comando ().AWS Serverless Application ModelAWS SAM

  1. In AWS Explorer, apri il menu contestuale (con il pulsante destro del mouse) per il nodo Lambda, quindi scegli Crea applicazione Lambda. SAM

    Nota

    In alternativa, puoi selezionare l'icona del menu di fronte all'intestazione AWS: Explorer e scegliere Crea applicazione Lambda SAM.

  2. Scegliete il runtime per la vostra SAM applicazione. Per questo esempio, scegli nodejs12.x.

    Nota

    Se selezioni uno dei runtime con "(Image)", l'applicazione è di tipo pacchetto Image. Se selezioni uno dei runtime senza "(Image)", l'applicazione è di tipo Zip. Per ulteriori informazioni sulla differenza tra tipi di pacchetto Image e Zip, consulta Pacchetti di implementazione Lambda nella Guida per gli sviluppatori di AWS Lambda .

  3. Scegli uno dei seguenti modelli per l'app serverless:

    • AWS SAM Hello World: un modello di base con una funzione Lambda che restituisce il classico messaggio «Hello World».

    • AWS Step Functions Sample App: un'applicazione di esempio che esegue un flusso di lavoro di negoziazione di azioni. Le Step Functions orchestrano le interazioni delle funzioni Lambda coinvolte.

  4. Scegliere una località per il nuovo progetto. Se è disponibile, puoi selezionare una cartella esistente nell'area di lavoro. Altrimenti, cerca una cartella diversa. Se scegli Select a different folder (Seleziona una cartella diversa), compare una finestra di dialogo per selezionare un percorso della cartella.

  5. Inserisci un nome per la nuova applicazione. Per questo esempio, utilizzare my-sam-app-nodejs. Dopo aver premuto Invio, il AWS Toolkit impiega alcuni istanti per creare il progetto.

Una volta creato il progetto, puoi visualizzare i file dell'applicazione nella finestra Environment (Ambiente). Puoi trovarlo elencato nella finestra di Explorer.

Schermata che mostra i runtime disponibili per le applicazioni. SAM

Esecuzione e debug di applicazioni serverless

È possibile utilizzare il AWS Toolkit per configurare come eseguire il debug delle applicazioni serverless ed eseguirle localmente nel proprio ambiente di sviluppo. È possibile eseguire il debug di un'applicazione serverless definita da un modello (). AWS Serverless Application Model AWS SAM Questo modello utilizza una YAML sintassi semplice per descrivere risorse come funzioniAPIs, database e mappature event-source che costituiscono un'applicazione serverless.

Per un'analisi più approfondita del AWS SAM modello, consulta l'anatomia del modello nella Guida per gli AWS SAM sviluppatori.AWS Serverless Application Model

In alternativa, è possibile eseguire rapidamente il debug di applicazioni serverless che non sono state salvate in un modello. SAM

Si inizia a configurare il comportamento di debug utilizzando azioni in linea per identificare una funzione idonea. AWS Lambda Per utilizzare l'infrastruttura definita dal SAM modello, utilizzate l'azione inline nel file -formatted YAML pertinente. Per testare la funzione direttamente senza il modello, utilizza il collegamento contestuale per il gestore Lambda nel file dell'applicazione.

Nota

In questo esempio, stiamo eseguendo il debug di un'applicazione che utilizza. JavaScript Ma puoi utilizzare le funzionalità di debug disponibili nel AWS Toolkit con i seguenti linguaggi e runtime:

  • JavaScript — Node.js 10. x, 12. x, 14. x

  • Python — 3.7, 3.8, 3.9, 3.10 (le applicazioni serverless Python 2.7 e 3.6 possono essere eseguite ma non sottoposte a debug dal Toolkit). AWS

La scelta del linguaggio influisce anche sul modo in cui i collegamenti con riconoscimento del contesto indicano i gestori Lambda idonei. Per ulteriori informazioni, consulta Esecuzione e debug di funzioni serverless direttamente dal codice.

SAMUtilizzo di modelli per eseguire ed eseguire il debug di applicazioni serverless

Per le applicazioni eseguite e sottoposte a debug utilizzando un SAM modello, un file in YAML formato elettronico descrive il comportamento dell'applicazione e le risorse che utilizza. Se create un'applicazione serverless utilizzando il AWS Toolkit, viene generato automaticamente un file denominato template.yaml per il progetto.

In questa procedura, puoi utilizzare l'applicazione di esempio creata in Creazione di un'applicazione serverless.

Per utilizzare un SAM modello per eseguire ed eseguire il debug di un'applicazione serverless

  1. Per visualizzare i file dell'applicazione che compongono l'applicazione serverless, vai alla finestra Environment (Ambiente).

  2. Dalla cartella dell'applicazione (ad esempio, my-sample-app), aprite il template.yaml file.

  3. Per template.yaml, seleziona Edit Launch Configuration (Modifica configurazione di avvio).

    Un nuovo editor visualizza il file launch.json che fornisce una configurazione di debug con attributi di default.

  4. Modifica o conferma i valori per le seguenti proprietà di configurazione:

    • "name": inserisci un nome facilmente leggibile da visualizzare nel campo a tendina Configuration (Configurazione) nella vista Run (Esegui).

    • "target": assicurati che il valore sia "template". In questo modo, il SAM modello è il punto di ingresso per la sessione di debug.

    • "templatePath": inserisci un percorso relativo o assoluto per il file template.yaml.

    • "logicalId"— Assicurati che il nome corrisponda a quello specificato nella sezione Risorse del SAM modello. In questo caso, è la HelloWorldFunction di tipo AWS::Serverless::Function.

    Per ulteriori informazioni su questa e altre voci nel file launch.json, consulta Opzioni di configurazione per il debug di applicazioni serverless.

  5. Se la configurazione di debug ti soddisfa, salva launch.json. Quindi, scegli il pulsante verde «play» accanto per RUNavviare il debug.

    Nota

    Se l'SAMapplicazione non riesce a funzionare, controlla la finestra Output per vedere se l'errore è causato dalla mancata creazione di un'immagine Docker. Potrebbe essere necessario liberare spazio sul disco nell'ambiente.

    Per ulteriori informazioni, consulta Errore durante l'esecuzione SAM delle applicazioni localmente in AWS Toolkit perché l' AWS Cloud9 ambiente non dispone di spazio su disco sufficiente.

    All'avvio delle sessioni di debug, il DEBUGCONSOLEpannello mostra l'output di debug e visualizza tutti i valori restituiti dalla funzione Lambda. Durante il debug delle SAM applicazioni, il AWS Toolkit viene selezionato come canale di output nel pannello Output.

    Nota

    Per gli utenti Windows, se durante questo processo si verifica un errore di montaggio di Docker, potrebbe essere necessario aggiornare le credenziali per le unità condivise in Docker Settings (Impostazioni di Docker). Un errore di montaggio Docker si presenta in modo simile al seguente.

    Fetching lambci/lambda:nodejs10.x Docker container image...... 2019-07-12 13:36:58 Mounting C:\Users\<username>\AppData\Local\Temp\ ... as /var/task:ro,delegated inside runtime container Traceback (most recent call last): ...requests.exceptions.HTTPError: 500 Server Error: Internal Server Error ...

Esecuzione e debug di funzioni serverless direttamente dal codice

Durante il test dell' AWS SAM applicazione, puoi scegliere di eseguire ed eseguire il debug solo della funzione Lambda. Escludi altre risorse definite dal SAM modello. Questo approccio prevede l'utilizzo dell'azione in linea per identificare nel codice sorgente i gestori della funzione Lambda che possono essere richiamati direttamente.

I gestori Lambda rilevati da collegamenti contestuali dipendono dal linguaggio e dal tempo di esecuzione utilizzati per l'applicazione.

Linguaggio/tempo di esecuzione Condizioni per l'identificazione delle funzioni Lambda da parte dei link con riconoscimento del contesto

JavaScript (Node.js 10.x, 12.x e 14.x)

La funzione presenta inoltre le seguenti caratteristiche:
  • È una funzione esportata con un massimo di tre parametri.

  • Dispone di un file package.json nella rispettiva cartella padre all'interno della cartella dell'area di lavoro.

Python (3.7, 3.8, 3.9 e 3.10)

La funzione presenta inoltre le seguenti caratteristiche:
  • È una funzione di primo livello.

  • Dispone di un file requirements.txt nella rispettiva cartella padre all'interno della cartella dell'area di lavoro.

Per l'esecuzione e il debug di un'applicazione serverless direttamente dal codice dell'applicazione

  1. Per visualizzare i file dell'applicazione serverless, passa alla cartella dell'applicazione scegliendo l'icona della cartella accanto all'editor.

  2. Dalla cartella dell'applicazione (ad esempio, my-sample-app), espandi la cartella delle funzioni (in questo esempio, hello-world) e apri il file. app.js

  3. Nell'azione in linea che identifica una funzione del gestore Lambda idonea, scegli Add Debug Configuration. Se non è presente l'opzione di aggiunta della configurazione di debug, è necessario abilitare gli approfondimenti sul codice. Per abilitare gli approfondimenti sul codice, vedere Attivazione delle lenti di codice AWS Toolkit .

    Accedi all'opzione Add Debug Configuration (Aggiungi configurazione di debug) nell'azione in linea per un gestore della funzione Lambda.
  4. Seleziona il runtime in cui viene eseguita l'SAMapplicazione.

  5. Nell'editor del file launch.json, modifica o conferma i valori per le seguenti proprietà di configurazione:

    • "name": inserisci un nome facilmente leggibile.

    • "target": assicurarsi che il valore sia "code" in modo che venga richiamato direttamente un gestore della funzione Lambda.

    • "lambdaHandler": inserisci il nome del metodo all'interno del codice sorgente chiamato da Lambda per eseguire la funzione. Ad esempio, per le applicazioni in JavaScript, l'impostazione predefinita èapp.lambdaHandler.

    • "projectRoot": inserisci il percorso del file dell'applicazione che contiene la funzione Lambda.

    • "runtime": inserisci o conferma un runtime valido per l'ambiente di esecuzione Lambda (ad esempio "nodejs.12x").

    • "payload": scegli una delle seguenti opzioni per definire come input il payload dell'evento da fornire alla funzione Lambda:

      • "json": coppie JSON chiave-valore formattate che definiscono il payload dell'evento.

      • "path": un percorso del file utilizzato come payload dell'evento.

  6. Se sei soddisfatto della configurazione di debug, scegli la freccia verde di riproduzione accanto a per avviare il debug. RUN

    All'avvio delle sessioni di debug, il DEBUGCONSOLEpannello mostra l'output di debug e visualizza tutti i valori restituiti dalla funzione Lambda. Durante il debug delle SAM applicazioni, AWS Toolkit viene selezionato come canale di output nel pannello Output.

    Nota

    Se nei messaggi di errore viene menzionato Docker, consulta questa nota.

Esecuzione ed esecuzione del debug di risorse Amazon Gateway locali API

Puoi eseguire o eseguire il debug delle risorse locali di AWS SAM API Gateway specificate in. template.yaml A tale scopo, esegui una configurazione di AWS Cloud9 avvio di type=aws-sam con. invokeTarget.target=api

Nota

APIGateway supporta due tipi diAPIs. Sono REST e HTTPAPIs. Tuttavia, la funzionalità API Gateway con AWS Toolkit supporta REST APIs solo. A volte HTTP APIs vengono chiamati "APIGateway V2APIs».

Per eseguire ed eseguire il debug delle risorse Gateway locali API
  1. Scegliete uno dei seguenti approcci per creare una configurazione di avvio per una risorsa AWS SAM API Gateway:

    • Opzione 1: visita il codice sorgente del gestore (nello specifico un file .js, .cs o .py) nel progetto AWS SAM , passa il mouse sopra al gestore Lambda e scegli Add Debug Configuration (Aggiungi configurazione di debug). Se tale opzione non è presente, è necessario abilitare gli approfondimenti sul codice. Per abilitare gli approfondimenti sul codice, consulta Attivazione delle lenti di codice AWS Toolkit ). Quindi, nel menu, scegli la voce denominata API Evento.

    • Opzione 2: modifica launch.json e crea una nuova configurazione di avvio utilizzando la sintassi seguente.

      { "type": "aws-sam", "request": "direct-invoke", "name": "myConfig", "invokeTarget": { "target": "api", "templatePath": "n12/template.yaml", "logicalId": "HelloWorldFunction" }, "api": { "path": "/hello", "httpMethod": "post", "payload": { "json": {} } }, "sam": {}, "aws": {} }
  2. Nel menu a tendina accanto al pulsante Run (Esegui), scegli la configurazione di avvio (denominata myConfig nell'esempio precedente).

  3. (Facoltativo) Aggiungi punti di interruzione al codice del progetto Lambda.

  4. Scegli il pulsante Run (Esegui) accanto al pulsante di riproduzione verde.

  5. Nel riquadro di output, visualizza i risultati.

Configurazione

Quando utilizzi l'api del valore proprietà invokeTarget.target, il kit di strumenti modifica la convalida e il comportamento della configurazione di avvio per supportare un campo dell'api.

{ "type": "aws-sam", "request": "direct-invoke", "name": "myConfig", "invokeTarget": { "target": "api", "templatePath": "n12/template.yaml", "logicalId": "HelloWorldFunction" }, "api": { "path": "/hello", "httpMethod": "post", "payload": { "json": {} }, "querystring": "abc=def&qrs=tuv", "headers": { "cookie": "name=value; name2=value2; name3=value3" } }, "sam": {}, "aws": {} }

Sostituisci i valori nell'esempio come segue:

invokeTarget.logicalId

Una API risorsa.

path

Il API percorso richiesto dalla configurazione di avvio (ad esempio,"path": "/hello").

Deve essere un API percorso valido risolto in base a template.yaml quello specificato dainvokeTarget.templatePath.

httpMethod

Può essere uno dei seguenti verbi: "delete", "get", "head", "options", "patch", "post" e "put".

payload

Il JSON payload (HTTPbody) da inviare la richiesta con la stessa struttura e le stesse regole del campo lambda.payload.

payload.pathpunta a un file che contiene il payload. JSON

payload.jsonspecifica un JSON payload in linea.

headers

Mappa opzionale di coppie nome-valore. Si usa per specificare le HTTP intestazioni da includere nella richiesta.

"headers": { "accept-encoding": "deflate, gzip;q=1.0, *;q=0.5", "accept-language": "fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5", "cookie": "name=value; name2=value2; name3=value3", "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36", }
querystring

(Facoltativo) Utilizza questa stringa per impostare la querystring della richiesta (ad esempio "querystring": "abc=def&ghi=jkl").

aws

Come vengono fornite le informazioni sulla AWS connessione. Per ulteriori informazioni, consulta la tabella delle proprietà della connessione AWS (aws) in Opzioni di configurazione per il debug di applicazioni serverless.

sam

Come AWS SAM CLI costruisce l'applicazione. Per ulteriori informazioni, vedete le proprietàAWS SAM CLI (» sam «) inOpzioni di configurazione per il debug di applicazioni serverless.

Sincronizzazione di un'applicazione serverless

Questo esempio mostra come sincronizzare l'applicazione serverless creata nell'argomento precedente (Creazione di un'applicazione serverless) con l'utilizzo di AWS . AWS Toolkit for Visual Studio Code

Prerequisiti

  • Assicurati di scegliere un nome bucket Amazon S3 univoco a livello globale.

  • Assicurati che le credenziali configurate includano l'accesso in lettura/scrittura appropriato ai seguenti servizi: Amazon S3 e Amazon Gateway AWS CloudFormation. AWS Lambda API

  • Per le applicazioni con tipo di distribuzioneImage, assicurati di disporre sia di un nome di bucket Amazon S3 univoco a livello globale sia di un ECR repository Amazon URI da utilizzare per la distribuzione.

Sincronizzazione di un'applicazione serverless

  1. Nella finestra AWS Explorer, apri il menu contestuale (con il pulsante destro del mouse) per il nodo Lambda e seleziona Sincronizza SAM applicazione.

  2. Scegli su cui Regione AWS eseguire la distribuzione.

  3. Scegliere il file template.yaml da utilizzare per la distribuzione.

  4. Inserisci il nome di un bucket Amazon S3 che questa implementazione può utilizzare. Il bucket deve trovarsi nella Regione in cui esegui l'implementazione.

    avvertimento

    Il nome di un bucket Amazon S3 deve essere univoco tra tutti i nomi di bucket esistenti in Amazon S3. Aggiungi un identificatore univoco al nome indicato nell'esempio seguente o scegli un altro nome.

  5. Se la tua applicazione serverless include una funzione con tipo di pacchettoImage, inserisci il nome di un ECR repository Amazon utilizzabile da questa distribuzione. Il repository deve trovarsi nella regione a cui esegui l'implementazione.

  6. Immettere un nome per lo stack distribuito ovvero un nuovo nome dello stack o un nome dello stack esistente.

  7. Verifica se l'implementazione ha avuto esisto positivo sulla scheda AWS Toolkit della Console.

    In caso di errore, compare un messaggio in basso a destra.

    In caso affermativo, controlla il testo nella scheda AWS Toolkit per i dettagli. Di seguito è riportato un esempio di dettagli di errore.

    Error with child process: Unable to upload artifact HelloWorldFunction referenced by CodeUri parameter of HelloWorldFunction resource. S3 Bucket does not exist. Execute the command to create a new bucket aws s3 mb s3://pbart-my-sam-app-bucket An error occurred while deploying a SAM Application. Check the logs for more information by running the "View AWS Toolkit Logs" command from the Command Palette.

    In questo esempio, l'errore si è verificato perché il bucket Amazon S3 non esiste.

Al termine dell'implementazione, l'applicazione appare elencata nella finestra AWS Explorer. Per informazioni su come richiamare la funzione Lambda che è stata creata come parte dell'applicazione, consulta Richiamo di funzioni Lambda remote.

Attivazione delle lenti di codice AWS Toolkit

  1. Nella barra dei menu, scegli AWS Cloud9, e poi Preferences (Preferenze).

  2. Nella scheda Preferences (Preferenze), nella barra laterale, scegli AWS Toolkit.

  3. Per abilitare gli approfondimenti sul codice, scegli Enable Code Lenses (Abilita approfondimenti sul codice).

Eliminazione di un'applicazione serverless da AWS Cloud

L'eliminazione di un'applicazione serverless comporta l'eliminazione dello AWS CloudFormation stack precedentemente distribuito nel cloud. AWS Nota che questa procedura non elimina la directory dell'applicazione dall'host locale.

  1. Apri AWS Explorer.

  2. Nella finestra AWS Explorer, espandi la regione che contiene l'applicazione implementata che desideri eliminare, quindi espandi AWS CloudFormation.

  3. Apri il menu contestuale (fai clic con il pulsante destro del mouse) per il nome dello AWS CloudFormation stack che corrisponde all'applicazione serverless che desideri eliminare. Quindi, scegli Elimina CloudFormation pila.

  4. Per confermare che desideri eliminare la pila selezionata, scegli Delete (Elimina).

Se l'eliminazione dello stack ha esito positivo, il AWS Toolkit rimuove il nome dello stack dall'elenco in Explorer. AWS CloudFormation AWS