Elaborazione dei record di Amazon Kinesis Data Streams con Lambda - AWS Lambda

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 dei record di Amazon Kinesis Data Streams con Lambda

Per elaborare i record di Amazon Kinesis Data Streams con Lambda, crea un consumatore per il tuo stream e quindi crea una mappatura delle sorgenti degli eventi Lambda.

Configurazione del flusso di dati e della funzione

La funzione Lambda è un'applicazione consumer per il flusso di dati. Elabora un batch di record alla volta da ciascuna partizione. È possibile mappare una funzione Lambda a un consumer a throughput condiviso (iteratore standard) o a un consumer di throughput dedicato con fan-out avanzato.

  • Iteratore standard: Lambda analizza ogni shard del flusso Kinesis alla ricerca di record con una frequenza base di una volta al secondo. Quando sono disponibili più record, Lambda continua l'elaborazione dei batch fino a quando la funzione raggiunge il flusso. La mappatura dell'origine eventi condivide il throughput di lettura con altri utenti della partizione.

  • Fan-out migliorato: per ridurre al minimo la latenza e massimizzare la velocità di lettura, crea un fruitore di flussi di dati con fan-out migliorato. I consumatori del fan-out avanzato ottengono una connessione dedicata a ciascuna partizione che non ha conseguenze su altre applicazioni che leggono dal flusso. I consumatori del flusso utilizzano HTTP/2 per ridurre la latenza spingendo record da Lambda a long-lived su una connessione di lunga durata e comprimendo le intestazioni della richiesta. Puoi creare uno stream consumer con l'API Kinesis RegisterStreamConsumer.

aws kinesis register-stream-consumer \ --consumer-name con1 \ --stream-arn arn:aws:kinesis:us-east-2:123456789012:stream/lambda-stream

Verrà visualizzato l'output seguente:

{ "Consumer": { "ConsumerName": "con1", "ConsumerARN": "arn:aws:kinesis:us-east-2:123456789012:stream/lambda-stream/consumer/con1:1540591608", "ConsumerStatus": "CREATING", "ConsumerCreationTimestamp": 1540591608.0 } }

Per aumentare la velocità con cui la tua funzione elabora i record, aggiungi degli shard al tuo flusso di dati. Lambda elabora i record in ogni partizione in ordine. Interrompe l'elaborazione di record aggiuntivi in una partizione se la funzione restituisce un errore. Con più partizioni, vengono elaborati più batch contemporaneamente e l'impatto di errori in simultanea viene ridotto.

Se la funzione non è in grado di aumentare le dimensioni fino a gestire il numero totale di batch simultanei, richiedere un aumento della quota o riservare la simultaneità per la funzione.

Crea una mappatura dell'origine degli eventi per richiamare una funzione Lambda

Per richiamare la funzione Lambda con i record del flusso di dati, crea una mappatura dell'origine degli eventi. È possibile creare più mappature delle origini eventi per elaborare gli stessi dati con più funzioni Lambda o per elaborare elementi da più flussi di dati con una singola funzione. Quando si elaborano elementi provenienti da più flussi, ogni batch contiene i record di un solo shard o stream.

È possibile configurare le mappature delle sorgenti degli eventi per elaborare i record di un flusso in un altro. Account AWS Per ulteriori informazioni, consulta Creazione di una mappatura delle sorgenti degli eventi tra più account.

Prima di creare una mappatura dell'origine degli eventi, devi autorizzare la funzione Lambda a leggere da un flusso di dati Kinesis. Lambda necessita delle seguenti autorizzazioni per gestire le risorse relative al flusso di dati Kinesis:

La politica AWS gestita AWSLambdaKinesisExecutionRoleinclude queste autorizzazioni. Aggiungi questa politica gestita alla tua funzione come descritto nella procedura seguente.

AWS Management Console
Per aggiungere le autorizzazioni Kinesis alla tua funzione
  1. Apri la pagina Funzioni della console Lambda e scegli la tua funzione.

  2. Nella scheda Configurazione, seleziona Autorizzazioni.

  3. Nel riquadro Ruolo di esecuzione, in Nome ruolo, scegli il link al ruolo di esecuzione della tua funzione. Questo link apre la pagina relativa a quel ruolo nella console IAM.

  4. Nel riquadro Politiche di autorizzazione, scegli Aggiungi autorizzazioni, quindi seleziona Allega politiche.

  5. Inserisci AWSLambdaKinesisExecutionRole nel campo di ricerca.

  6. Seleziona la casella di controllo accanto alla politica e scegli Aggiungi autorizzazione.

AWS CLI
Per aggiungere le autorizzazioni Kinesis alla tua funzione
  • Esegui il seguente comando CLI per aggiungere la AWSLambdaKinesisExecutionRole policy al ruolo di esecuzione della tua funzione:

    aws iam attach-role-policy \ --role-name MyFunctionRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaKinesisExecutionRole
AWS SAM
Per aggiungere le autorizzazioni Kinesis alla tua funzione
  • Nella definizione della funzione, aggiungi la Policies proprietà come mostrato nell'esempio seguente:

    Resources: MyFunction: Type: AWS::Serverless::Function Properties: CodeUri: ./my-function/ Handler: index.handler Runtime: nodejs20.x Policies: - AWSLambdaKinesisExecutionRole

Dopo aver configurato le autorizzazioni richieste, create la mappatura della fonte dell'evento.

AWS Management Console
Per creare la mappatura delle sorgenti degli eventi Kinesis
  1. Apri la pagina Funzioni della console Lambda e scegli la tua funzione.

  2. Nel riquadro Panoramica della funzione, scegli Aggiungi trigger.

  3. In Configurazione Trigger, per l'origine, seleziona Kinesis.

  4. Seleziona lo stream Kinesis per il quale desideri creare la mappatura delle sorgenti degli eventi e, facoltativamente, un utente del tuo stream.

  5. (Facoltativo) modifica la dimensione del batch, la posizione iniziale e la finestra Batch per la mappatura della fonte dell'evento.

  6. Scegli Aggiungi.

Quando crei la mappatura delle sorgenti degli eventi dalla console, il tuo ruolo IAM deve disporre delle autorizzazioni kinesis: ListStreams e kinesis: Consumers. ListStream

AWS CLI
Per creare la mappatura delle sorgenti degli eventi Kinesis
  • Esegui il seguente comando CLI per creare una mappatura delle sorgenti degli eventi Kinesis. Scegliete la dimensione del batch e la posizione iniziale in base al vostro caso d'uso.

    aws lambda create-event-source-mapping \ --function-name MyFunction \ --event-source-arn arn:aws:kinesis:us-east-2:123456789012:stream/lambda-stream \ --starting-position LATEST \ --batch-size 100

Per specificare una finestra di batch, aggiungete l'--maximum-batching-window-in-secondsopzione. Per ulteriori informazioni sull'utilizzo di questo e di altri parametri, vedete create-event-source-mapping nel Command Reference.AWS CLI

AWS SAM
Per creare la mappatura delle sorgenti degli eventi Kinesis
  • Nella definizione della funzione, aggiungi la KinesisEvent proprietà come mostrato nell'esempio seguente:

    Resources: MyFunction: Type: AWS::Serverless::Function Properties: CodeUri: ./my-function/ Handler: index.handler Runtime: nodejs20.x Policies: - AWSLambdaKinesisExecutionRole Events: KinesisEvent: Type: Kinesis Properties: Stream: !GetAtt MyKinesisStream.Arn StartingPosition: LATEST BatchSize: 100 MyKinesisStream: Type: AWS::Kinesis::Stream Properties: ShardCount: 1

Per ulteriori informazioni sulla creazione di una mappatura delle sorgenti di eventi per Kinesis Data Streams in AWS SAM, consulta Kinesis nella Developer Guide.AWS Serverless Application Model

Posizioni di partenza di polling e flussi

Tieni presente che il polling dei flussi durante la creazione e gli aggiornamenti dello strumento di mappatura dell'origine degli eventi alla fine è coerente.

  • Durante la creazione dello strumento di mappatura dell'origine degli eventi, potrebbero essere necessari alcuni minuti per l'avvio degli eventi di polling dal flusso.

  • Durante gli aggiornamenti dello strumento di mappatura dell'origine degli eventi, potrebbero essere necessari alcuni minuti per l'avvio degli eventi di polling dal flusso.

Questo comportamento implica che se specifichi LATEST come posizione iniziale del flusso, lo strumento di mappatura dell'origine degli eventi potrebbe perdere eventi durante la creazione o gli aggiornamenti. Per non perdere alcun evento, specifica la posizione iniziale del flusso come TRIM_HORIZON o AT_TIMESTAMP.

Creazione di una mappatura delle sorgenti degli eventi tra più account

Amazon Kinesis Data Streams supporta policy basate sulle risorse. Per questo motivo, puoi elaborare i dati inseriti in un flusso in uno Account AWS con una funzione Lambda in un altro account.

Per creare una mappatura dell'origine degli eventi per la tua funzione Lambda utilizzando un flusso Kinesis in un Account AWS altro, devi configurare il flusso utilizzando una policy basata sulle risorse per autorizzare la funzione Lambda a leggere gli elementi. Per informazioni su come configurare lo stream per consentire l'accesso su più account, consulta Condivisione dell'accesso con AWS Lambda funzioni su più account nella guida per sviluppatori di Amazon Kinesis Streams.

Dopo aver configurato lo stream con una policy basata sulle risorse che fornisce alla funzione Lambda le autorizzazioni richieste, crea la mappatura delle sorgenti degli eventi utilizzando uno dei metodi descritti nella sezione precedente.

Se scegli di creare la mappatura delle sorgenti degli eventi utilizzando la console Lambda, incolla l'ARN del tuo stream direttamente nel campo di input. Se desideri specificare un consumatore per il tuo stream, incollando l'ARN del consumatore viene compilato automaticamente il campo stream.