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'SQSévénements Amazon
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 MSK d'événements Amazon.
Principes de base du filtrage des SQS événements Amazon
Supposons que votre SQS file d'attente Amazon contienne des messages au JSON format suivant.
{ "RecordNumber": 1234, "TimeStamp": "yyyy-mm-ddThh:mm:ss", "RequestCode": "AAAA" }
Un exemple d’enregistrement pour cette file d’attente ressemblerait à ce qui suit.
{ "messageId": "059f36b4-87a3-44ab-83d2-661975830a7d", "receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", "body": "{\n "RecordNumber": 1234,\n "TimeStamp": "yyyy-mm-ddThh:mm:ss",\n "RequestCode": "AAAA"\n}", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1545082649183", "SenderId": "AIDAIENQZJOLO23YVJ4VO", "ApproximateFirstReceiveTimestamp": "1545082649185" }, "messageAttributes": {}, "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-west-2:123456789012:my-queue", "awsRegion": "us-west-2" }
Pour filtrer en fonction du contenu de vos SQS messages Amazon, utilisez la body
clé figurant dans l'enregistrement des SQS messages Amazon. Supposons que vous souhaitiez traiter uniquement les enregistrements contenant le « » RequestCode
dans votre SQS message AmazonBBBB. L’objet FilterCriteria
serait le suivant.
{ "Filters": [ { "Pattern": "{ \"body\" : { \"RequestCode\" : [ \"BBBB\" ] } }" } ] }
Pour plus de clarté, voici la valeur du filtre Pattern
expansé en clairJSON.
{ "body": { "RequestCode": [ "BBBB" ] } }
Vous pouvez ajouter votre filtre à l'aide de la console AWS CLI ou d'un AWS SAM modèle.
Supposons que vous vouliez que votre fonction ne traite que les enregistrements où RecordNumber
est supérieur à 9 999. L’objet FilterCriteria
serait le suivant.
{ "Filters": [ { "Pattern": "{ \"body\" : { \"RecordNumber\" : [ { \"numeric\": [ \">\", 9999 ] } ] } }" } ] }
Pour plus de clarté, voici la valeur du filtre Pattern
expansé en clairJSON.
{ "body": { "RecordNumber": [ { "numeric": [ ">", 9999 ] } ] } }
Vous pouvez ajouter votre filtre à l'aide de la console AWS CLI ou d'un AWS SAM modèle.
Pour AmazonSQS, le corps du message peut être n'importe quelle chaîne. Toutefois, cela peut être problématique si vous vous FilterCriteria
attendez body
à ce que le JSON format soit valide. Le scénario inverse est également vrai : si le corps du message entrant est JSON formaté mais que vos critères de filtrage s'attendent body
à être une chaîne simple, cela peut entraîner un comportement involontaire.
Pour éviter ce problème, assurez-vous que le format du corps dans vos FilterCriteria
correspond au format attendu de body
dans les messages que vous recevez de votre file d’attente. Avant de filtrer vos messages, Lambda évalue automatiquement le format du corps de votre message entrant et de votre modèle de filtre pour body
. En cas de décalage, Lambda abandonne le message. Le tableau suivant résume cette évaluation :
Format du body du message entrant |
Format du body du modèle de filtre |
Action obtenue. |
---|---|---|
Chaîne de texte brut |
Chaîne de texte brut |
Lambda filtre en fonction de vos critères de filtre. |
Chaîne de texte brut |
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. |
Chaîne de texte brut |
Valide JSON |
Lambda rejette le message. |
Valide JSON |
Chaîne de texte brut |
Lambda rejette le message. |
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 |
Valide JSON |
Lambda filtre en fonction de vos critères de filtre. |