Developer Center/Getting Started/Hands-on/...(Centro Sviluppatori/Introduzione/Esercitazione pratica/...

Nozioni di base su AWS

Creazione di un'applicazione Web serverless

con AWS Lambda, Amazon API Gateway, AWS Amplify, Amazon DynamoDB e Amazon Cognito

Creazione di un'applicazione Web serverless

Modulo 3: Back-end serverless del servizio

Utilizzerai AWS Lambda e Amazon DynamoDB per creare un processo back-end per gestire le richieste della tua applicazione Web.

Panoramica

In questo modulo, utilizzerai AWS Lambda e Amazon DynamoDB per creare un processo back-end per gestire le richieste della tua applicazione Web. L'applicazione browser che hai distribuito nel primo modulo consente agli utenti di richiedere l'invio di un unicorn a una posizione desiderata. Per soddisfare questi requisiti, il linguaggio JavaScript in esecuzione nel browser dovrà chiamare un servizio in esecuzione nel cloud.

Panoramica dell'architettura

Panoramica dell'architettura

Dovrai implementare una funzione Lambda che verrà chiamata ogni volta che un utente richiede un unicorn. La funzione selezionerà un unicorn dal parco istanze, registrerà la richiesta in una tabella DynamoDB e quindi risponderà all'applicazione front-end con i dettagli sull'unicorn in fase di invio.

La funzione viene chiamata dal browser utilizzando Amazon API Gateway. Dovrai implementare tale connessione nel prossimo modulo. In questo modulo, ti occuperai solo del test della funzione in isolamento.

 Tempo richiesto per il completamento

30 minuti

 Servizi utilizzati

Implementazione

  • Creazione di una tabella Amazon DynamoDB

    Usa la console Amazon DynamoDB per creare una nuova tabella DynamoDB. Chiama la tabella Rides e assegna una chiave di partizione denominata RideId con tipo stringa. Il nome della tabella e la chiave di partizione fanno distinzione tra minuscole e maiuscole. Accertarsi di utilizzare gli ID esatti forniti. Utilizzare le impostazioni predefinite per tutte le altre opzioni.

    Dopo avere creato la tabella, prendi nota dell'ARN per utilizzarlo nella fase successiva.

    a. Dalla Console di gestione AWS, seleziona Servizi quindi DynamoDB in Database.
    b. Seleziona Crea tabella.
    c. Specifica Rides per Nome tabella. Questo campo fa distinzione tra minuscole e maiuscole.
    d. SpecificaRideId per la Chiave di partizione e seleziona Stringa per il tipo di chiave. Questo campo fa distinzione tra minuscole e maiuscole.
    e. Seleziona la casella Usa impostazioni predefinite e scegli Crea.
    f. Scorri fino alla parte inferiore della sezione Panoramica della nuova tabella e prendi nota dell'ARN. Questo verrà utilizzato nella sezione successiva.

  • Creazione di un ruolo IAM per la funzione Lambda

    A ogni funzione Lambda è associato un ruolo IAM, che definisce con quali altri servizi AWS alla funzione è concesso interagire. Ai fini di questo workshop, dovrai creare un ruolo IAM che conceda alla funzione Lambda l'autorizzazione a scrivere log in Amazon CloudWatch Logs e l'accesso per scrivere voci nella tabella DynamoDB.

    Utilizza la console IAM per creare un nuovo ruolo. Assegnale il nome WildRydesLambda e seleziona AWS Lambda come tipo di ruolo. Sarà necessario allegare le policy che concedono alla tua funzione le autorizzazioni a eseguire operazioni di scrittura in Amazon CloudWatch Logs e aggiungere voci alla tabella DynamoDB.

    Allega la policy gestita denominata AWSLambdaBasicExecutionRole a questo ruolo per concedere le autorizzazioni CloudWatch Logs necessarie. Inoltre, crea una policy in linea personalizzata per il ruolo che consenta l'operazione ddb:PutItem sulla tabella creata nella sezione precedente.

    a. Dalla Console di gestione AWS, fai clic su Servizi e seleziona IAM nella sezione Sicurezza, identità e conformità.

    b. Nella barra di navigazione a sinistra, seleziona Ruoli e scegli Crea nuovo ruolo.

    c. Seleziona Lambda per il tipo di ruolo nel gruppo Servizio AWS, quindi fai clic su Successivo: Autorizzazioni.

    Nota: la selezione di un tipo di ruolo comporta la creazione automatica di una policy di attendibilità per il ruolo che consente ai servizi AWS di assumere questo ruolo per conto tuo. Se si stava creando questo ruolo tramite la CLI, AWS CloudFormation o un altro meccanismo, sarà necessario specificare direttamente una policy di attendibilità.

    d. Iniziare a digitare AWSLambdaBasicExecutionRole nella casella di testo Filtra e selezionare la casella accanto a questo ruolo.

    e. Seleziona Fase successiva.

    f. Specifica WildRydesLambda per Nome ruolo.

    g. Scegli Crea ruolo.

    h. Digita WildRydesLambda nella casella di filtro nella pagina Ruoli, quindi scegli il ruolo appena creato.

    i. Nella scheda Autorizzazioni, scegli il link Aggiungi policy in linea nell'angolo in basso destro per creare una nuova policy in linea.

    j. Seleziona Scegli un servizio.

    k. Inizia a digitare DynamoDB nella casella di ricerca denominata Trova un servizio, quindi seleziona DynamoDB una volta visualizzato.

    l. Scegli Seleziona operazioni.

    m. Iniziare a digitare PutItem nella casella di ricerca denominata Filtra operazioni, quindi fai clic sulla casella accanto a PutItem quando viene visualizzato.

    n. Seleziona la sezione Risorse.

    o. Con l'opzione Specifica selezionata, scegli il link Aggiungi ARN nella sezione tabella.

    Incolla l'ARN della tabella creata nella sezione precedente nel campo Specifica ARN per tabella, quindi scegli Aggiungi.

    q. Scegli Verifica policy.

    r. Digita DynamoDBWriteAccess per il nome della policy e scegli Crea policy.

  • Creazione di una funzione Lambda per la gestione delle richieste

    AWS Lambda eseguirà il tuo codice in risposta a eventi come una richiesta HTTP. In questa fase, procederai alla creazione della funzione principale che elaborerà le richieste API dall'applicazione Web per inviare un unicorn. Nel prossimo modulo utilizzerai Amazon API Gateway per creare un'API RESTful che esporrà un endpoint HTTP che può essere chiamato dai browser degli utenti. Quindi, collegherai la funzione Lambda creata in questa fase all'API per creare un back-end totalmente funzionale per la tua applicazione Web.

    Utilizza la console AWS Lambda per creare una nuova funzione Lambda denominata RequestUnicorn che elaborerà le richieste API. Per il codice funzione, utilizzare l'implementazione di esempio requestUnicorn.js fornita. È sufficiente copiare dal file e incollare nell'editor della console AWS Lambda.

    Accertarsi di configurare la funzione per l'utilizzo del ruolo IAM WildRydesLambda creato nella sezione precedente.

    a. Scegli Servizi, quindi seleziona Lambda nella sezione Calcolo.
    b. Fai clic su Crea funzione.
    c. Mantieni selezionata la scheda predefinita Crea da zero.
    d. Specifica RequestUnicorn nel campo Nome.
    e. Seleziona Node.js 6.10 per il Runtime.
    f. Accertati che nell'elenco a discesa Ruolo sia selezionato Scegli un ruolo esistente.
    g. Seleziona WildRydesLambda nell'elenco a discesa Ruolo esistente.
    h. Fai clic su Crea funzione.
    i. Scorri fino alla sezione Codice funzione e sostituisci il codice esistente nell'editor di codici index.js con i contenuti di requestUnicorn.js.
    j. Fai clic su Salva nell'angolo superiore destro della pagina.

  • Convalida l'implementazione

    In questo modulo dovrai testare la funzione che hai creato usando la console AWS Lambda. Nel prossimo modulo, procederai con l'aggiunta di un'API REST tramite API Gateway, in modo da poter chiamare la funzione dall'applicazione basata sul browser che hai distribuito nel primo modulo.

    a. Dalla schermata di modifica principale della funzione, seleziona Configura evento test nell'elenco a discesa Seleziona un evento test.
    b. Mantieni selezionata l'opzione Crea nuovo evento test.
    c. Specifica TestRequestEvent nel campo Nome evento.
    d. Copia e incolla il seguente evento test nell'editor:

    {
        "path": "/ride",
        "httpMethod": "POST",
        "headers": {
            "Accept": "*/*",
            "Authorization": "eyJraWQiOiJLTzRVMWZs",
            "content-type": "application/json; charset=UTF-8"
        },
        "queryStringParameters": null,
        "pathParameters": null,
        "requestContext": {
            "authorizer": {
                "claims": {
                    "cognito:username": "the_username"
                }
            }
        },
        "body": "{\"PickupLocation\":{\"Latitude\":47.6174755835663,\"Longitude\":-122.28837066650185}}"
    }

    e. Fai clic su Crea.
    f. Nella schermata principale di modifica della funzione, fai clic su Test con TestRequestEvent selezionato nell'elenco a discesa.
    g. Scorri fino all'inizio della pagina ed espandi la sezione Dettagli del riquadro Risultato esecuzione.
    h. Verifica che l'esecuzione abbia esito positivo e che il risultato della funzione abbia l'aspetto seguente:

    {
        "statusCode": 201,
        "body": "{\"RideId\":\"SvLnijIAtg6inAFUBRT+Fg==\",\"Unicorn\":{\"Name\":\"Rocinante\",\"Color\":\"Yellow\",\"Gender\":\"Female\"},\"Eta\":\"30 seconds\"}",
        "headers": {
            "Access-Control-Allow-Origin": "*"
        }
    }

Questo modulo è stato utile?

Grazie
Facci sapere cosa ti è piaciuto.
Chiudi
Spiacenti di non esserti stati d'aiuto
C'è qualcosa di obsoleto, ambiguo o approssimativo? Aiutaci a migliorare questo tutorial con il tuo feedback.
Chiudi

Distribuzione di un'API RESTful