

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à.

# Controllare gli eventi che Lambda invia alla funzione
<a name="invocation-eventfiltering"></a>

Puoi utilizzare il filtraggio degli eventi per controllare quali record di un flusso o di una coda Lambda invia alla funzione. Ad esempio, puoi aggiungere un filtro in modo che la tua funzione elabori solo i messaggi Amazon SQS contenenti determinati parametri di dati. Il filtraggio degli eventi funziona solo con determinati strumenti di mappatura dell'origine degli eventi. È possibile aggiungere filtri alle mappature delle sorgenti degli eventi per quanto segue: Servizi AWS
+ Amazon DynamoDB
+ Flusso di dati Amazon Kinesis
+ Amazon MQ
+ Amazon Managed Streaming for Apache Kafka (Amazon MSK)
+ Apache Kafka gestito dal cliente
+ Amazon Simple Queue Service (Amazon SQS)

Per informazioni specifiche sul filtraggio con origini eventi specifiche, consulta [Utilizzo di filtri con diversi Servizi AWS](#filtering-by-service). Lambda non supporta il filtraggio degli eventi per Amazon DocumentDB.

Per impostazione predefinita, è possibile definire fino a cinque filtri diversi per una singola mappatura dell'origine degli eventi. I tuoi filtri sono collegati ORed logicamente. Se un record proveniente dall'origine dell'evento soddisfa uno o più filtri, Lambda include il record nell'evento successivo che invia alla funzione. Se nessuno dei filtri è soddisfatto, Lambda scarta il record.

**Nota**  
Se devi definire più di cinque filtri per un'origine eventi, puoi richiedere un aumento della quota fino a 10 filtri per ciascuna origine eventi. Se provi ad aggiungere più filtri di quelli consentiti dalla quota corrente, Lambda restituisce un errore quando provi a creare l'origine degli eventi.

**Topics**
+ [

## Nozioni di base sul filtraggio di eventi
](#filtering-basics)
+ [

## Gestione dei record che non soddisfano i criteri di filtraggio
](#filtering-criteria-not-met)
+ [

## Sintassi delle regole di filtro
](#filtering-syntax)
+ [

## Collegamento dei criteri di filtro a una mappatura dell'origine evento (console)
](#filtering-console)
+ [

## Collegamento dei criteri di filtro a una mappatura dell'origine evento (AWS CLI)
](#filtering-cli)
+ [

## Collegamento dei criteri di filtro a una mappatura dell'origine evento (AWS SAM)
](#filtering-sam)
+ [

## Crittografia dei criteri di filtro
](#filter-criteria-encryption)
+ [

## Utilizzo di filtri con diversi Servizi AWS
](#filtering-by-service)

## Nozioni di base sul filtraggio di eventi
<a name="filtering-basics"></a>

Un oggetto criterio di filtro (`FilterCriteria`) è una struttura costituita da un elenco di filtri (`Filters`). Ogni filtro è una struttura che definisce un modello di filtraggio degli eventi (`Pattern`). Un modello è una rappresentazione di stringa di una regola di filtraggio JSON. La struttura di un oggetto `FilterCriteria` è come segue.

```
{
   "Filters": [
        {
            "Pattern": "{ \"Metadata1\": [ rule1 ], \"data\": { \"Data1\": [ rule2 ] }}"
        }
    ]
}
```

Per una maggiore chiarezza, ecco il valore del `Pattern` del filtro espanso in JSON semplice.

```
{
    "Metadata1": [ rule1 ],
    "data": {
        "Data1": [ rule2 ]
    }
}
```

Il modello di filtraggio può includere proprietà dei metadati, proprietà dei dati o entrambe. I parametri dei metadati disponibili e il formato dei parametri dei dati variano a seconda del Servizio AWS che funge da origine dell'evento. Ad esempio, supponiamo che la mappatura dell'origine degli eventi riceva il seguente record da una coda Amazon SQS:

```
{
    "messageId": "059f36b4-87a3-44ab-83d2-661975830a7d",
    "receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...",
    "body": "{\\n \"City\": \"Seattle\",\\n \"State\": \"WA\",\\n \"Temperature\": \"46\"\\n}",
    "attributes": {
        "ApproximateReceiveCount": "1",
        "SentTimestamp": "1545082649183",
        "SenderId": "AIDAIENQZJOLO23YVJ4VO",
        "ApproximateFirstReceiveTimestamp": "1545082649185"
    },
    "messageAttributes": {},
    "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3",
    "eventSource": "aws:sqs",
    "eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:my-queue",
    "awsRegion": "us-east-2"
}
```
+ Le **Proprietà dei metadati** sono i campi contenenti informazioni sull'evento che ha creato il record. Nel record Amazon SQS di esempio, le proprietà dei metadati includono campi come `messageID``eventSourceArn` e `awsRegion`.
+ Le **Proprietà dei dati** sono i campi del record contenenti i dati del flusso o della coda. Nell'esempio di evento Amazon SQS, la chiave per il campo dati è `body` e le proprietà dei dati sono i campi `City`, `State` e `Temperature`.

Diversi tipi di origine degli eventi utilizzano valori di chiave differenti per i rispettivi campi di dati. Per filtrare le proprietà dei dati, assicurati di utilizzare la chiave corretta nel modello del filtraggio. Per un elenco delle chiavi di filtraggio dei dati e per vedere esempi di modelli di filtro per ciascuna delle chiavi supportate Servizio AWS, consulta. [Utilizzo di filtri con diversi Servizi AWS](#filtering-by-service)

Il filtraggio degli eventi è in grado di gestire il filtraggio JSON multi-livello. Considera, ad esempio, il seguente frammento di un record da un flusso DynamoDB:

```
"dynamodb": {
    "Keys": {
        "ID": {
            "S": "ABCD"
        }
        "Number": {
            "N": "1234"
    },
    ...
}
```

Supponi di voler elaborare solo i record in cui il valore della chiave di ordinamento `Number` è 4567. In questo caso, l'oggetto `FilterCriteria` appare così:

```
{
    "Filters": [
        {
            "Pattern": "{ \"dynamodb\": { \"Keys\": { \"Number\": { \"N\": [ "4567" ] } } } }"
        }
    ]
}
```

Per una maggiore chiarezza, ecco il valore del `Pattern` del filtro espanso in JSON semplice. 

```
{
    "dynamodb": {
        "Keys": {
            "Number": {
                "N": [ "4567" ]
                }
            }
        }
}
```

## Gestione dei record che non soddisfano i criteri di filtraggio
<a name="filtering-criteria-not-met"></a>

Il modo in cui Lambda gestisce i record che non soddisfano i criteri di filtro dipende dall'origine eventi.
+ Per **Amazon SQS**, se un messaggio non soddisfa i criteri di filtraggio, Lambda rimuove automaticamente il messaggio dalla coda. Non è necessario eliminare manualmente questi messaggi in Amazon SQS.
+ Per **Kinesis** e **DynamoDB**, una volta che i criteri di filtraggio valutano un record, l'iteratore di flussi passa oltre questo record. Se il registro non soddisfa i criteri di filtro, non è necessario eliminare manualmente il registro dall'origine evento. Dopo il periodo di conservazione, Kinesis e DynamoDB eliminano automaticamente questi vecchi record. Se vuoi che i record vengano eliminati prima, consulta [Modifica del periodo di conservazione dei dati](https://docs.aws.amazon.com/streams/latest/dev/kinesis-extended-retention.html).
+ Per i messaggi **Amazon MSK**, **Apache Kafka autogestiti** e **Amazon MQ**, Lambda elimina i messaggi che non corrispondono a tutti i campi inclusi nel filtro. Per Amazon MSK e Apache Kafka autogestito, Lambda esegue il commit degli offset per i messaggi corrispondenti e non corrispondenti dopo aver richiamato correttamente la funzione. Per Amazon MQ, Lambda riconosce i messaggi corrispondenti dopo aver richiamato con successo la funzione e riconosce i messaggi non corrispondenti quando li filtra.

## Sintassi delle regole di filtro
<a name="filtering-syntax"></a>

Per le regole di filtro, Lambda supporta EventBridge le regole di Amazon e utilizza la stessa sintassi di. EventBridge Per ulteriori informazioni, consulta i [modelli di EventBridge eventi](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html) di *Amazon nella Amazon EventBridge User Guide*.

Di seguito è riportato un riepilogo di tutti gli operatori di confronto disponibili per il filtro eventi Lambda.


| Operatore di confronto | Esempio | Sintassi delle regole | 
| --- | --- | --- | 
|  Null  |  UserID è nullo  |  "UserID": [ nullo ]  | 
|  Empty  |  LastName è vuoto  |  "LastName": [""]  | 
|  Equals  |  Il nome è "Alice"  |  "Nome": [ "Alice" ]  | 
|  Uguale a (ignora maiuscole e minuscole)  |  Il nome è "Alice"  |  «Nome»: [\$1"equals-ignore-case«: «alice»\$1]  | 
|  And  |  La posizione è "New York" e il giorno è "lunedì"  |  "Luogo": [ "New York" ], "Giorno": ["lunedì"]  | 
|  Or  |  PaymentType è «Credito» o «Debito»  |  "PaymentType«: [«Credito», «Debito"]  | 
|  Or (campi multipli)  |  La posizione è "New York" o il giorno è "lunedì".  |  "\$1or": [ \$1 "Location": [ "New York" ] \$1, \$1 "Day": [ "Monday" ] \$1 ]   | 
|  Not  |  Il tempo è qualsiasi tranne "piovoso"  |  "Meteo": [ \$1 "anything-but": [ "Piove" ] \$1 ]  | 
|  Numerico (uguale)  |  Il prezzo è 100  |  "Prezzo": [ \$1 "numerico": [ "=", 100 ] \$1 ]  | 
|  Numerico (intervallo)  |  Il prezzo è superiore a 10 e inferiore o uguale a 20  |  "Prezzo": [ \$1 "numerico": [ ">", 10, "<=", 20 ] \$1 ]  | 
|  Exists  |  ProductName esiste  |  "ProductName«: [\$1«exists»: vero\$1]  | 
|  Does not exist  |  ProductName non esiste  |  "ProductName«: [\$1«exists»: false\$1]  | 
|  Begins with  |  La Regione è negli Stati Uniti  |  "Regione": [ \$1"prefisso": "us-" \$1 ]  | 
|  Ends with  |  FileName termina con un'estensione.png.  |  "FileName«: [\$1«suffix»: «.png»\$1]   | 

**Nota**  
Ad esempio EventBridge, per le stringhe, Lambda utilizza la corrispondenza character-by-character esatta senza ripiegamento tra maiuscole e minuscole o qualsiasi altra normalizzazione delle stringhe. Per i numeri Lambda utilizza anche la rappresentazione di stringhe. Ad esempio, 300, 300.0 e 3.0e2 non sono considerati uguali.

Tieni presente che l'operatore Exists funziona solo sui nodi foglia nell'origine eventi JSON. Non corrisponde ai nodi intermedi. Ad esempio, con il seguente codice JSON, lo schema di filtro `{ "person": { "address": [ { "exists": true } ] } }"` non troverebbe una corrispondenza perché `"address"` è un nodo intermedio.

```
{
  "person": {
    "name": "John Doe",
    "age": 30,
    "address": {
      "street": "123 Main St",
      "city": "Anytown",
      "country": "USA"
    }
  }
}
```

## Collegamento dei criteri di filtro a una mappatura dell'origine evento (console)
<a name="filtering-console"></a>

Seguire questi passaggi per creare una nuova mappatura delle origini eventi con criteri di filtro utilizzando la console Lambda.

**Per creare una nuova mappatura dell'origine evento con criteri di filtro (console)**

1. Aprire la pagina [Funzioni](https://console.aws.amazon.com/lambda/home#/functions) della console Lambda.

1. Scegliere il nome di una funzione per la creazione di una mappatura dell'origine evento.

1. In **Panoramica delle funzioni**, scegliere **Aggiungi trigger**.

1. Per **Trigger configuration** (Configurazione trigger), scegliere un tipo di attivazione che supporta il filtraggio degli eventi. Per un elenco dei servizi supportati, consulta l'elenco all'inizio di questa pagina.

1. Espandere **Additional settings** (Impostazioni aggiuntive).

1. Alla voce **Filter criteria** (Criteri di filtro), seleziona **Add** (Aggiungi), quindi definisci e immetti i filtri. Ad esempio, è possibile inserire i seguenti valori.

   ```
   { "Metadata" : [ 1, 2 ] }
   ```

   Ciò indica a Lambda di elaborare solo i registri in cui il campo `Metadata` è uguale a 1 o 2. Puoi continuare a selezionare **Aggiungi** per aggiungere altri filtri fino al numero massimo consentito.

1. Una volta completata l'aggiunta di filtri, scegli **Salva**.

Quando si inseriscono i criteri di filtraggio utilizzando la console, si inserisce solo il modello di filtraggio e non è necessario fornire la chiave `Pattern` o le virgolette di escape. Nel passaggio 6 delle istruzioni precedenti, `{ "Metadata" : [ 1, 2 ] }` corrisponde ai `FilterCriteria` seguenti.

```
{
   "Filters": [
      {
          "Pattern": "{ \"Metadata\" : [ 1, 2 ] }"
      }
   ]
}
```

Dopo aver creato la mappatura dell'origine eventi nella console, è possibile visualizzare il `FilterCriteria` formattato nei dettagli del trigger. Per altri esempi di creazione di filtri per gli eventi utilizzando la console, consulta la pagina [Utilizzo di filtri con diversi Servizi AWS](#filtering-by-service).

## Collegamento dei criteri di filtro a una mappatura dell'origine evento (AWS CLI)
<a name="filtering-cli"></a>

Supponiamo che si desideri che una mappatura dell'origine eventi abbia i seguenti `FilterCriteria`:

```
{
   "Filters": [
      {
          "Pattern": "{ \"Metadata\" : [ 1, 2 ] }"
      }
   ]
}
```

Per creare una nuova mappatura dell'origine degli eventi con questi criteri di filtro utilizzando AWS Command Line Interface (AWS CLI), esegui il comando seguente.

```
aws lambda create-event-source-mapping \
    --function-name my-function \
    --event-source-arn arn:aws:sqs:us-east-2:123456789012:my-queue \
    --filter-criteria '{"Filters": [{"Pattern": "{ \"Metadata\" : [ 1, 2 ]}"}]}'
```

Questo [ create-event-source-mapping](https://docs.aws.amazon.com/cli/latest/reference/lambda/create-event-source-mapping.html)comando crea una nuova mappatura dell'origine degli eventi Amazon SQS per una funzione `my-function` con quanto specificato. `FilterCriteria`

Per aggiungere questi criteri di filtraggio a una mappatura dell'origine degli eventi esistente, esegui il comando seguente.

```
aws lambda update-event-source-mapping \
    --uuid "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \
    --filter-criteria '{"Filters": [{"Pattern": "{ \"Metadata\" : [ 1, 2 ]}"}]}'
```

Si noti che per aggiornare una mappatura di origine eventi, è necessario il suo UUID. È possibile ottenere l'UUID da una chiamata. [ list-event-source-mappings](https://docs.aws.amazon.com/cli/latest/reference/lambda/list-event-source-mappings.html) Lambda restituisce anche l'UUID nella risposta CLI. [ create-event-source-mapping](https://docs.aws.amazon.com/cli/latest/reference/lambda/create-event-source-mapping.html)

Per rimuovere i criteri di filtro da un'origine di eventi, puoi eseguire il [ update-event-source-mapping](https://docs.aws.amazon.com/cli/latest/reference/lambda/update-event-source-mapping.html)comando seguente con un oggetto vuoto. `FilterCriteria`

```
aws lambda update-event-source-mapping \
    --uuid "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE" \
    --filter-criteria "{}"
```

Per ulteriori esempi di creazione di filtri di eventi utilizzando il AWS CLI, vedere[Utilizzo di filtri con diversi Servizi AWS](#filtering-by-service).

## Collegamento dei criteri di filtro a una mappatura dell'origine evento (AWS SAM)
<a name="filtering-sam"></a>

 Supponiamo di voler configurare un'origine di eventi in modo AWS SAM da utilizzare i seguenti criteri di filtro: 

```
{
   "Filters": [
      {
          "Pattern": "{ \"Metadata\" : [ 1, 2 ] }"
      }
   ]
}
```

 Per aggiungere questi criteri di filtro allo strumento di mappatura dell'origine degli eventi, inserisci il seguente frammento nel modello YAML delle origini eventi.

```
FilterCriteria: 
  Filters: 
    - Pattern: '{"Metadata": [1, 2]}'
```

 Per ulteriori informazioni sulla creazione e la configurazione di un AWS SAM modello per la mappatura delle sorgenti di un evento, consultate la [ EventSource](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-property-function-eventsource.html)sezione della Guida per gli AWS SAM sviluppatori. Per altri esempi di creazione di filtri di eventi utilizzando AWS SAM modelli, consulta. [Utilizzo di filtri con diversi Servizi AWS](#filtering-by-service) 

## Crittografia dei criteri di filtro
<a name="filter-criteria-encryption"></a>

Per impostazione predefinita, Lambda non crittografa l'oggetto dei criteri di filtro. Nei casi d'uso in cui è possibile includere informazioni riservate nell'oggetto dei criteri di filtro, è possibile utilizzare la propria [chiave KMS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) per crittografarlo.

Dopo aver crittografato l'oggetto dei criteri di filtro, puoi visualizzarne la versione in testo semplice utilizzando una [GetEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_GetEventSourceMapping.html)chiamata API. È necessario disporre delle autorizzazioni `kms:Decrypt` per poter visualizzare correttamente i criteri di filtro in testo non crittografato.

**Nota**  
Se l'oggetto dei criteri di filtro è crittografato, Lambda oscura il valore del `FilterCriteria` campo nella risposta alle chiamate. [ListEventSourceMappings](https://docs.aws.amazon.com/lambda/latest/api/API_ListEventSourceMappings.html) Invece, questo campo viene visualizzato come `null`. Per vedere il vero valore di`FilterCriteria`, usa l'[GetEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_GetEventSourceMapping.html)API.  
Per visualizzare il valore decrittografato di `FilterCriteria` nella console, assicurati che il tuo ruolo IAM contenga le autorizzazioni per. [GetEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_GetEventSourceMapping.html)

Puoi specificare la tua chiave KMS tramite la console, l'API, la CLI o CloudFormation.

**Per crittografare i criteri di filtro con una chiave KMS di proprietà del cliente (console)**

1. Aprire la pagina [Funzioni](https://console.aws.amazon.com/lambda/home#/functions) della console Lambda.

1. Selezionare **Add trigger** (Aggiungi trigger). Se hai già un trigger esistente, scegli la scheda **Configurazione**, quindi scegli **Trigger**. Seleziona il trigger esistente e scegli **Modifica**.

1. Seleziona la casella di controllo accanto a **Crittografa con chiave KMS gestita dal cliente**.

1. Per **Scegli una chiave di crittografia KMS gestita dal cliente**, seleziona una chiave abilitata esistente o crea una nuova chiave. A seconda dell'operazione, sono necessarie alcune o tutte le seguenti autorizzazioni: `kms:DescribeKey`, `kms:GenerateDataKey` e `kms:Decrypt`. Utilizza la policy delle chiavi KMS per concedere queste autorizzazioni.

Se utilizzi la tua chiave KMS, le seguenti operazioni API devono essere permesse nella [policy della chiave](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html):
+ `kms:Decrypt`: deve essere concesso al principale del servizio Lambda regionale (`lambda.AWS_region.amazonaws.com`). Ciò permette a Lambda per decrittografare i dati con questa chiave KMS.
  + Per evitare un [problema di confused deputy tra servizi](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html), la policy della chiave utilizza la chiave di condizione globale [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn). Il valore corretto della chiave `aws:SourceArn` è l'ARN della risorsa dello strumento di mappatura dell'origine degli eventi, quindi puoi aggiungerlo alla tua policy solo dopo averne rilevato l'ARN. Lambda inoltra inoltre le chiavi `aws:lambda:FunctionArn` e `aws:lambda:EventSourceArn` e i rispettivi valori nel [contesto di crittografia](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) quando effettua una richiesta di decrittografia a KMS. Affinché la richiesta di decrittografia abbia successo, questi valori devono corrispondere alle condizioni specificate nella policy della chiave. Non è necessario includere EventSourceArn fonti di eventi Kafka gestite in modo autonomo poiché non dispongono di un. EventSourceArn
+ `kms:Decrypt`— Deve essere concesso anche al preside che intende utilizzare la chiave per visualizzare i criteri di filtro in chiaro nelle nostre chiamate API. [GetEventSourceMapping[DeleteEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_DeleteEventSourceMapping.html)](https://docs.aws.amazon.com/lambda/latest/api/API_GetEventSourceMapping.html)
+ `kms:DescribeKey`: fornisce i dettagli della chiave gestita dal cliente per consentire al principale specificato di utilizzare la chiave.
+ `kms:GenerateDataKey`: fornisce le autorizzazioni a Lambda per generare una chiave di dati per crittografare i criteri di filtro per conto del principale specificato [(](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping)crittografia a busta).

Puoi utilizzarlo AWS CloudTrail per tenere traccia AWS KMS delle richieste che Lambda effettua per tuo conto. Per esempi di CloudTrail eventi, consulta[Monitoraggio delle chiavi di crittografia per Lambda](security-encryption-at-rest.md#encryption-key-monitoring).

Consigliamo inoltre di utilizzare la chiave di condizione [https://docs.aws.amazon.com/kms/latest/developerguide/conditions-kms.html#conditions-kms-via-service](https://docs.aws.amazon.com/kms/latest/developerguide/conditions-kms.html#conditions-kms-via-service) per limitare l'uso della chiave KMS solo alle richieste provenienti da Lambda. Il valore di questa chiave è il principale del servizio Lambda regionale (`lambda.AWS_region.amazonaws.com`). Di seguito è riportata una policy della chiave di esempio che concede tutte le autorizzazioni pertinenti:

**Example AWS KMS politica chiave**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-key-policy-1",
    "Statement": [
        {
            "Sid": "Allow Lambda to decrypt using the key",
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.us-east-1.amazonaws.com"
            },
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "*",
            "Condition": {
                "ArnEquals" : {
                    "aws:SourceArn": [
                        "arn:aws:lambda:us-east-1:123456789012:event-source-mapping:<esm_uuid>"
                    ]
                },
                "StringEquals": {
                    "kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:test-function",
                    "kms:EncryptionContext:aws:lambda:EventSourceArn": "arn:aws:sqs:us-east-1:123456789012:test-queue"
                }
            }
        },
        {
            "Sid": "Allow actions by an AWS account on the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "Allow use of the key to specific roles",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:role/ExampleRole"
            },
            "Action": [
                "kms:Decrypt",
                "kms:DescribeKey",
                "kms:GenerateDataKey"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals" : {
                    "kms:ViaService": "lambda.us-east-1.amazonaws.com"
                }
            }
        }
    ]
}
```

Per utilizzare la propria chiave KMS per crittografare i criteri di filtro, è possibile utilizzare anche il seguente [CreateEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_CreateEventSourceMapping.html) AWS CLI comando. Specifica l'ARN della chiave KMS con il flag `--kms-key-arn`.

```
aws lambda create-event-source-mapping --function-name my-function \
    --maximum-batching-window-in-seconds 60 \
    --event-source-arn arn:aws:sqs:us-east-1:123456789012:my-queue \
    --filter-criteria "{\"filters\": [{\"pattern\": \"{\"a\": [\"1\", \"2\"]}\" }]}" \
    --kms-key-arn arn:aws:kms:us-east-1:123456789012:key/055efbb4-xmpl-4336-ba9c-538c7d31f599
```

Se disponi di una mappatura della fonte degli eventi esistente, usa invece il [UpdateEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateEventSourceMapping.html) AWS CLI comando. Specifica l'ARN della chiave KMS con il flag `--kms-key-arn`.

```
aws lambda update-event-source-mapping --function-name my-function \
    --maximum-batching-window-in-seconds 60 \
    --event-source-arn arn:aws:sqs:us-east-1:123456789012:my-queue \
    --filter-criteria "{\"filters\": [{\"pattern\": \"{\"a\": [\"1\", \"2\"]}\" }]}" \
    --kms-key-arn arn:aws:kms:us-east-1:123456789012:key/055efbb4-xmpl-4336-ba9c-538c7d31f599
```

Questa operazione sovrascrive qualsiasi chiave KMS specificata in precedenza. Se specifichi il flag `--kms-key-arn` insieme a un argomento vuoto, Lambda smette di usare la chiave KMS per crittografare i criteri di filtro. Torna invece a utilizzare per impostazione predefinita una chiave di proprietà di Amazon.

Per specificare la tua chiave KMS in un CloudFormation modello, usa la `KMSKeyArn` proprietà del tipo di `AWS::Lambda::EventSourceMapping` risorsa. Ad esempio, puoi inserire il seguente frammento di codice nel modello YAML dell'origine eventi.

```
MyEventSourceMapping:
  Type: AWS::Lambda::EventSourceMapping
  Properties:
    ...
    FilterCriteria:
      Filters:
        - Pattern: '{"a": [1, 2]}'
    KMSKeyArn: "arn:aws:kms:us-east-1:123456789012:key/055efbb4-xmpl-4336-ba9c-538c7d31f599"
    ...
```

Per poter visualizzare i criteri di filtro crittografati in testo semplice in una chiamata [GetEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_GetEventSourceMapping.html)o in una chiamata [DeleteEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_DeleteEventSourceMapping.html)API, devi disporre delle autorizzazioni. `kms:Decrypt`

A partire dal 6 agosto 2024, il `FilterCriteria` campo non viene più visualizzato nei AWS CloudTrail log di e nelle chiamate [DeleteEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_DeleteEventSourceMapping.html)API se la funzione non utilizza il filtro degli eventi. [CreateEventSourceMapping[UpdateEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateEventSourceMapping.html)](https://docs.aws.amazon.com/lambda/latest/api/API_CreateEventSourceMapping.html) Se la tua funzione utilizza il filtro degli eventi, il campo `FilterCriteria` viene visualizzato come vuoto (`{}`). Puoi comunque visualizzare i criteri di filtro in testo semplice nella risposta alle chiamate [GetEventSourceMapping](https://docs.aws.amazon.com/lambda/latest/api/API_GetEventSourceMapping.html)API se disponi delle `kms:Decrypt` autorizzazioni per la chiave KMS corretta.

### Esempio di voce di registro per CloudTrail le chiamate Create/Update/DeleteEventSourceMapping
<a name="filter-criteria-encryption-cloudtrail"></a>

Nel seguente AWS CloudTrail esempio di voce di registro per una CreateEventSourceMapping chiamata, `FilterCriteria` viene visualizzata come empty (`{}`) perché la funzione utilizza il filtro degli eventi. Questo è il caso anche se l'oggetto `FilterCriteria` contiene criteri di filtro validi che la funzione utilizza attivamente. Se la funzione non utilizza il filtro degli eventi, CloudTrail non visualizzerà affatto il `FilterCriteria` campo nelle voci di registro.

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROA123456789EXAMPLE:userid1",
        "arn": "arn:aws:sts::123456789012:assumed-role/Example/example-role",
        "accountId": "123456789012",
        "accessKeyId": "ASIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROA987654321EXAMPLE",
                "arn": "arn:aws:iam::123456789012:role/User1",
                "accountId": "123456789012",
                "userName": "User1"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2024-05-09T20:35:01Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "AWS Internal"
    },
    "eventTime": "2024-05-09T21:05:41Z",
    "eventSource": "lambda.amazonaws.com",
    "eventName": "CreateEventSourceMapping20150331",
    "awsRegion": "us-east-2",
    "sourceIPAddress": "AWS Internal",
    "userAgent": "AWS Internal",
    "requestParameters": {
        "eventSourceArn": "arn:aws:sqs:us-east-2:123456789012:example-queue",
        "functionName": "example-function",
        "enabled": true,
        "batchSize": 10,
        "filterCriteria": {},
        "kMSKeyArn": "arn:aws:kms:us-east-2:123456789012:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "scalingConfig": {},
        "maximumBatchingWindowInSeconds": 0,
        "sourceAccessConfigurations": []
    },
    "responseElements": {
        "uUID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa",
        "batchSize": 10,
        "maximumBatchingWindowInSeconds": 0,
        "eventSourceArn": "arn:aws:sqs:us-east-2:123456789012:example-queue",
        "filterCriteria": {},
        "kMSKeyArn": "arn:aws:kms:us-east-2:123456789012:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "functionArn": "arn:aws:lambda:us-east-2:123456789012:function:example-function",
        "lastModified": "May 9, 2024, 9:05:41 PM",
        "state": "Creating",
        "stateTransitionReason": "USER_INITIATED",
        "functionResponseTypes": [],
        "eventSourceMappingArn": "arn:aws:lambda:us-east-2:123456789012:event-source-mapping:a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb"
    },
    "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE33333",
    "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "eventCategory": "Management",
    "sessionCredentialFromConsole": "true"
}
```

## Utilizzo di filtri con diversi Servizi AWS
<a name="filtering-by-service"></a>

Diversi tipi di origine degli eventi utilizzano valori di chiave differenti per i rispettivi campi di dati. Per filtrare le proprietà dei dati, assicurati di utilizzare la chiave corretta nel modello del filtraggio. La tabella seguente fornisce le chiavi di filtro per ogni supporto Servizio AWS.


| Servizio AWS | Chiave di filtraggio | 
| --- | --- | 
| DynamoDB | dynamodb | 
| Kinesis | data | 
| Amazon MQ | data | 
| MSK Amazon | value | 
| Apache Kafka gestito dal cliente | value | 
| Amazon SQS | body | 

Le sezioni seguenti forniscono esempi di modelli di filtraggio per diversi tipi di origini eventi. Forniscono inoltre definizioni dei formati di dati in entrata supportati e dei formati del corpo dei modelli di filtraggio per ciascun servizio supportato.
+ [Utilizzo del filtro eventi con un'origine eventi DynamoDB](with-ddb-filtering.md)
+ [Utilizzo del filtro eventi con un'origine eventi Kinesis](with-kinesis-filtering.md)
+ [Filtrare gli eventi da una origine eventi Amazon MQ](with-mq-filtering.md)
+ [Filtraggio eventi da origini eventi Amazon MSK e Apache Kafka autogestito](kafka-filtering.md)
+ [Utilizzo del filtro eventi con un'origine eventi Amazon SQS](with-sqs-filtering.md)