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
Argomenti
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
-
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.
-
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 tipoZip
. Per ulteriori informazioni sulla differenza tra tipi di pacchettoImage
eZip
, consulta Pacchetti di implementazione Lambda nella Guida per gli sviluppatori di AWS Lambda . -
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.
-
-
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.
-
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.
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
-
Per visualizzare i file dell'applicazione che compongono l'applicazione serverless, vai alla finestra Environment (Ambiente).
-
Dalla cartella dell'applicazione (ad esempio, my-sample-app), aprite il
template.yaml
file. -
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. -
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 filetemplate.yaml
. -
"logicalId"
— Assicurati che il nome corrisponda a quello specificato nella sezione Risorse del SAM modello. In questo caso, è laHelloWorldFunction
di tipoAWS::Serverless::Function
.
Per ulteriori informazioni su questa e altre voci nel file
launch.json
, consulta Opzioni di configurazione per il debug di applicazioni serverless. -
-
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:
|
Python (3.7, 3.8, 3.9 e 3.10) |
La funzione presenta inoltre le seguenti caratteristiche:
|
Per l'esecuzione e il debug di un'applicazione serverless direttamente dal codice dell'applicazione
-
Per visualizzare i file dell'applicazione serverless, passa alla cartella dell'applicazione scegliendo l'icona della cartella accanto all'editor.
-
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
-
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 . -
Seleziona il runtime in cui viene eseguita l'SAMapplicazione.
-
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.
-
-
-
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
-
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": {} }
-
-
Nel menu a tendina accanto al pulsante Run (Esegui), scegli la configurazione di avvio (denominata
myConfig
nell'esempio precedente). -
(Facoltativo) Aggiungi punti di interruzione al codice del progetto Lambda.
-
Scegli il pulsante Run (Esegui) accanto al pulsante di riproduzione verde.
-
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.path
punta a un file che contiene il payload. JSONpayload.json
specifica 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 distribuzione
Image
, 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
-
Nella finestra AWS Explorer, apri il menu contestuale (con il pulsante destro del mouse) per il nodo Lambda e seleziona Sincronizza SAM applicazione.
-
Scegli su cui Regione AWS eseguire la distribuzione.
-
Scegliere il file
template.yaml
da utilizzare per la distribuzione. -
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.
-
Se la tua applicazione serverless include una funzione con tipo di pacchetto
Image
, inserisci il nome di un ECR repository Amazon utilizzabile da questa distribuzione. Il repository deve trovarsi nella regione a cui esegui l'implementazione. -
Immettere un nome per lo stack distribuito ovvero un nuovo nome dello stack o un nome dello stack esistente.
-
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
-
Nella barra dei menu, scegli AWS Cloud9, e poi Preferences (Preferenze).
-
Nella scheda Preferences (Preferenze), nella barra laterale, scegli AWS Toolkit.
-
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.
-
Apri AWS Explorer.
-
Nella finestra AWS Explorer, espandi la regione che contiene l'applicazione implementata che desideri eliminare, quindi espandi AWS CloudFormation.
-
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.
-
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