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à.
Utilizzo del filtraggio degli eventi con una sorgente di eventi DynamoDB
Puoi utilizzare il filtraggio degli eventi per controllare quali record di un flusso o di una coda Lambda invia alla funzione. Per informazioni generali su come funziona il filtraggio degli eventi, consulta. Controlla quali eventi Lambda invia alla tua funzione
Questa sezione si concentra sul filtraggio degli eventi per le sorgenti di eventi DynamoDB.
Argomenti
Evento DynamoDB
Supponiamo di avere una tabella DynamoDB con la chiave primaria CustomerName
e gli attributi AccountManager
e PaymentTerms
. Di seguito è riportato un esempio di record dal flusso della tabella DynamoDB.
{ "eventID": "1", "eventVersion": "1.0", "dynamodb": { "ApproximateCreationDateTime": "1678831218.0", "Keys": { "CustomerName": { "S": "AnyCompany Industries" }, "NewImage": { "AccountManager": { "S": "Pat Candella" }, "PaymentTerms": { "S": "60 days" }, "CustomerName": { "S": "AnyCompany Industries" } }, "SequenceNumber": "111", "SizeBytes": 26, "StreamViewType": "NEW_IMAGE" } } }
Per filtrare in base ai valori della chiave e degli attributi nella tabella DynamoDB, utilizza la chiave dynamodb
nel record. Le seguenti sezioni forniscono esempi per diversi tipi di filtri.
Filtraggio con chiavi di tabella
Supponiamo che tu voglia che la tua funzione elabori solo i record in cui la chiave primaria CustomerName
è «AnyCompany Industries». L'oggetto FilterCriteria
dovrebbe avere la struttura seguente.
{ "Filters": [ { "Pattern": "{ \"dynamodb\" : { \"Keys\" : { \"CustomerName\" : { \"S\" : [ \"AnyCompany Industries\" ] } } } }" } ] }
Per maggiore chiarezza, ecco il valore del filtro Pattern
espanso in chiaroJSON.
{ "dynamodb": { "Keys": { "CustomerName": { "S": [ "AnyCompany Industries" ] } } } }
Puoi aggiungere il filtro utilizzando la console AWS CLI o un AWS SAM modello.
Filtraggio con attributi di tabella
Con DynamoDB, puoi anche utilizzare le chiavi NewImage
e OldImage
per filtrare i valori degli attributi. Supponiamo di voler filtrare i record in cui l'attributo AccountManager
nell'ultima immagine della tabella è "Pat Candella" o "Shirley Rodriguez". L'oggetto FilterCriteria
dovrebbe avere la struttura seguente.
{ "Filters": [ { "Pattern": "{ \"dynamodb\" : { \"NewImage\" : { \"AccountManager\" : { \"S\" : [ \"Pat Candella\", \"Shirley Rodriguez\" ] } } } }" } ] }
Per maggiore chiarezza, ecco il valore del filtro Pattern
espanso in chiaroJSON.
{ "dynamodb": { "NewImage": { "AccountManager": { "S": [ "Pat Candella", "Shirley Rodriguez" ] } } } }
Puoi aggiungere il filtro utilizzando la console AWS CLI o un AWS SAM modello.
Filtraggio con espressioni booleane
È inoltre possibile creare filtri utilizzando espressioni booleane. AND Queste espressioni possono includere sia i parametri chiave sia quelli degli attributi della tabella. Supponiamo che tu voglia filtrare i record in cui il valore di NewImage
di AccountManager
è "Pat Candella" e il valore di OldImage
è "Terry Whitlock". L'oggetto FilterCriteria
dovrebbe avere la struttura seguente.
{ "Filters": [ { "Pattern": "{ \"dynamodb\" : { \"NewImage\" : { \"AccountManager\" : { \"S\" : [ \"Pat Candella\" ] } } } , \"dynamodb\" : { \"OldImage\" : { \"AccountManager\" : { \"S\" : [ \"Terry Whitlock\" ] } } } }" } ] }
Per maggiore chiarezza, ecco il valore del filtro Pattern
espanso in chiaro. JSON
{ "dynamodb" : { "NewImage" : { "AccountManager" : { "S" : [ "Pat Candella" ] } } }, "dynamodb": { "OldImage": { "AccountManager": { "S": [ "Terry Whitlock" ] } } } }
Puoi aggiungere il filtro utilizzando la console AWS CLI o un AWS SAM modello.
Nota
Il filtraggio degli eventi DynamoDB non supporta l'uso di operatori numerici (uguali numerici e intervallo numerico). Anche se gli elementi della tabella sono memorizzati come numeri, questi parametri vengono convertiti in stringhe nell'JSONoggetto record.
Utilizzo dell'operatore Exists
A causa del modo in cui sono strutturati gli oggetti JSON evento di DynamoDB, l'utilizzo dell'operatore Exists richiede particolare attenzione. L'operatore Exists funziona solo sui nodi foglia nell'eventoJSON, quindi se il modello di filtro utilizza Exists per testare un nodo intermedio, non funzionerà. Considerate il seguente elemento della tabella DynamoDB:
{ "UserID": {"S": "12345"}, "Name": {"S": "John Doe"}, "Organizations": {"L": [ {"S":"Sales"}, {"S":"Marketing"}, {"S":"Support"} ] } }
Potresti voler creare uno schema di filtro come il seguente per verificare la presenza di eventi contenenti: "Organizations"
{ "dynamodb" : { "NewImage" : { "Organizations" : [ { "exists": true } ] } } }
Tuttavia, questo modello di filtro non restituirebbe mai una corrispondenza perché non "Organizations"
è un nodo foglia. L'esempio seguente mostra come utilizzare correttamente l'operatore Exists per costruire il pattern di filtro desiderato:
{ "dynamodb" : { "NewImage" : {"Organizations": {"L": {"S": [ {"exists": true } ] } } } } }
JSONformato per il filtraggio DynamoDB
Per filtrare correttamente gli eventi dalle sorgenti DynamoDB, sia il campo dati che i criteri di filtro per il campo dati dynamodb
() devono essere in formato valido. JSON Se uno dei due campi non è in un JSON formato valido, Lambda elimina il messaggio o genera un'eccezione. La tabella seguente riepiloga il comportamento specifico:
Formato dei dati in entrata | Formato del modello di filtro per le proprietà di dati | Operazione risultante |
---|---|---|
Valido JSON |
Valido JSON |
Filtri Lambda in base ai criteri di filtro. |
Valido JSON |
Nessun modello di filtro per le proprietà dei dati |
Filtri Lambda (solo sulle altre proprietà dei metadati) in base ai criteri di filtro. |
Valido JSON |
Non- JSON |
Lambda genera un'eccezione al momento della creazione o dell'aggiornamento della mappatura dell'origine evento. Il modello di filtro per le proprietà dei dati deve essere in un JSON formato valido. |
Non- JSON |
Valido JSON |
Lambda rilascia il registro. |
Non- JSON |
Nessun modello di filtro per le proprietà dei dati |
Filtri Lambda (solo sulle altre proprietà dei metadati) in base ai criteri di filtro. |
Non- JSON |
Non- JSON |
Lambda genera un'eccezione al momento della creazione o dell'aggiornamento della mappatura dell'origine evento. Il modello di filtro per le proprietà dei dati deve essere in un JSON formato valido. |