Elaborazione di eventi Amazon S3 - AWS Serverless Application Model

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

Elaborazione di eventi Amazon S3

Con questa applicazione di esempio, si basa su ciò che si è appreso negli esempi precedenti e si installa un'applicazione più complessa. Questa applicazione è costituita da una funzione Lambda richiamata da una fonte di eventi di caricamento di oggetti Amazon S3. Questo esercizio mostra come accedere alleAWS risorse ed effettuare chiamateAWS di servizio tramite una funzione Lambda.

Questo esempio di applicazione serverless elabora gli eventi di creazione di oggetti in Amazon S3. Per ogni immagine caricata in un bucket, Amazon S3 rileva l'evento creato dall'oggetto e richiama una funzione Lambda. La funzione Lambda richiama Amazon Rekognition per rilevare il testo contenuto nell'immagine. Quindi memorizza i risultati restituiti da Amazon Rekognition in una tabella DynamoDB.

Nota

Con questa applicazione di esempio, si eseguono i passaggi in un ordine leggermente diverso rispetto agli esempi precedenti. Il motivo è che questo esempio richiede la creazione diAWS risorse e la configurazione delle autorizzazioni IAM prima di poter testare la funzione Lambda localmente. Faremo del nostro meglioAWS CloudFormation per creare le risorse e configurare le autorizzazioni per te. Altrimenti, è necessario eseguire questa operazione manualmente prima di poter testare la funzione Lambda localmente.

Poiché questo esempio è più complicato, assicurati di avere familiarità con l'installazione delle applicazioni di esempio precedenti prima di eseguire questo.

Prima di iniziare

Assicurati di aver completato le impostazioni richieste inInstallazione dell'interfaccia a riga di comando AWS SAM.

Fase 1: Inizializzazione dell'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 \ --location https://github.com/aws-samples/cookiecutter-aws-sam-s3-rekognition-dynamodb-python \ --no-input
  2. Esaminare il contenuto della directory creata dal comando (aws_sam_ocr/):

    • template.yaml— Definisce treAWS risorse necessarie all'applicazione Amazon S3: una funzione Lambda, un bucket Amazon S3 e una tabella DynamoDB. Il modello definisce anche le mappature e le autorizzazioni tra queste risorse.

    • src/directory: contiene il codice dell'applicazione Amazon S3.

    • SampleEvent.json— La fonte di eventi di esempio, utilizzata per i test locali.

Fase 2: Package dell'applicazione

Prima di poter testare questa applicazione localmente, è necessario utilizzare laAWS SAM CLI per creare un pacchetto di distribuzione, da utilizzare per distribuire l'applicazione nelAWS cloud. Questa distribuzione crea leAWS risorse e le autorizzazioni necessarie per testare l'applicazione localmente.

Per creare un pacchetto di implementazione Lambda
  1. 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.

    aws s3 mb s3://bucketname
  2. Creazione il pacchetto di distribuzione eseguendo il comandopackage CLI riportato di seguito al prompt dei comandi.

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

    Specificate il nuovo file modello quando distribuite l'applicazione nel passaggio successivo.packaged.yaml

Fase 3: Distribuzione dell'applicazione

Ora che hai creato il pacchetto di distribuzione, lo usi per distribuire l'applicazione nelAWS cloud. Quindi testate l'applicazione invocandola nelAWS Cloud.

Per distribuire l'applicazione serverless nelAWS cloud
  • NellaAWS SAM CLI, utilizzate ildeploy comando per distribuire tutte le risorse definite nel modello.

    sam deploy \ --template-file packaged.yaml \ --stack-name aws-sam-ocr \ --capabilities CAPABILITY_IAM \ --region us-east-1

    Nel comando, il--capabilities parametro consente diAWS CloudFormation creare un ruolo IAM.

    AWS CloudFormationcrea leAWS risorse definite nel modello. Puoi accedere ai nomi di queste risorse nellaAWS CloudFormation console.

Per testare l'applicazione serverless nelAWS cloud
  1. Carica un'immagine nel bucket Amazon S3 creato per questa applicazione di esempio.

  2. Apri la console DynamoDB e trova la tabella che è stata creata. Consulta la tabella per i risultati restituiti da Amazon Rekognition.

  3. Verifica che la tabella DynamoDB contenga nuovi record contenenti testo che Amazon Rekognition ha trovato nell'immagine caricata.

Fase 4: eseguire il test dell'applicazione in locale

Prima di poter testare l'applicazione localmente, è necessario recuperare i nomi delleAWS risorse create daAWS CloudFormation.

  • Recupera il nome della chiave Amazon S3 e il nome del bucket daAWS CloudFormation. Modifica ilSampleEvent.json file sostituendo i valori per la chiave dell'oggetto, il nome del bucket e l'ARN del bucket.

  • Recupera il nome della tabella DynamoDB. Questo nome viene utilizzato per ilsam local invoke comando seguente.

Usa laAWS SAM CLI per generare un evento Amazon S3 di esempio e richiamare la funzione Lambda:

TABLE_NAME=Table name obtained from AWS CloudFormation console sam local invoke --event SampleEvent.json

LaTABLE_NAME= parte imposta il nome della tabella DynamoDB. Il--event parametro specifica il file contenente il messaggio dell'evento di test da passare alla funzione Lambda.

Ora puoi verificare che i record DynamoDB previsti siano stati creati, in base ai risultati restituiti da Amazon Rekognition.

Fasi successive

IlAWS SAM GitHub repository contiene ulteriori applicazioni di esempio da scaricare e sperimentare. Per accedere a questo repository, vedi applicazioni diAWS SAM esempio.