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à.
Sintassi delle espressioni per l'elaborazione condizionale
CloudWatch i processori di pipeline che supportano l'elaborazione condizionale accettano un parametro contenente un'whenespressione. Quando l'espressione restituisce true, il processore o la voce vengono eseguiti. Le espressioni utilizzano la notazione a punti (.) per l'accesso ai campi annidati. Ad esempio, user.role accede al role campo all'interno dell'oggetto. user Per maggiori dettagli sui processori che supportano l'elaborazione condizionale e i relativi parametri specifici, vedere. CloudWatch processori di pipeline Per esempi di configurazione, vedereCasi d'uso comuni dei processori.
Nota
L'elaborazione condizionale si applica solo alle pipeline di log. Le pipeline delle metriche non supportano il parametro. when
Processor-level e condizioni di livello base
Esistono due livelli ai quali è possibile applicare una when condizione, a seconda del processore.
- Processor-level
when(livello esterno) -
A
whencollocato al livello più alto della configurazione del processore. Se l'espressione restituisce false, l'intero processore viene ignorato e non viene eseguita alcuna operazione al suo interno. Tutti i processori che supportano l'elaborazione condizionale supportano questo livello.Esempio Processor-level condizione: salta l'intero processore
Il
delete_entriesprocessore seguente funziona solo quando l'ambiente è di produzione o di staging. Se la condizione è falsa, nessuna chiave viene eliminata.processor: - delete_entries: with_keys: ["password", "api_key", "ssn"] when: "environment in {'prod', 'staging'}" - Entry-level
when(all'interno di ogni voce) -
Un
wheninserito all'interno di una singola voce dell'entriesarray. Ogni voce viene valutata in modo indipendente: se l'espressione è falsa, viene saltata solo quella voce specifica mentre le altre voci nello stesso processore sono ancora in esecuzione. Solo i processori con unentriesarray supportano questo livello (ad esempioadd_entriescopy_values,,rename_keys,move_keysextract_value, esubstitute_string).Esempio Entry-level condizione: salta le singole voci
Il seguente
add_entriesprocessore aggiunge chiavi diverse a seconda della condizione di ciascuna voce. La prima voce viene aggiunta soloseverityquando il livello di registro è ERROR. La seconda voce viene sempre aggiuntaprocessedperché non presenta alcuna condizione.processor: - add_entries: entries: - key: "severity" value: "high" when: "log.level == 'ERROR'" - key: "processed" value: "true"
I processori che supportano entrambi i livelli possono utilizzarli insieme. Quando vengono specificati entrambi, la condizione a livello di processore viene valutata per prima. Se è falsa, l'intero processore viene ignorato e non viene valutata alcuna condizione di livello base.
Esempio Entrambi i livelli combinati
Il livello del processore when garantisce che l'intero processore funzioni solo per il traffico di produzione. All'interno di ciò, ogni voce ha una propria condizione per controllare quale chiave viene aggiunta.
processor: - add_entries: when: "environment == 'prod'" entries: - key: "alert_level" value: "critical" when: "log.level == 'ERROR'" - key: "alert_level" value: "warning" when: "log.level == 'WARN'"
Per una tabella che mostra quali processori supportano determinati livelli, consulta la Supporto per l'elaborazione condizionale sezione seguente.
Fallback con when_else
Supportano anche i processori che supportano condizioni entry-level. when_else Una voce con when_else funge da fallback: viene eseguita solo quando nessuna delle altre when condizioni nello stesso processore corrisponde. Il valore dell'espressione fornito when_else identifica l'insieme di when condizioni da considerare, ma la voce stessa viene eseguita esclusivamente in base al fatto che tali condizioni siano tutte valutate come false. Non è previsto un controllo esplicito della negazione: la voce viene semplicemente eseguita quando nessun'altra corrisponde. when
Esempio Inserimento alternativo con when_else
La prima voce viene eseguita quando il livello di registro è ERROR. La seconda voce viene utilizzata when_else ed eseguita solo quando la when condizione della prima voce non corrisponde (ovvero, il livello di registro è diverso da ERROR).
processor: - add_entries: entries: - key: "alert_level" value: "critical" when: "log.level == 'ERROR'" - key: "alert_level" value: "info" when_else: "log.level == 'ERROR'"
Supporto per l'elaborazione condizionale
La tabella seguente mostra quali processori supportano l'elaborazione condizionale e a quale livello.
| Processore | Supporto condizionale | Livello |
|---|---|---|
| add_entries | Sì | Processore e ingresso |
| copy_values | Sì | Processore e ingresso |
| delete_entries | Sì | Processore |
| move_keys | Sì | Processore e ingresso |
| flatten | Sì | Processore |
| lowercase_string | Sì | Processore |
| stringa_maiuscola | Sì | Processore |
| trim_string | Sì | Processore |
| stringa_sostitutiva | Sì | Processore e ingresso |
| troncare | Sì | Processore |
| valore_estrazione | Sì | Processore e ingresso |
| convert_entry_type | Sì | Processore |
| data | Sì | Processore |
| sezionare | Sì | Processore |
| elenca_per_mappa | Sì | Processore |
| rename_keys | Sì | Processore e ingresso |
| select_entries | Sì | Processore |
| translate | Sì | Processore |
| grok | Sì | Processore |
| drop_events | Sì | Processore (richiesto) |
| OCSF, CSV, JSON, WAF, Postgres KeyValue, VPC, Route 53 CloudFront | No | — |
Operatori
La tabella seguente elenca gli operatori supportati.
| Categoria | Operatori | Esempio |
|---|---|---|
| Relazionale | <, <=, >,
>= |
status_code >= 200 and status_code < 300 |
| Parità | ==, != |
log.level == "ERROR" |
| Condizionale | and, or, not |
log.level == "ERROR" or log.level == "FATAL" |
| Aritmetica | +, -, *,
/ |
response_time * 1000 > 5000 |
| Imposta l'appartenenza | in, not in |
environment in {"prod", "staging", "preprod"} |
| Corrispondenza Regex | =~, !~ |
message =~ "^ERROR.*timeout" |
Funzioni
length(value)-
Restituisce la lunghezza di una stringa o di un array. Ad esempio:
length(message) > 100 contains(value, search)-
Verifica se una stringa contiene una sottostringa o una matrice contiene un elemento. Ad esempio:
contains(message, "error") startsWith(field, prefix)-
Verifica se una stringa inizia con un prefisso specificato. Ad esempio:
startsWith(message, "ERROR")
Esempi di espressioni
log.level == "ERROR" status_code >= 200 and status_code < 300 environment in {"prod", "staging", "preprod"} message =~ "^ERROR.*timeout" user.role == "admin" and user.permissions.write == true length(message) > 100 and contains(message, "error") (log.level == "ERROR" or log.level == "FATAL") and environment == "prod"
Limitazioni
-
La lunghezza massima delle espressioni è di 256 caratteri.
-
I processori parser (eccetto Grok) non supportano l'elaborazione condizionale. Sono inclusi i parser JSON, CSV, WAF KeyValue, Postgres, VPC, Route53 e OCSF. CloudFront
-
Se il processore Grok viene utilizzato come parser (primo processore) in una pipeline e la sua
whencondizione risulta falsa, l'intera pipeline non viene eseguita per quell'evento di registro.