Tutorial: creare e gestire un progetto serverless in AWS CodeStar - AWS CodeStar

Il 31 luglio 2024, Amazon Web Services (AWS) interromperà il supporto per la creazione e la visualizzazione AWS CodeStar di progetti. Dopo il 31 luglio 2024, non potrai più accedere alla AWS CodeStar console o creare nuovi progetti. Tuttavia, le AWS risorse create da AWS CodeStar, inclusi gli archivi di origine, le pipeline e le build, non saranno influenzate da questa modifica e continueranno a funzionare. AWS CodeStar Le connessioni e AWS CodeStar le notifiche non saranno influenzate da questa interruzione.

 

Se desideri monitorare il lavoro, sviluppare codice e creare, testare e distribuire le tue applicazioni, Amazon CodeCatalyst offre un processo introduttivo semplificato e funzionalità aggiuntive per gestire i tuoi progetti software. Scopri di più sulle funzionalità e sui prezzi di Amazon CodeCatalyst.

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à.

Tutorial: creare e gestire un progetto serverless in AWS CodeStar

In questo tutorial, viene utilizzato AWS CodeStar per creare un progetto che utilizza AWS Serverless Application Model (AWS SAM) per creare e gestire le risorse AWS per un servizio Web ospitato in AWS Lambda.

AWS CodeStarutilizza AWS SAM, su cui si basaAWS CloudFormation, per fornire un modo semplificato di creare e gestire AWS le risorse supportate, tra cui le API di Amazon API Gateway, AWS Lambda le funzioni e le tabelle Amazon DynamoDB. (Questo progetto non utilizza alcuna tabella Amazon DynamoDB.)

Per ulteriori informazioni, consulta AWSServerless Application Model (AWSSAM) su. GitHub

Prerequisito: Completa le fasi descritte in Configurazione AWS CodeStar.

Nota

Al tuo account AWS potrebbero essere addebitati i costi correlati a questo tutorial, inclusi i costi per i servizi AWS utilizzati da AWS CodeStar. Per ulteriori informazioni, consulta Prezzi di AWS CodeStar.

Panoramica

Nel corso di questo tutorial, apprenderai come:

  1. Utilizzare AWS CodeStar per realizzare un progetto che utilizza AWS SAM per creare e distribuire un servizio Web basato su Python. Questo servizio Web è ospitato AWS Lambda e accessibile tramite Amazon API Gateway.

  2. Esplorare le risorse principali del progetto, che includono:

    • Il repository AWS CodeCommit in cui viene archiviato il codice sorgente. Questo codice sorgente include la logica del servizio Web e definisce le risorse correlate ad AWS.

    • La pipeline AWS CodePipeline che consente di automatizzare la creazione del codice sorgente. Questa pipeline utilizza AWS SAM per creare e distribuire una funzioneAWS Lambda, creare un'API correlata in Amazon API Gateway e connettere l'API alla funzione.

    • La funzione che viene distribuita su AWS Lambda.

    • L'API creata in Amazon API Gateway.

  3. Testare il servizio Web per confermare che AWS CodeStar ha creato e distribuito il servizio Web come previsto.

  4. Configurare la tua workstation locale affinché funzioni con il codice sorgente del progetto.

  5. Modificare il codice sorgente del progetto utilizzando la workstation locale. Quando aggiungi una funzione al progetto ed esegui il push delle modifiche al codice sorgente, AWS CodeStar ricrea e ridistribuisce il servizio Web.

  6. Testare il servizio Web nuovamente per confermare che AWS CodeStar ha ricreato e ridistribuito come previsto.

  7. Scrivere un test di unità utilizzando la workstation locale per sostituire alcuni test manuali con un test automatizzato. Quando esegui il push del test di unità, AWS CodeStar ricrea e ridistribuisce il servizio Web e viene eseguito il test di unità.

  8. Visualizzare i risultati dei test di unità.

  9. Eliminare il progetto. Questa fase consente di evitare addebiti sul tuo conto AWS per i costi correlati a questo tutorial.

Fase 1: creare il progetto

In questa fase, utilizzi la console AWS CodeStar per creare un progetto.

  1. Accedi AWS Management Console e apri la AWS CodeStar console all'indirizzo https://console.aws.amazon.com/codestar/.

    Nota

    Devi accedere AWS Management Console utilizzando le credenziali associate all'utente IAM che hai creato o in Configurazione AWS CodeStar cui ti sei identificato. Questo utente deve disporre della policy gestita AWSCodeStarFullAccess associata.

  2. Scegliere la regione AWS in cui si desidera creare il progetto e le sue risorse.

    Per informazioni sulle regioni AWS in cui AWS CodeStar è disponibile, consulta Regioni ed endpoint in Riferimenti generali di AWS.

  3. Seleziona Create project (Crea progetto).

  4. Nella pagina Choose a project template (Scegli un modello di progetto):

    • Per Tipo di applicazione, seleziona Servizio Web.

    • Per il linguaggio di programmazione, seleziona Python.

    • Per AWSassistenza, seleziona AWS Lambda.

  5. Scegliere la casella che contiene le selezioni. Seleziona Successivo.

  6. Per Project name (Nome progetto), immettere un nome per il progetto (ad esempio, My SAM Project). Se usi un nome diverso dall'esempio, assicurati di usarlo durante tutto il tutorial.

    Per Project ID, AWS CodeStar sceglie un identificatore correlato per questo progetto (ad esempio, my-sam-project). Se visualizzi un ID progetto diverso, assicurati di usarlo durante tutto il tutorial.

    Lasciare l'opzione AWS CodeCommit selezionata e non modificare il valore Repository name (Nome repository).

  7. Seleziona Successivo.

  8. Controlla le impostazioni, quindi scegli Crea progetto.

    Se è la prima volta che lo utilizzi AWS CodeStar in questa AWS regione, per Nome visualizzato ed Email, inserisci il nome visualizzato e l'indirizzo email che desideri utilizzare AWS CodeStar per il tuo utente IAM. Seleziona Successivo.

  9. Attendere che AWS CodeStar crei il progetto. Questo processo potrebbe richiedere diversi minuti. Non continuate finché non vedrete il banner Project provisioned durante l'aggiornamento.

Fase 2: esplorare le risorse del progetto

In questa fase, è necessario esplorare quattro delle risorse AWS del progetto per comprendere come funziona il progetto:

  • L'AWS CodeCommitarchivio in cui è archiviato il codice sorgente del progetto. AWS CodeStardà il nome al repository my-sam-project, my-sam-projectdov'è il nome del progetto.

  • La AWS CodePipeline pipeline che utilizza CodeBuild un AWS SAM per automatizzare la creazione e l'implementazione della funzione Lambda e dell'API del servizio Web in API Gateway. AWS CodeStardà alla pipeline il nome my-sam-project--Pipeline, dove my-sam-projectè l'ID del progetto.

  • La funzione Lambda che contiene la logica del servizio Web. AWS CodeStardà alla funzione il nome awscodestar-my-sam-project-lambda- HelloWorld - RANDOM_ID, dove:

    • my-sam-projectè l'ID del progetto.

    • HelloWorldè l'ID della funzione specificato nel template.yaml file nel AWS CodeCommit repository. Puoi esplorare questo file più tardi.

    • RANDOM_ID è un ID random che AWS SAM assegna alla funzione per garantire l'univocità.

  • L'API in API Gateway che semplifica la chiamata alla funzione Lambda. AWS CodeStardà all'API il nome awscodestar-my-sam-project--lambda, dove my-sam-projectè l'ID del progetto.

Per esplorare il repository del codice sorgente in CodeCommit
  1. Con il progetto aperto nella AWS CodeStar console, nella barra di navigazione, scegli Repository.

  2. Scegli il link al tuo CodeCommit repository (My-SAM-Project) in Dettagli del deposito.

  3. Nella CodeCommit console, nella pagina Codice, vengono visualizzati i file di codice sorgente del progetto:

    • buildspec.yml, che CodePipeline indica CodeBuild da utilizzare durante la fase di compilazione, per impacchettare il servizio Web utilizzando AWS SAM.

    • index.py, che contiene la logica per la funzione Lambda. Questa funzione semplicemente restituisce la stringa Hello World e un timestamp in formato ISO.

    • README.md, che contiene informazioni generali sul repository.

    • template-configuration.json, che contiene l'ARN del progetto con segnaposto utilizzati per taggare le risorse con l'ID del progetto

    • template.yml, che AWS SAM utilizza per impacchettare il servizio Web e creare l'API in API Gateway.

    I file del codice sorgente del progetto in CodeCommit

    Per visualizzare il contenuto di un file, sceglierlo nell'elenco.

    Per ulteriori informazioni sull'uso della CodeCommit console, consulta la Guida AWS CodeCommit per l'utente.

Per esplorare la pipeline in CodePipeline
  1. Per visualizzare le informazioni sulla pipeline, con il progetto aperto nella AWS CodeStar console, nella barra di navigazione, scegli Pipeline e vedrai che la pipeline contiene:

    • Una fase Source (Sorgente) per ottenere il codice sorgente da CodeCommit.

    • Una fase Build (Crea) per creare il codice sorgente con CodeBuild.

    • Una fase Deploy (Distribuisci) per distribuire il codice sorgente creato e le risorse AWS con AWS SAM.

  2. Per visualizzare ulteriori informazioni sulla pipeline, in Pipeline details, scegli la pipeline per aprirla nella console. CodePipeline

Per informazioni sull'uso della CodePipeline console, consulta la Guida per l'utente. AWS CodePipeline

Per esplorare le attività del progetto e le risorse di AWS servizio nella pagina Panoramica
  1. Apri il progetto nella AWS CodeStar console e dalla barra di navigazione, scegli Panoramica.

  2. Consulta gli elenchi delle attività del progetto e delle risorse del progetto.

Per esplorare la funzione in Lambda
  1. Con il progetto aperto nella AWS CodeStar console, nella barra di navigazione laterale, scegli Panoramica.

  2. In Risorse del progetto, nella colonna ARN, scegli il link per la funzione Lambda.

    Il codice della funzione viene visualizzato nella console Lambda.

Per informazioni sull'uso della console Lambda, consulta la Guida per gli AWS Lambdasviluppatori.

Per esplorare l'API in API Gateway
  1. Con il progetto aperto nella AWS CodeStar console, nella barra di navigazione laterale, scegli Panoramica.

  2. In Risorse del progetto, nella colonna ARN, scegli il link per l'API Amazon API Gateway.

    Le risorse per l'API vengono visualizzate nella console API Gateway.

Per informazioni sull'utilizzo della console API Gateway, consulta la API Gateway Developer Guide.

Fase 3: testare il servizio Web

In questa fase, è possibile testare il servizio Web che AWS CodeStar ha appena creato e distribuito.

  1. Con il progetto ancora aperto dal passaggio precedente, nella barra di navigazione, scegli Pipeline.

  2. Assicurati che sia visualizzato Succeeded per le fasi Source, Build e Deploy prima di continuare. Questo processo potrebbe richiedere diversi minuti.

    Nota

    Se Failed (Non riuscita) viene visualizzata per una qualsiasi delle fasi, consulta quanto segue per facilitare la risoluzione dei problemi:

  3. Scegli Visualizza applicazione.

Nella nuova scheda che viene visualizzata in un browser Web, il servizio Web mostra i seguenti output di risposta:

{"output": "Hello World", "timestamp": "2017-08-30T15:53:42.682839"}

Fase 4: configurare la workstation locale per modificare il codice del progetto

In questa fase, è possibile configurare la workstation locale per modificare il codice sorgente nel progetto AWS CodeStar. La workstation locale può essere un computer fisico o virtuale che esegue macOS, Windows o Linux.

  1. Con il tuo progetto ancora aperto dal passaggio precedente:

    • Nella barra di navigazione, scegli IDE, quindi espandi Accedi al codice del progetto.

    • Scegli Visualizza istruzioni sotto l'interfaccia della riga di comando.

      Se hai installato Visual Studio o Eclipse, scegli invece Visualizza istruzioni sotto Visual Studio o Eclipse, segui le istruzioni e poi passa a. Fase 5: aggiungere logica al servizio Web

  2. Segui le istruzioni per completare le attività seguenti:

    1. Configurare Git sulla workstation locale.

    2. Usa la console IAM per generare credenziali Git per il tuo utente IAM.

    3. Clona il CodeCommit repository del progetto sulla tua workstation locale.

  3. Nella barra di navigazione a sinistra, scegli Progetto per tornare alla panoramica del progetto.

Fase 5: aggiungere logica al servizio Web

In questa fase è necessario utilizzare la workstation locale per aggiungere logica al servizio Web. In particolare, aggiungi una funzione Lambda e poi la connetti all'API in API Gateway.

  1. Nella workstation locale, andare alla directory che contiene il repository del codice sorgente clonato.

  2. Nella directory, creare un file denominato hello.py. Aggiungere il codice seguente, quindi salvare il file:

    import json def handler(event, context): data = { 'output': 'Hello ' + event["pathParameters"]["name"] } return { 'statusCode': 200, 'body': json.dumps(data), 'headers': {'Content-Type': 'application/json'} }

    Il codice precedente genera la stringa Hello e la stringa che l'intermediario invia alla funzione.

  3. Nella stessa directory, aprire il file template.yml. Aggiungere il codice seguente alla fine del file e quindi salvare il file:

    Hello: Type: AWS::Serverless::Function Properties: FunctionName: !Sub 'awscodestar-${ProjectId}-lambda-Hello' Handler: hello.handler Runtime: python3.7 Role: Fn::GetAtt: - LambdaExecutionRole - Arn Events: GetEvent: Type: Api Properties: Path: /hello/{name} Method: get

    AWSSAM utilizza questo codice per creare una funzione in Lambda, aggiungere un nuovo metodo e percorso all'API in API Gateway e quindi connettere questo metodo e percorso alla nuova funzione.

    Nota

    L'identazione del codice precedente è importante. Se non si aggiunge il codice esattamente come mostrato, il progetto potrebbe non essere creato correttamente.

  4. Eseguire git add . per aggiungere le modifiche del file all'area di gestione temporanea del repository clonato. Non dimenticare il punto (.), che aggiunge tutti i file modificati.

    Nota

    Se stai utilizzando Visual Studio o Eclipse anziché la riga di comando, le istruzioni per l'utilizzo di Git potrebbero essere differenti. Consultare la documentazione di Visual Studio o Eclipse.

  5. Eseguire git commit -m "Added hello.py and updated template.yaml." per eseguire il file di gestione temporanea nel repository clonato

  6. Invocare il comando git push per eseguire il push del commit sul repository remoto.

    Nota

    È possibile che ti vengano richieste le credenziali di accesso generate in precedenza. Per evitare che questi dati ti vengano richiesti ogni volta che in futuro interagisci con il repository remoto, prendi in considerazione l'installazione e la configurazione di un Git Credential Manager. Ad esempio, su macOS o Linux, è possibile eseguire git config credential.helper 'cache --timeout 900' nel terminale per non ricevere la richiesta prima di ogni 15 minuti. In alternativa, è possibile eseguire git config credential.helper 'store --file ~/.git-credentials' in modo da non ricevere più la richiesta. Git memorizza le credenziali in testo non crittografato in un file normale nella directory principale. Per ulteriori informazioni, consulta Git Tools - Credential Storage sul sito Web Git.

Dopo aver AWS CodeStar rilevato il push, indica di utilizzare CodeBuild e AWS SAM CodePipeline per ricostruire e ridistribuire il servizio Web. È possibile controllare l'avanzamento della distribuzione nella pagina Pipeline.

AWSSAM assegna alla nuova funzione il nome awscodestar-my-sam-project-Lambda-Hello - RANDOM_ID, dove:

  • my-sam-projectè l'ID del progetto.

  • Hello (Salve) è la funzione ID, come specificato nel file template.yaml.

  • RANDOM_ID è un ID random che AWS SAM assegna alla funzione per l'univocità.

Fase 6: testare il servizio Web avanzato

In questa fase, viene eseguito il test del servizio Web avanzato che AWS CodeStar crea e distribuisce, in base alla logica aggiunta nella fase precedente.

  1. Con il progetto ancora aperto nella AWS CodeStar console, nella barra di navigazione, scegli Pipeline.

  2. Prima di continuare, assicurati che la pipeline sia stata nuovamente eseguita e che nelle fasi Source, Build e Deploy sia visualizzato Succeeded. Questo processo potrebbe richiedere diversi minuti.

    Nota

    Se Failed (Non riuscita) viene visualizzata per una qualsiasi delle fasi, consulta quanto segue per facilitare la risoluzione dei problemi:

  3. Scegli Visualizza applicazione.

    Nella nuova scheda che viene visualizzata in un browser Web, il servizio Web mostra i seguenti output di risposta:

    {"output": "Hello World", "timestamp": "2017-08-30T15:53:42.682839"}
  4. Nella casella degli indirizzi della scheda, aggiungere il percorso /hello/ e il proprio nome alla fine dell'URL (ad esempio, https://API_ID.execute-api.REGION_ID.amazonaws.com/Prod/hello/IL_TUO_NOME) e quindi premere Enter (Invio).

Se il nome è Mary, il servizio Web mostra i seguenti output di risposta:

{"output": "Hello Mary"}

Fase 7: aggiungere un test di unità per il Web Service

In questa fase è necessario utilizzare la workstation locale per aggiungere un test che AWS CodeStar esegue sul servizio Web. Questo test sostituisce i test manuali eseguiti precedentemente.

  1. Nella workstation locale, andare alla directory che contiene il repository del codice sorgente clonato.

  2. Nella directory, creare un file denominato hello_test.py. Aggiungere il codice seguente, quindi salvare il file.

    from hello import handler def test_hello_handler(): event = { 'pathParameters': { 'name': 'testname' } } context = {} expected = { 'body': '{"output": "Hello testname"}', 'headers': { 'Content-Type': 'application/json' }, 'statusCode': 200 } assert handler(event, context) == expected

    Questo test verifica se l'output della funzione Lambda è nel formato previsto. In questo caso, il test va a buon fine. In caso contrario, il test ha esito negativo.

  3. Nella stessa directory, aprire il file buildspec.yml. Sostituire i contenuti del file con il codice seguente e quindi salvare il file.

    version: 0.2 phases: install: runtime-versions: python: 3.7 commands: - pip install pytest # Upgrade AWS CLI to the latest version - pip install --upgrade awscli pre_build: commands: - pytest build: commands: # Use AWS SAM to package the application by using AWS CloudFormation - aws cloudformation package --template template.yml --s3-bucket $S3_BUCKET --output-template template-export.yml # Do not remove this statement. This command is required for AWS CodeStar projects. # Update the AWS Partition, AWS Region, account ID and project ID in the project ARN on template-configuration.json file so AWS CloudFormation can tag project resources. - sed -i.bak 's/\$PARTITION\$/'${PARTITION}'/g;s/\$AWS_REGION\$/'${AWS_REGION}'/g;s/\$ACCOUNT_ID\$/'${ACCOUNT_ID}'/g;s/\$PROJECT_ID\$/'${PROJECT_ID}'/g' template-configuration.json artifacts: type: zip files: - template-export.yml - template-configuration.json

    Questa specifica di build indica di CodeBuild installare pytest, il framework di test Python, nel suo ambiente di compilazione. CodeBuild usa pytest per eseguire lo unit test. Il resto delle specifiche di compilazione è uguale alle precedenti.

  4. Usare Git per inviare tali modifiche al repository remoto.

    git add . git commit -m "Added hello_test.py and updated buildspec.yml." git push

Fase 8: visualizzare risultati del test di unità

In questa fase, è possibile vedere se il test di unità è riuscito o meno.

  1. Con il progetto ancora aperto nella AWS CodeStar console, nella barra di navigazione, scegli Pipeline.

  2. Assicurati che la pipeline sia stata nuovamente eseguita prima di continuare. Questo processo potrebbe richiedere diversi minuti.

    Se il test di unità è andato a buon fine, Succeeded (Riuscito) viene visualizzato per la fase Build (Crea).

  3. Per visualizzare i dettagli dei risultati del test unitario, nella fase di creazione, scegli il CodeBuildlink.

  4. Nella CodeBuild console, nella my-sam-project pagina Build Project:, in Cronologia build, scegli il link nella colonna Build run della tabella.

  5. Nella pagina my-sam-project: BUILD_ID, in Build logs, scegli il link Visualizza intero registro.

  6. Nella console Amazon CloudWatch Logs, cerca nell'output del log un risultato del test simile al seguente. Nel seguente risultato del test, il test è andato a buon fine:

    ... ============================= test session starts ============================== platform linux2 -- Python 2.7.12, pytest-3.2.1, py-1.4.34, pluggy-0.4.0 rootdir: /codebuild/output/src123456789/src, inifile: collected 1 item hello_test.py . =========================== 1 passed in 0.01 seconds =========================== ...

    Se il test non è riuscito, devono essere presenti dettagli nell'output di log che consentono di risolvere il problema.

Fase 9: elimina

In questa fase, è necessario eliminare il progetto per evitare addebiti in corso per questo progetto.

Per continuare a usare questo progetto, è possibile ignorare questa fase, ma all'account AWS potrebbero continuare a essere applicati i relativi costi.

  1. Con il progetto ancora aperto nella AWS CodeStar console, nella barra di navigazione, scegli Impostazioni.

  2. In Dettagli del progetto, scegli Elimina progetto.

  3. Inviodelete, mantieni selezionata la casella Elimina risorse, quindi scegli Elimina.

    Importante

    Se deselezioni questa casella, il record del progetto viene eliminato da AWS CodeStar, ma molte delle risorse AWS del progetto vengono conservati. All'account AWS potrebbero continuare a essere addebitati i relativi costi.

Se esiste ancora un bucket Amazon S3 AWS CodeStar creato per questo progetto, segui questi passaggi per eliminarlo. :

  1. Apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nell'elenco dei bucket, scegli l'icona accanto a aws-codestar- REGION_ID - ACCOUNT_ID - --pipe, dove: my-sam-project

    • REGION_ID è l'ID della regione AWS per il progetto appena eliminato.

    • ACCOUNT_ID è l'ID dell'account AWS.

    • my-sam-projectè l'ID del progetto che hai appena eliminato.

  3. Scegli Empty Bucket (Svuota il bucket). Digitare il nome del bucket e quindi scegliere Confirm (Conferma).

  4. Scegli Delete Bucket (Elimina bucket). Digitare il nome del bucket e quindi scegliere Confirm (Conferma).

Fasi successive

Ora che hai completato questo tutorial, ti consigliamo di esaminare le risorse seguenti: