View a markdown version of this page

Risoluzione dei EventBridge problemi di Amazon Scheduler - EventBridge Pianificatore

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

Risoluzione dei EventBridge problemi di Amazon Scheduler

Puoi utilizzare gli argomenti di questa sezione per risolvere i problemi più comuni di Amazon EventBridge Scheduler.

La mia pianificazione fallisce a causa di errori di destinazione

Gli errori di richiamo di Target sono uno dei problemi più comuni con Scheduler. EventBridge Questi errori possono verificarsi per diversi motivi:

Cause comuni:

  • Parametri target mancanti o errati.

  • Problemi di connettività di rete.

  • Limitazione delle API.

  • Configurazione errata del target.

Fasi per la risoluzione dei problemi

  1. Configurare una Dead-Letter coda (DLQ)

    • Un DLQ consente di acquisire e analizzare le chiamate non riuscite.

    • Le chiamate non riuscite vengono inviate al DLQ con messaggi di errore dettagliati.

    • Per configurare un DLQ, aggiungetelo alla configurazione della pianificazione:

    { "DeadLetterConfig": { "Arn": "arn:aws:sqs:region:account-id:MyDLQ" } }

    Nota: se il tuo DLQ è crittografato con una chiave KMS, assicurati che la politica delle chiavi consenta a EventBridge Scheduler di utilizzarlo:

    { "Sid": "Allow EventBridge Scheduler to use the key", "Effect": "Allow", "Principal": { "Service": "scheduler.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }
  2. Verifica i parametri dell'API

    • Assicurati che tutti i parametri richiesti per le chiamate API di destinazione siano presenti e formattati correttamente.

    • Verifica che i valori dei parametri rientrino negli intervalli consentiti.

    • Verifica che l'endpoint API sia accessibile dal tuo VPC se utilizzi endpoint VPC.

  3. Rivedi la configurazione della rete

    { "RetryPolicy": { "MaximumRetryAttempts": 3, "MaximumEventAgeInSeconds": 3600 } }
  4. Controlla le configurazioni specifiche della destinazione

    • Per le destinazioni basate su modelli (come le attività ECS), assicurati di fornire le sostituzioni tramite il parametro dell'API di creazione della Target.Input pianificazione.

    • Verifica che il servizio di destinazione sia supportato e configurato correttamente.

Pianifica i problemi relativi alle autorizzazioni dei ruoli di esecuzione

I problemi relativi alle autorizzazioni dei ruoli IAM sono una causa comune degli errori di esecuzione della pianificazione. Ecco come risolvere e risolvere questi problemi:

Cause comuni

  • Mancano le autorizzazioni richieste per il servizio di destinazione

  • Configurazione errata del ruolo nella pianificazione

  • Rapporto di fiducia mancante con il servizio EventBridge Scheduler

  • Autorizzazioni insufficienti per l'accesso alle risorse crittografate

Caratteristiche

  • Incremento della TargetErrorCount metrica in CloudWatch

  • Le pianificazioni non vengono eseguite senza problemi evidenti nella configurazione della pianificazione

Fasi per la risoluzione dei problemi

  1. Monitora le CloudWatch metriche

    • Registra la TargetErrorCount metrica. CloudWatch

  2. Usa Dead-Letter Queue (DLQ) per confermare i problemi di autorizzazione

    • Configura un DLQ per la tua pianificazione.

    • Se ci sono problemi di autorizzazione con il tuo target e il DLQ è configurato correttamente, vedrai le chiamate non riuscite nel DLQ con messaggi di errore relativi alle autorizzazioni.

    • Se il DLQ rimane vuoto nonostante le esecuzioni non riuscite siano visualizzate nelle CloudWatch metriche, è probabile che si tratti di un problema di autorizzazioni che impedisce a Scheduler di scrivere sul DLQ stesso. EventBridge

    Nota

    Verificate che il DLQ stesso disponga delle autorizzazioni corrette. Se è crittografato, assicurati che EventBridge Scheduler disponga dell'autorizzazione per utilizzare la chiave KMS.

  3. Verifica la relazione di fiducia

    • Assicurati che il tuo ruolo IAM abbia la corretta relazione di fiducia con EventBridge Scheduler:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "scheduler.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
  4. Controlla le autorizzazioni del ruolo di esecuzione della pianificazione

    • Il ruolo di esecuzione della pianificazione richiede autorizzazioni specifiche per richiamare diversi tipi di destinazione.

    • Esempi di autorizzazioni da includere nella politica del ruolo di esecuzione della pianificazione:

    // For Lambda function targets - add to schedule execution role { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name" }] } // For SQS queue targets - add to schedule execution role { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "sqs:SendMessage" ], "Resource": "arn:aws:sqs:region:account-id:queue-name" }] }
  5. Verifica l'accesso crittografato alle risorse

    • Se il tuo target utilizza risorse crittografate (ad esempio, code KMS-encrypted SQS), assicurati che il tuo ruolo disponga delle autorizzazioni per utilizzare la chiave KMS:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:region:account-id:key/key-id" } ] }
  6. Verifica la configurazione ARN del ruolo

    • Assicurati che il ruolo ARN nella configurazione della pianificazione sia corretto.

    • Verifica che il ruolo esista nella stessa Account AWS area geografica della tua pianificazione.

Comprensione e gestione delle quote di servizio

Se riscontri problemi nella creazione di pianificazioni o nella visualizzazione di chiamate limitate, potresti raggiungere i limiti delle quote di servizio. EventBridge Scheduler ha delle quote per il numero di pianificazioni, i gruppi di orari e le tariffe di chiamata, che possono variare in base all'area geografica.

Identificazione dei problemi relativi alle quote

Per determinare se stai raggiungendo i limiti delle quote:

  1. Monitora le metriche CloudWatch

    • Controlla la InvocationThrottleCount metrica. Un aumento di questa metrica indica che stai superando il limite di frequenza delle chiamate.

    • Rivedi la InvocationAttemptCount metrica per comprendere il tuo utilizzo attuale.

  2. Controlla i messaggi di errore specifici

    • Quando crei o modifichi le pianificazioni, a LimitExceededException indica che hai raggiunto il numero massimo di pianificazioni o gruppi di orari.

    • Le chiamate API che restituiscono errori di limitazione indicano che stai superando la quota di richieste API.

Risoluzione dei problemi relativi alle quote

Se stabilisci che stai raggiungendo i limiti delle quote:

  1. Rivedi e ottimizza i tuoi programmi attuali. Prendi in considerazione la possibilità di consolidare pianificazioni simili o di rimuovere quelle inutilizzate.

  2. Per la limitazione delle API, implementa retry with backoff nelle tue chiamate API.

  3. Se hai bisogno di quote più elevate, richiedi un aumento tramite la console Service Quotas. Seleziona EventBridge Scheduler, scegli la quota da aumentare e invia una richiesta con la motivazione aziendale.

Problemi relativi allo schema di pianificazione e ai tempi di attivazione

A volte gli utenti riscontrano problemi in cui le pianificazioni non si attivano negli orari previsti. Ciò può essere dovuto più comunemente a malintesi sugli schemi di pianificazione, alle modifiche all'ora legale o alle finestre temporali flessibili.

Cause comuni

  • Interpretazione errata delle espressioni cron.

  • Comportamento imprevisto durante le modifiche all'ora legale.

  • Confusione sulle finestre temporali flessibili.

  • Incomprensione delle espressioni tariffarie.

Fasi per la risoluzione dei problemi

  1. Verifica le espressioni cron

    • Assicurati che la tua espressione cron sia formattata correttamente.

    • Nota che non puoi specificare contemporaneamente i campi relativi al giorno del mese e al giorno della settimana in un'espressione cron.

  2. Considerazioni sul fuso orario

    • Seleziona il tuo fuso orario preferito durante la creazione della pianificazione.

    • Scopri in che modo l'ora legale influisce sulla tua pianificazione poiché questa modifica si basa sull'UTC.

    Esempio di impatto dell'ora legale: se configuri un orario in modo che venga eseguito alle 7:00 GMT:

    • Durante l'inverno: l'orario parte alle 7:00 GMT (come GMT = UTC)

    • Durante l'estate: l'orario è ancora valido alle 7:00 UTC, che ora sono le 6:00 GMT/BST

    Se hai bisogno che il programma venga eseguito alla stessa ora locale tutto l'anno, assicurati di selezionare il fuso orario appropriato al momento della creazione del programma e in che modo l'ora legale può influire su quel fuso orario.

  3. Comprendi le finestre orarie flessibili

    • Le finestre temporali flessibili consentono a EventBridge Scheduler di ottimizzare le chiamate.

    • La pianificazione potrebbe non attivarsi esattamente all'inizio della finestra.

    • Monitora i tempi di chiamata effettivi per comprendere il comportamento.

  4. Frequenza di revisione e espressioni cron

    • Assicurati che le espressioni di frequenza siano formattate correttamente (ad es.rate(5 minutes),rate(1 hour)).

    • Sia per le espressioni rate che per quelle cron, tieni presente che le chiamate di pianificazione non sono limitate allo 0° secondo di minuto.

    • Le pianificazioni possono essere attivate entro il minuto specificato, ma non necessariamente all'inizio esatto del minuto.

    Ad esempio:

    • Un programma con rate(1 hour) potrebbe essere eseguito alle 14:00:45, 15:00:32, 16:18, ecc.

    • Una pianificazione cron impostata per 0 * * * ? * (ogni ora) potrebbe essere eseguita alle 14:00:15, 15:00:07, 16:00:52 PM, ecc.

  5. Monitora le metriche CloudWatch

    • Usa la InvocationAttemptCount metrica per verificare se la tua pianificazione si sta attivando.

    • Controlla TargetErrorCount se le chiamate non vanno a buon fine.

    • Se hai configurato una Dead-Letter coda, monitora InvocationsSentToDeadLetterCount per tenere traccia delle chiamate non riuscite.

Creazione di schemi di pianificazione ed espressioni cron

Gli utenti incontrano spesso problemi durante la creazione di schemi di pianificazione, in particolare con le espressioni cron. Ecco alcuni problemi comuni e come risolverli:

Problemi comuni

  • Sintassi cron errata

  • Tentativo di utilizzare funzionalità cron non supportate

  • Confusione su quali campi possono essere usati insieme

Fasi per la risoluzione dei problemi

  1. Rivedi la sintassi delle espressioni cron

    • Assicurati che la tua espressione cron segua il formato corretto:. Minutes Hours Day-of-month Month Day-of-week Year

    • Ricorda che EventBridge Scheduler utilizza lo standard cron con un campo Year aggiuntivo.

  2. Comprendi le limitazioni

  3. Usa la funzione di anteprima della pianificazione

    • Quando si crea o si modifica una EventBridge pianificazione, Scheduler fornisce un'anteprima delle successive 10 volte di esecuzione.

    • Usa questa anteprima per verificare che la pianificazione venga eseguita negli orari previsti.

    • Se l'anteprima non corrisponde alle tue aspettative, rivedi e modifica la cron expression.

Il mio obiettivo viene attivato?

Per confermare se il tuo obiettivo viene attivato:

  1. Controlla le CloudWatch metriche:

    • InvocationAttemptCountmostra il numero di tentativi di richiamo

    • TargetErrorCountindica se alcune chiamate non sono riuscite

    • TargetErrorThrottledCountmostra se il tuo obiettivo viene limitato

    • InvocationDroppedCountindica se qualche chiamata è stata interrotta

  2. Configura una Dead-Letter coda (DLQ) per acquisire e analizzare eventuali invocazioni non riuscite.

Obiettivi basati su modelli e universali

Se ricevi un errore del tipo «Richiesta non valida fornita: [servizio] non è un servizio supportato per una destinazione», potresti provare a utilizzare un servizio non supportato come destinazione basata su modello.

Per risolvere questo problema:

  1. Verifica se il servizio desiderato è supportato come destinazione basata su modelli.

  2. Se non è supportato, utilizza invece un target universale e configuralo per effettuare la chiamata API appropriata al tuo servizio.

Configurazioni di input del target universale non valide

Quando si crea una pianificazione con un obiettivo universale, EventBridge Scheduler convalida il formato ARN di destinazione ma non convalida il contenuto del Input campo rispetto all'API del servizio downstream. Ciò significa che una pianificazione può essere creata correttamente anche se Input contiene valori che il servizio di destinazione rifiuterà al momento della chiamata.

Le pianificazioni con configurazioni di input di destinazione non valide vengono attivate sull'espressione configurata ma hanno esito negativo a ogni chiamata. Non è possibile scoprire l'errata configurazione finché non viene richiamata la pianificazione, che potrebbe avvenire ore o giorni dopo la creazione.

Caratteristiche

  • La pianificazione è stata creata senza errori, ma la TargetErrorCount CloudWatch metrica aumenta a ogni chiamata.

  • I messaggi DLQ contengono codici di errore del servizio di destinazione (ad esempio, InvalidParameterValueException orValidationException), non. AWS.Scheduler.InternalServerError

  • Il messaggio ERROR_MESSAGE nel DLQ fa riferimento a errori di convalida dei parametri di input specifici.

Esempi

Gli esempi seguenti mostrano le configurazioni di input non valide comuni per un AWS Lambda target universale (). arn:aws:scheduler:::aws-sdk:lambda:invoke

Qualificatori non corrispondenti

Una pianificazione con il seguente input specifica la versione nel campo FunctionName e la versione 2 nel campo: 1 Qualifier

{ "FunctionName": "MyFunction:2", "Qualifier": "1" }

Questa pianificazione viene creata correttamente, ma ogni chiamata ha esito negativo. Il messaggio DLQ contiene:

  • ERROR_CODE: InvalidParameterValueException

  • ERROR_MESSAGE: The derived qualifier from the function name does not match the specified qualifier.

Nome della funzione non valido

Una pianificazione con il seguente input specifica un valore di soli spazi bianchi per: FunctionName

{ "FunctionName": " " }

Il messaggio DLQ contiene:

  • ERROR_CODE: ValidationException

  • ERROR_MESSAGE: un errore di convalida che indica che il nome della funzione non corrisponde al modello richiesto.

Come risolvere

  1. Configurare un DLQ. Configura sempre una coda di lettere morte per le pianificazioni che utilizzano obiettivi universali. Gli attributi del messaggio DLQ (ERROR_CODEeERROR_MESSAGE) contengono l'errore specifico restituito dal servizio di destinazione, che identifica il parametro di input non valido.

  2. Convalida i parametri di input rispetto all'API del servizio di destinazione. Prima di creare una pianificazione, verifica che il JSON nel tuo Input campo contenga valori validi chiamando direttamente l'API di destinazione. Ad esempio, richiama la tua AWS Lambda funzione con gli stessi parametri utilizzando l' AWS Lambda InvokeAPI per confermare che la richiesta ha esito positivo.

  3. Esegui il test con una pianificazione una tantum. Crea una pianificazione una tantum per verificare che l'invocazione di destinazione abbia esito positivo prima di configurare una pianificazione ricorrente.

  4. Esamina il riferimento all'API del servizio di destinazione. Controlla il riferimento API per il servizio a cui ti rivolgi per confermare i parametri richiesti, gli intervalli di valori validi e i vincoli. Per AWS Lambda Invoke, consulta Invoke nella Guida per gli AWS Lambda sviluppatori.

Pianifica gli aggiornamenti che attivano invocazioni impreviste

Quando si apporta una modifica a una pianificazione, le chiamate potrebbero non riflettere immediatamente la pianificazione aggiornata. È necessario un breve periodo di tempo affinché vengano applicate le modifiche. Ad esempio, se si aggiorna una pianificazione in prossimità dell'ora di attivazione originale, è possibile che venga visualizzata una chiamata basata sulla configurazione originale della pianificazione.

Disabilitare o abilitare le pianificazioni una tantum

Quando si riattiva una pianificazione una tantum dopo che è trascorsa l'ora pianificata originale, la pianificazione può richiamare immediatamente la destinazione desiderata. Ciò può verificarsi anche se la pianificazione è stata disattivata prima dell'orario di esecuzione originale.

Ad esempio:

  • Ora corrente: 13:15 UTC

  • One-time orario creato per: 13:30 UTC

  • Orario disabilitato prima delle 13:30 UTC

  • Pianificazione riattivata alle 14:00 UTC

  • Risultato: il target può essere richiamato immediatamente dopo la riattivazione