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 viene eseguito. 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 ulteriori 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 del processore.
Condizioni a livello di processore e di livello base
Esistono due livelli ai quali è possibile applicare una when condizione, a seconda del processore.
- A livello di processore
when(livello esterno) -
A
whensi trova 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 Condizione a livello di processore: salta l'intero processore
Il seguente
delete_entriesprocessore funziona solo quando l'ambiente è di produzione o di gestione temporanea. Se la condizione è falsa, nessuna delle chiavi viene eliminata.processor: - delete_entries: with_keys: ["password", "api_key", "ssn"] when: "environment in {'prod', 'staging'}" - Livello base
when(all'interno di ogni voce) -
A
wheninserito all'interno di una singola voce dell'entriesarray. Ogni voce viene valutata indipendentemente: se l'espressione è falsa, solo quella voce specifica viene saltata mentre le altre voci dello stesso processore continuano a essere eseguite. Solo i processori con unentriesarray supportano questo livello (ad esempioadd_entries,copy_values,rename_keys,move_keysextract_value, esubstitute_string).Esempio Condizione di livello base: 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 di 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 un determinato livello, consultate la Supporto all'elaborazione condizionale sezione seguente.
Fallback con when_else
Supportano anche i processori che supportano le condizioni entry-level. when_else Una voce con when_else funge da fallback: viene eseguita solo quando nessuna delle altre when condizioni dello stesso processore soddisfa. 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 tutte le condizioni siano state valutate come false. Non esiste un controllo di negazione esplicito: la voce viene semplicemente eseguita quando nessun'altra corrisponde. when
Esempio Voce di fallback 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 (ad esempio, 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 all'elaborazione condizionale
La tabella seguente mostra quali processori supportano l'elaborazione condizionale e a quale livello.
| Processore | Supporto condizionale | Livello |
|---|---|---|
| add_entry | 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 |
| sostituto_stringa | Sì | Processore e ingresso |
| troncare | Sì | Processore |
| valore_estrazione | Sì | Processore e ingresso |
| convert_entry_type | Sì | Processore |
| data | Sì | Processore |
| sezionare | Sì | Processore |
| lista_su_mappa | Sì | Processore |
| rename_keys | Sì | Processore e ingresso |
| select_entry | Sì | Processore |
| translate | Sì | Processore |
| gruppo | Sì | Processore |
| drop_events | Sì | Processore (richiesto) |
| OCSF, CSV, JSON, WAF, Postgres KeyValue, VPC, Route 53 CloudFront | No | — |
Operatori
| 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'iscrizione | 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 un array 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 dell'espressione è di 256 caratteri.
-
I processori parser (eccetto Grok) non supportano l'elaborazione condizionale. Ciò include i parser JSON, CSV, WAF KeyValue, Postgres, VPC CloudFront, Route53 e OCSF.
-
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.