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énement 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 obtenir des informations générales sur le fonctionnement du filtrage des événements, consultez Contrôle des événements envoyés par Lambda à votre fonction.
Cette section porte sur le filtrage des événements pour les sources d’événement DynamoDB.
Rubriques
Évé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 clés de table
Supposons que vous vouliez que votre fonction ne traite que 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 Pattern
de filtre étendu en JSON simple :
{ "dynamodb": { "Keys": { "CustomerName": { "S": [ "AnyCompany Industries" ] } } } }
Vous pouvez ajouter votre filtre à l’aide de la console, d’AWS CLI ou d’un modèle AWS SAM.
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 Pattern
de filtre étendu en JSON simple :
{ "dynamodb": { "NewImage": { "AccountManager": { "S": [ "Pat Candella", "Shirley Rodriguez" ] } } } }
Vous pouvez ajouter votre filtre à l’aide de la console, d’AWS CLI ou d’un modèle AWS SAM.
Filtrage à l’aide d’expressions booléennes
Vous pouvez également créer des filtres à l’aide des expressions booléennes AND. 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 Pattern
de filtre étendu en JSON simple :
{ "dynamodb" : { "NewImage" : { "AccountManager" : { "S" : [ "Pat Candella" ] } } }, "dynamodb": { "OldImage": { "AccountManager": { "S": [ "Terry Whitlock" ] } } } }
Vous pouvez ajouter votre filtre à l’aide de la console, d’AWS CLI ou d’un modèle AWS SAM.
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’enregistrement JSON.
Utilisation de l’opérateur Exists
En raison de la structure des objets d’événements JSON 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 terminaux dans l’événement JSON. Par conséquent, si votre modèle de filtre utilise Exists pour tester un nœud intermédiaire, il ne fonctionnera pas. Observez l’élément de table DynamoDB suivant :
{ "UserID": {"S": "12345"}, "Name": {"S": "John Doe"}, "Organizations": {"L": [ {"S":"Sales"}, {"S":"Marketing"}, {"S":"Support"} ] } }
Vous pourriez avoir besoin de 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 "Organizations"
n’est pas un nœud terminal. L’exemple suivant montre comment utiliser correctement l’opérateur Exists pour construire le modèle de filtre souhaité :
{ "dynamodb" : { "NewImage" : {"Organizations": {"L": {"S": [ {"exists": true } ] } } } } }
Format JSON 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 JSON valide. Si l’un ou l’autre des champs n’est pas dans un format JSON valide, Lambda rejette 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. |
---|---|---|
JSON valide |
JSON valide |
Lambda filtre en fonction de vos critères de filtre. |
JSON valide |
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. |
JSON valide |
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 des propriétés de données doit être au format JSON valide. |
Non JSON |
JSON valide |
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 des propriétés de données doit être au format JSON valide. |