Quick Start: pubblicazione delle applicazioni - AWS Serverless Application Repository

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

Quick Start: pubblicazione delle applicazioni

Questa guida illustra i passaggi per scaricare, compilare, testare e pubblicare un'applicazione serverless di esempio in AWS Serverless Application Repository utilizzando l'interfaccia a riga di comando AWS SAM. Puoi utilizzare questa applicazione di esempio come punto di partenza per lo sviluppo e la pubblicazione di una tua applicazione serverless.

Panoramica

La procedura seguente illustra come scaricare, compilare e pubblicare un'applicazione serverless di esempio:

  1. Inizializzazione. Scaricare un'applicazione di esempio dal modello utilizzando sam init.

  2. Test in locale. Testare l'applicazione localmente utilizzando sam local invoke e/o sam local start-api. Nota che con questi comandi, anche se la funzione Lambda viene richiamata localmente, legge e scriveAWS sulle risorse nelAWS Cloud.

  3. Pacchetto. Quando sei soddisfatto della tua funzione Lambda, raggruppa la funzione Lambda, ilAWS SAM modello e tutte le dipendenze in un pacchettoAWS CloudFormation di distribuzione utilizzandosam package. In questo passaggio si includono anche le informazioni sull'applicazione che verrà caricata in AWS Serverless Application Repository.

  4. Pubblicazione. Pubblicare l'applicazione in AWS Serverless Application Repository utilizzando sam publish. Al termine di questo passaggio, puoi visualizzare la tua applicazioneAWS Serverless Application Repository e distribuirla sulAWS cloud utilizzandoAWS Serverless Application Repository.

L'esempio Applicazione Hello World nella prossima sezione illustra i passaggi per la creazione e la pubblicazione di un'applicazione serverless.

Applicazione Hello World

In questo esercizio, scarichi e testi un'applicazione Hello World serverless che rappresenta un semplice back-end dell'API. Dispone di un endpoint Amazon API Gateway che supporta un'operazione GET e e Lambda. Quando una richiesta GET viene inviata all'endpoint, Amazon API Gateway richiama la funzione Lambda. Quindi, AWS Lambda esegue la funzione che restituisce semplicemente il messaggio hello world.

L'applicazione ha i seguenti componenti:

  • UnAWS SAM modello che definisce dueAWS risorse per l'applicazione Hello World: un servizio API Gateway con un'operazione GET e una funzione Lambda. Il modello definisce anche la mappatura tra l'operazione GET di API Gateway e la funzione Lambda.

  • Il codice dell'applicazione scritto in Python.

Prima di iniziare

Assicurati di avere la configurazione necessaria per questo esercizio:

Fase 1: inizializzare l'applicazione

In questa sezione scarichi l'applicazione di esempio che consiste in un modello AWS SAM e un codice dell'applicazione.

Per inizializzare l'applicazione
  1. Eseguire il comando seguente al prompt dei comandi dell'interfaccia a riga di comando AWS SAM.

    sam init --runtime python3.6
  2. Esaminare il contenuto della directory creata dal comando (sam-app/):

    • template.yaml— Definisce dueAWS risorse necessarie all'applicazione Hello World: una funzione Lambda e un endpoint API Gateway che supporta un'operazione GET. Il modello definisce anche la mappatura tra le due risorse.

    • Contenuto relativo al codice dell'applicazione Hello World:

      • hello_world/directory: contiene il codice dell'applicazione, chehello world viene restituito quando viene eseguita.

    Nota

    Per questo esercizio, il codice dell'applicazione è scritto in Python e specifichi il runtime nel comando init. AWS Lambda supporta altri linguaggi per la creazione del codice dell'applicazione. Se specifichi un altro runtime supportato, il comando init fornisce il codice Hello World nel linguaggio specificato e un file README.md che è possibile seguire per tale linguaggio. Per informazioni sui runtime supportati, consulta l'argomento relativo all'ambiente di esecuzione Lambda e alle librerie disponibili.

Fase 2: testare l'applicazione localmente

Ora che hai l'applicazione AWS SAM sul tuo computer locale, segui i passaggi riportati di seguito per testarla localmente.

Per testare l'applicazione localmente
  1. Avviare l'endpoint del gateway API localmente. È necessario eseguire il comando seguente dalla directory che contiene il file template.yaml.

    sam-app> sam local start-api --region us-east-1

    Il comando restituisce un endpoint API Gateway, a cui è possibile inviare richieste per i test locali.

  2. Testare l'applicazione. Copia l'URL dell'endpoint API Gateway, incollalo nel browser e scegli Invio. Un esempio di URL dell'endpoint API Gateway èhttp://127.0.0.1:3000/hello.

    API Gateway richiama localmente la funzione Lambda a cui è mappato l'endpoint. La funzione Lambda viene eseguita nel contenitore Docker locale e restituiscehello world. API Gateway restituisce una risposta al browser che contiene il testo.

Esercizio: modificare la stringa del messaggio

Dopo aver testato l'applicazione di esempio, puoi sperimentare una semplice modifica: cambiare la stringa di messaggio restituita.

  1. Modificare il file /hello_world/app.py per cambiare la stringa del messaggio da 'hello world' a 'Hello World!'.

  2. Ricaricare l'URL di test nel browser e osservare la nuova stringa.

Noterai che il tuo nuovo codice viene caricato dinamicamente, senza dover riavviare il processo sam local.

Fase 3: creare un pacchetto dell'applicazione

Dopo aver testato l'applicazione localmente, puoi utilizzare l'interfaccia a riga di comando AWS SAM per creare un pacchetto di distribuzione e un modello AWS SAM nel pacchetto.

Nota

Nelle fasi seguenti crei un file .zip per il contenuto della directory hello_world/ con il codice dell'applicazione. Questo file .zip è il pacchetto di distribuzione per l'applicazione serverless. Per ulteriori informazioni, consulta Creating a Deployment Package (Python) nella Guida per gliAWS Lambda sviluppatori.

Per creare un pacchetto di distribuzione Lambda
  1. Aggiungere una sezione Metadata al file del modello AWS SAM fornendo le informazioni richieste sull'applicazione. Per ulteriori informazioni sulla sezione Metadata dei modelli AWS SAM, consultare le proprietà della sezione Metadata del modello AWS SAM nella Guida per gli sviluppatori di AWS Serverless Application Model.

    Ecco una sezione Metadata di esempio:

    Metadata: AWS::ServerlessRepo::Application: Name: my-app Description: hello world Author: user1 SpdxLicenseId: Apache-2.0 LicenseUrl: LICENSE.txt ReadmeUrl: README.md Labels: ['tests'] HomePageUrl: https://github.com/user1/my-app-project SemanticVersion: 0.0.1 SourceCodeUrl: https://github.com/user1/my-app-project

    ReadmeUrlLe proprietàLicenseUrl and possono essere riferimenti a file locali (come nell'esempio precedente) oppure possono essere collegamenti a bucket Amazon S3 che già ospitano questi artefatti.

  2. Creare un bucket S3 nella posizione in cui si desidera salvare il codice nel pacchetto. Se si desidera utilizzare un bucket S3 esistente, ignorare questo passaggio.

    sam-app> aws s3 mb s3://bucketname
  3. Crea il pacchetto di distribuzione delle funzioni Lambda eseguendo il seguente comandopackageAWS SAM CLI.

    sam-app> sam package \ --template-file template.yaml \ --output-template-file packaged.yaml \ --s3-bucket bucketname

    Il comando esegue quanto segue:

    • Comprime il contenuto dellaaws-sam/hello_world/ directory e lo carica su Amazon S3.

    • Carica il pacchetto di distribuzione, il file README e il file LICENSE nel bucket Amazon S3 specificato dall'--s3-bucketopzione.

    • Produce un nuovo file del modello, chiamato packaged.yaml, che viene utilizzato nella prossima fase per pubblicare l'applicazione in AWS Serverless Application Repository. Il filepackaged.yaml modello è simile al file modello originale (template.yaml), ma presenta una differenza fondamentale: leReadmeUrl proprietàCodeUriLicenseUrl, e rimandano al bucket Amazon S3 e agli oggetti che contengono i rispettivi artefatti. Il frammento riportato di seguito tratto dal file del modello di esempio packaged.yaml mostra la proprietà CodeUri:

      HelloWorldFunction: Type: AWS::Serverless::Function # For more information about function resources, see https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction Properties: CodeUri: s3://bucketname/fbd77a3647a4f47a352fcObjectGUID ...

Fase 4: pubblicare l'applicazione

Ora che hai creato il pacchetto di distribuzione, puoi utilizzarlo per pubblicare l'applicazione in AWS Serverless Application Repository.

Per pubblicare l'applicazione serverless in AWS Serverless Application Repository
  • Eseguire il seguente comando per pubblicare la nuova applicazione in AWS Serverless Application Repository con la prima versione creata come 0.0.1.

    sam-app> sam publish \ --template packaged.yaml \ --region us-east-1
Nota

L'applicazione viene creata come privata per impostazione predefinita. È necessario condividere l'applicazione prima che altriAWS account possano visualizzare e distribuire l'applicazione. Per ulteriori dettagli sulla condivisione dell'applicazione, consulta di seguito Fasi successive.

Fasi successive

Ora che hai pubblicato l'applicazione di esempio, ecco alcune cose che potresti voler fare.

  • Visualizza la tua applicazione inAWS Serverless Application Repository: l'output delsam publish comando includerà un collegamentoAWS Serverless Application Repository diretto alla pagina di dettaglio dell'applicazione. Puoi anche andare alla pagina iniziale di AWS Serverless Application Repository e cercare la tua applicazione.

  • Condividi la tua applicazione: poiché l'applicazione è impostata come privata per impostazione predefinita, non è visibile agli altriAWS account. Per condividere la tua candidatura con altri, devi renderla pubblica o concedere l'autorizzazione a un elenco specifico diAWS account. Per informazioni su come condividere l'applicazione utilizzando l'AWS CLI consulta AWS Serverless Application RepositoryEsempi di politiche applicative. Per informazioni sulla condivisione dell'applicazione tramite la console, consulta Condivisione di un'applicazione.

Ulteriori informazioni

Per ulteriori informazioni sulla sezione Metadata dei modelli AWS SAM, sui comandi sam package e sam publish dell'interfaccia a riga di comando AWS SAM, consulta l'argomento sulla pubblicazione delle applicazioni utilizzando l'interfaccia a riga di comando AWS SAM nella Guida per gli sviluppatori di AWS Serverless Application Model.