Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisation du filtrage des événements avec une source d'événements DynamoDB
Vous pouvez utiliser le filtrage d’événements pour contrôler les enregistrements d’un flux ou d’une file d’attente que Lambda envoie à votre fonction. Pour des informations générales sur le fonctionnement du filtrage des événements, consultezContrôlez les événements que Lambda envoie à votre fonction.
Cette section se concentre sur le filtrage des événements pour les sources d'événements DynamoDB.
Rubriques
Evénement DynamoDB
Supposons que vous ayez une table DynamoDB avec la clé primaire CustomerName
et les attributs AccountManager
et PaymentTerms
. La figure suivante montre un exemple d’enregistrement provenant du flux de votre table 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" } } }
Pour filtrer sur la base des valeurs de clé et d’attribut de votre table DynamoDB, utilisez la clé dynamodb
dans l’enregistrement. Les sections suivantes fournissent des exemples de différents types de filtres.
Filtrage à l'aide des touches de table
Supposons que vous souhaitiez que votre fonction traite uniquement les enregistrements dont la clé primaire CustomerName
est « AnyCompany Industries ». L’objet FilterCriteria
serait le suivant.
{ "Filters": [ { "Pattern": "{ \"dynamodb\" : { \"Keys\" : { \"CustomerName\" : { \"S\" : [ \"AnyCompany Industries\" ] } } } }" } ] }
Pour plus de clarté, voici la valeur du filtre Pattern
expansé en clairJSON.
{ "dynamodb": { "Keys": { "CustomerName": { "S": [ "AnyCompany Industries" ] } } } }
Vous pouvez ajouter votre filtre à l'aide de la console AWS CLI ou d'un AWS SAM modèle.
Filtrage à l'aide des attributs de table
Avec DynamoDB, vous pouvez également utiliser les clés NewImage
et OldImage
pour filtrer les valeurs d’attributs. Supposons que vous vouliez filtrer les enregistrements où l’attribut AccountManager
de la dernière image de la table est « Pat Candella » ou « Shirley Rodriguez ». L’objet FilterCriteria
serait le suivant.
{ "Filters": [ { "Pattern": "{ \"dynamodb\" : { \"NewImage\" : { \"AccountManager\" : { \"S\" : [ \"Pat Candella\", \"Shirley Rodriguez\" ] } } } }" } ] }
Pour plus de clarté, voici la valeur du filtre Pattern
expansé en clairJSON.
{ "dynamodb": { "NewImage": { "AccountManager": { "S": [ "Pat Candella", "Shirley Rodriguez" ] } } } }
Vous pouvez ajouter votre filtre à l'aide de la console AWS CLI ou d'un AWS SAM modèle.
Filtrage à l'aide d'expressions booléennes
Vous pouvez également créer des filtres à l'aide d'expressions booléennesAND. Ces expressions peuvent inclure les paramètres de clé et d’attribut de votre table. Supposons que vous souhaitiez filtrer les enregistrements dont la valeur NewImage
d’AccountManager
est « Pat Candella » et la valeur OldImage
est « Terry Whitlock ». L’objet FilterCriteria
serait le suivant.
{ "Filters": [ { "Pattern": "{ \"dynamodb\" : { \"NewImage\" : { \"AccountManager\" : { \"S\" : [ \"Pat Candella\" ] } } } , \"dynamodb\" : { \"OldImage\" : { \"AccountManager\" : { \"S\" : [ \"Terry Whitlock\" ] } } } }" } ] }
Pour plus de clarté, voici la valeur du filtre Pattern
expansé en clairJSON.
{ "dynamodb" : { "NewImage" : { "AccountManager" : { "S" : [ "Pat Candella" ] } } }, "dynamodb": { "OldImage": { "AccountManager": { "S": [ "Terry Whitlock" ] } } } }
Vous pouvez ajouter votre filtre à l'aide de la console AWS CLI ou d'un AWS SAM modèle.
Note
Le filtrage d’événements DynamoDB ne prend pas en charge l’utilisation d’opérateurs numériques (égalité numérique et plage numérique). Même si les éléments de votre table sont stockés sous forme de nombres, ces paramètres sont convertis en chaînes dans l'objet d'JSONenregistrement.
Utilisation de l'opérateur Exists
En raison de la structure des objets d'JSONévénements de DynamoDB, l'utilisation de l'opérateur Exists nécessite une attention particulière. L'opérateur Exists ne fonctionne que sur les nœuds foliaires de l'événement. Par conséquentJSON, si votre modèle de filtre utilise Exists pour tester un nœud intermédiaire, il ne fonctionnera pas. Tenez compte de l'élément de table DynamoDB suivant :
{ "UserID": {"S": "12345"}, "Name": {"S": "John Doe"}, "Organizations": {"L": [ {"S":"Sales"}, {"S":"Marketing"}, {"S":"Support"} ] } }
Vous souhaiterez peut-être créer un modèle de filtre comme le suivant pour tester les événements contenant "Organizations"
:
{ "dynamodb" : { "NewImage" : { "Organizations" : [ { "exists": true } ] } } }
Cependant, ce modèle de filtre ne renverra jamais de correspondance car il ne "Organizations"
s'agit pas d'un nœud feuille. L'exemple suivant montre comment utiliser correctement l'opérateur Exists pour créer le modèle de filtre souhaité :
{ "dynamodb" : { "NewImage" : {"Organizations": {"L": {"S": [ {"exists": true } ] } } } } }
JSONformat pour le filtrage DynamoDB
Pour filtrer correctement les événements provenant de sources DynamoDB, le champ de données et vos critères de filtre pour le champ de données dynamodb
() doivent être au format valide. JSON Si l'un des champs n'est pas dans un JSON format valide, Lambda supprime le message ou lance une exception. Le tableau suivant résume le comportement spécifique :
Format des données entrantes | Pas de modèle de filtre pour les propriétés des données | Action obtenue. |
---|---|---|
Valide JSON |
Valide JSON |
Lambda filtre en fonction de vos critères de filtre. |
Valide JSON |
Pas de modèle de filtre pour les propriétés des données |
Lambda filtre (uniquement selon les autres propriétés de métadonnées) en fonction de vos critères de filtre. |
Valide JSON |
Non- JSON |
Lambda lance une exception au moment de la création ou de la mise à jour du mappage de sources d’événements. Le modèle de filtre pour les propriétés des données doit être dans un JSON format valide. |
Non- JSON |
Valide JSON |
Lambda rejette l’enregistrement. |
Non- JSON |
Pas de modèle de filtre pour les propriétés des données |
Lambda filtre (uniquement selon les autres propriétés de métadonnées) en fonction de vos critères de filtre. |
Non- JSON |
Non- JSON |
Lambda lance une exception au moment de la création ou de la mise à jour du mappage de sources d’événements. Le modèle de filtre pour les propriétés des données doit être dans un JSON format valide. |