Naturalmente, puoi anche utilizzare i flussi DynamoDB per attivare i processi a valle e le funzioni di Lambda AWS. Lambda, per definizione, è un servizio di calcolo senza server che esegue il codice in risposta agli eventi e gestisce automaticamente le risorse di calcolo per te.
Puoi usare lambda per scrivere il codice in nodo.JS, Python, Java o C# per elaborare i record del flusso e intraprendere le azioni appropriate. Il principale vantaggio dell'integrazione dei flussi DynamoDB con Lambda è che Lambda consente di eseguire i servizi di supporto o i codici applicativi senza la necessità di amministrazione.
Come usare i flussi AWS DynamoDB con Lambda
Sebbene sia possibile creare una funzione Lambda che consuma eventi e occorrenze da un flusso DynamoDB, il processo può essere abbastanza tasking, in particolare al tuo primo tentativo. I seguenti passaggi aiuteranno:
Passaggio 1: assicurarsi che il tuo sistema soddisfi i prerequisiti
Questa procedura avrà esito positivo solo se conosci le operazioni e i processi di base Lambda. Pertanto, questo dovrebbe essere il tuo primo a garantire che la tua comprensione di Lambda sia al di sopra della media.
Il secondo prerequisito che vale la pena considerare è confermare la versione AWS del tuo sistema. È possibile utilizzare il seguente comando:
AWS -VersionIl risultato per il comando fornito dovrebbe apparire così:
AWS-CLI/2.X.x Python/3.X.x Linux/4.X.X-XXX-STD BOTOCORE/2.X.XLa risposta del campione data contiene la versione installata della CLI AWS (AWS-CLI/2.X.X), la versione Python (Python/3.X.X) e il sistema operativo (Linux/4.X.X-XXX-STD). La parte finale della risposta definisce la versione della libreria Botocore su cui esegue la tua CLI AWS (Botocore/2.X.X).
Pertanto, finirai con qualcosa del genere:
Passaggio 2: creare un ruolo di esecuzione
Il prossimo passo è creare un ruolo di esecuzione in AWS CLI. Un ruolo di esecuzione è un ruolo di Identity and Access Management (IAM) assunto da un servizio AWS per svolgere le attività per tuo conto. Ti dà accesso alle risorse AWS di cui avrai bisogno lungo la strada.
Puoi creare un ruolo usando il seguente comando:
AWS iam Crea-Role \Il comando precedente è un comando CLI AWS per creare un ruolo. Puoi anche utilizzare la console di gestione Amazon per creare un ruolo. Una volta che sei alla console IAM, apri il Ruoli pagina e fare clic su Creare ruolo pulsante.
Procedere a inserire quanto segue:
Puoi anche usare Python installando prima l'SDK AWS per Python:
PIP Installa Boto3Passaggio 3: abilita i flussi DynamODB sulla tabella
È necessario abilitare i flussi DynamODB sul tavolo. Per questa illustrazione, usiamo il Boto3, AWS SDK per Python. Il seguente comando aiuterà:
Importa Boto3Questo codice abilita il flusso di DynamoDB sulla tabella "mytable" che trasmette sia le nuove che vecchie immagini di elementi non appena si verificano modifiche. Puoi scegliere di trasmettere in streaming solo le nuove immagini non appena StreamViewType su "New_Image".
In particolare, l'esecuzione di questo codice può abilitare i flussi solo sulle tabelle. Invece, il processo potrebbe richiedere del tempo. È possibile utilizzare il metodo Descrive_Table per verificare lo stato del flusso.
Passaggio 4: crea la funzione Lambda
Il prossimo passo è la creazione di una funzione Lambda che innesca il flusso DynamoDB. I seguenti passaggi dovrebbero aiutare:
Questo è tutto ciò che accade quando si crea una funzione Lambda! La tua funzione è ora attivata ogni volta che ci sono aggiornamenti alla tabella DynamoDB specificata.
Ecco un esempio di una semplice funzione Python che il flusso DynamoDB può attivare:
def lambda_handler (evento, contesto):Questa funzione itera attraverso i record nell'oggetto evento e stampa la nuova immagine dell'elemento nella tabella Dynamodb che innesca la funzione.
Passaggio 5: testare la funzione Lambda
Per testare una funzione Lambda che un flusso DynamoDB può attivare, è possibile utilizzare il Boto3 libreria per accedere all'API DynamoDB e invocare metodo del Lambda client per attivare la funzione.
Ecco un esempio su come farlo:
Importa Boto3Questo codice inserisce prima un elemento in mytable tavolo e poi innesca il myfunction Funzione lambda inviando un payload evento di esempio alla funzione utilizzando il invocare metodo. Il payload dell'evento simula un evento di flusso DynamoDB che include la nuova immagine dell'oggetto che è stato appena inserito.
È quindi possibile controllare i registri della funzione Lambda per vedere se ha attivato correttamente ed elaborato i dati dell'evento.
Conclusione
È fondamentale notare che è possibile invocare più volte per lo stesso record di flusso che un flusso DynamoDB può attivare una funzione Lambda. Il motivo principale alla base di questo è che i record del flusso sono infine coerenti ed è possibile elaborare lo stesso record più volte dalla funzione Lambda. È fondamentale progettare la funzione Lambda per gestire correttamente questo caso.