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 problemi con Amazon EventBridge
Puoi utilizzare gli argomenti di questa sezione per risolvere i problemi di Amazon EventBridge .
Argomenti
- La mia regola è stata eseguita ma la funzione Lambda non è stata richiamata
- Ho appena creato o modificato una regola ma non corrisponde a un evento di test
- La mia regola non è stata eseguita quando ho specificato ScheduleExpression
- La mia regola non è stata eseguita all'orario previsto
- La mia regola corrisponde API alle chiamate di servizio AWS globali, ma non è stata eseguita
- Il IAM ruolo associato alla mia regola viene ignorato quando viene eseguita la regola
- La mia regola ha un modello di eventi che dovrebbe corrispondere a una risorsa, ma nessun evento corrisponde
- Si è verificato un ritardo nella distribuzione del mio evento alla destinazione
- Alcuni eventi non sono mai stati distribuiti nel target
- La mia regola è stata eseguita più di una volta in risposta a un evento
- Come evitare loop infiniti
- I miei eventi non vengono consegnati alla SQS coda Amazon di destinazione
- La mia regola viene eseguita, ma non vedo alcun messaggio pubblicato nel mio SNS argomento Amazon
- Il mio SNS argomento Amazon dispone ancora delle autorizzazioni EventBridge anche dopo aver eliminato la regola associata all'argomento Amazon SNS
- Con quali chiavi di IAM condizione posso usare EventBridge?
- Come posso sapere quando EventBridge le regole vengono violate?
La mia regola è stata eseguita ma la funzione Lambda non è stata richiamata
Uno dei motivi per cui la funzione Lambda potrebbe non funzionare è che forse non disponi delle autorizzazioni appropriate.
Per verificare le autorizzazioni per la funzione Lambda
-
Utilizzando AWS CLI, esegui il comando seguente con la tua funzione e la tua AWS regione:
aws lambda get-policy --function-name
MyFunction
--regionus-east-1
Vedrai il seguente output.
{ "Policy": "{\"Version\":\"2012-10-17\", \"Statement\":[ {\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:events:us-east-1:123456789012:rule/MyRule\"}}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-east-1:123456789012:function:MyFunction\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Sid\":\"MyId\"} ], \"Id\":\"default\"}" }
-
Se viene visualizzato il messaggio seguente.
A client error (ResourceNotFoundException) occurred when calling the GetPolicy operation: The resource you requested does not exist.
Oppure, se viene visualizzato l'output ma non riesci a individuare events.amazonaws.com come entità attendibile nella policy, esegui il comando seguente:
aws lambda add-permission \ --function-name
MyFunction
\ --statement-idMyId
\ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012
:rule/MyRule
-
Se l'output contiene un campo
SourceAccount
, devi rimuoverlo. Un'SourceAccount
impostazione EventBridge impedisce di poter richiamare la funzione.
Nota
Se il criterio non è corretto, puoi modificare la regola nella EventBridge console rimuovendola e quindi aggiungendola nuovamente alla regola. La EventBridge console imposta quindi le autorizzazioni corrette sulla destinazione.
Se utilizzi un alias o una versione specifico di Lambda, aggiungi il parametro --qualifier
nei comandi aws lambda get-policy
e aws lambda add-permission
, come mostrato nel comando seguente:
aws lambda add-permission \ --function-name
MyFunction
\ --statement-idMyId
\ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012
:rule/MyRule
--qualifieralias or version
Ho appena creato o modificato una regola ma non corrisponde a un evento di test
Quando apporti una modifica a una regola o alle relative destinazioni, gli eventi in entrata potrebbero non avviare o interrompere immediatamente la corrispondenza con regole nuove o aggiornate. È necessario un breve periodo di tempo affinché vengano applicate le modifiche.
Se gli eventi continuano a non corrispondere dopo un breve periodo di tempo, controlla le CloudWatch metriche TriggeredRules
e verifica FailedInvocations
la tua regola. Invocations
Per ulteriori informazioni su questi parametri, consulta Monitoring Amazon EventBridge.
Se la regola è destinata a corrispondere a un evento di un AWS servizio, esegui una delle seguenti operazioni:
Usa l'azione
TestEventPattern
per verificare che il modello di eventi della tua regola corrisponda a un evento di test. Per ulteriori informazioni, TestEventPatternconsulta Amazon EventBridge API Reference.Usa la Sandbox sulla EventBridge console
.
La mia regola non è stata eseguita quando ho specificato ScheduleExpression
Assicurati di aver impostato la pianificazione per la regola nel fuso orario UTC +0. Se ScheduleExpression
è corretta, segui la procedura descritta in Ho appena creato o modificato una regola ma non corrisponde a un evento di test.
La mia regola non è stata eseguita all'orario previsto
EventBridge esegue le regole entro un minuto dall'ora di inizio impostata. Il conteggio dell'orario di esecuzione viene avviato al momento della creazione della regola.
Nota
Il tipo di distribuzione delle regole pianificate è guaranteed
il che significa che gli eventi verranno attivati almeno una volta per ogni orario previsto.
Puoi utilizzare un'espressione Cron per richiamare le destinazioni a un orario specificato. Per creare una regola che viene eseguita ogni quattro ore al minuto 0, esegui una delle seguenti operazioni:
-
Nella EventBridge console, si utilizza l'espressione
0 0/4 * * ? *
cron. -
Usando AWS CLI, si usa l'espressione
cron(0 0/4 * * ? *)
.
Ad esempio, per creare una regola denominata TestRule
che viene eseguita ogni 4 ore utilizzando il AWS CLI, si utilizza il comando seguente.
aws events put-rule --name
TestRule
--schedule-expression 'cron(0 0/4 * * ? *)'
Per eseguire una regola ogni cinque minuti, utilizzi la seguente espressione Cron.
aws events put-rule --name
TestRule
--schedule-expression 'cron(0/5 * * * ? *)'
La risoluzione massima per una EventBridge regola che utilizza un'espressione cron è un minuto. La regola pianificata viene attivata entro tale minuto, ma non al secondo 0 preciso.
Poiché EventBridge tutti i servizi di destinazione sono distribuiti, può verificarsi un ritardo di diversi secondi tra l'esecuzione della regola pianificata e il momento in cui il servizio di destinazione esegue l'azione sulla risorsa di destinazione.
La mia regola corrisponde API alle chiamate di servizio AWS globali, ma non è stata eseguita
AWS servizi globali; ad esempio Amazon Route 53 sono disponibili solo nella regione Stati Uniti orientali (Virginia settentrionale), quindi gli eventi derivanti dalle AWS API chiamate provenienti dai servizi globali sono disponibili solo in quella regione. IAM Per ulteriori informazioni, consulta Eventi AWS relativi ai servizi in Amazon EventBridge.
Il IAM ruolo associato alla mia regola viene ignorato quando viene eseguita la regola
EventBridge utilizza solo i IAM ruoli per le regole che inviano eventi ai flussi Kinesis. Per le regole che richiamano funzioni Lambda o argomenti SNS Amazon, devi fornire autorizzazioni basate sulle risorse.
Assicurati che gli AWS STS endpoint regionali siano abilitati, in modo che EventBridge possano utilizzarli quando assumeranno il ruolo che hai fornito. IAM Per ulteriori informazioni, consulta Attivazione e disattivazione AWS STS in una AWS regione nella Guida per l'utente. IAM
La mia regola ha un modello di eventi che dovrebbe corrispondere a una risorsa, ma nessun evento corrisponde
La maggior parte dei servizi utilizza i due punti (:) o la barra (/) come lo stesso carattere in Amazon Resource Names (ARNs)., ma EventBridge utilizza una corrispondenza esatta nei modelli e nelle regole degli eventi. AWS Assicurati di utilizzare ARN i caratteri corretti durante la creazione dei pattern di eventi in modo che corrispondano alla ARN sintassi dell'evento da abbinare.
Alcuni eventi, come gli eventi di AWS API chiamata da CloudTrail, non hanno nulla nel campo delle risorse.
Si è verificato un ritardo nella distribuzione del mio evento alla destinazione
EventBridge tenta di inviare un evento a un obiettivo per un massimo di 24 ore, tranne negli scenari in cui la risorsa di destinazione è limitata. Il primo tentativo viene effettuato appena l'evento giunge nel flusso di eventi. Se il servizio di destinazione presenta problemi, riprogramma EventBridge automaticamente un'altra consegna. Se sono trascorse 24 ore dall'arrivo dell'evento, EventBridge interrompe il tentativo di consegna dell'evento e pubblica la metrica. FailedInvocations
CloudWatch Ti consigliamo di impostare un file DLQ per archiviare gli eventi che non è stato possibile consegnare correttamente a una destinazione. Per ulteriori informazioni, consulta Utilizzo di code di lettere morte per elaborare eventi non consegnati in EventBridge
Alcuni eventi non sono mai stati distribuiti nel target
Se l'obiettivo di una EventBridge regola è limitato per un periodo di tempo prolungato, EventBridge potrebbe non essere possibile ritentare la consegna. Ad esempio, se la destinazione non è predisposta per gestire il traffico degli eventi in entrata e il servizio di destinazione limita le richieste effettuate per tuo conto, potresti non EventBridge ritentare la consegna. EventBridge
La mia regola è stata eseguita più di una volta in risposta a un evento
In rari casi, la stessa regola può essere eseguita più di una volta per un unico evento o un orario pianificato, oppure la stessa destinazione può essere richiamata più di una volta per una determinata regola attivata.
Come evitare loop infiniti
In EventBridge, è possibile creare una regola che porti a cicli infiniti, in cui la regola viene eseguita ripetutamente. Se hai una regola che causa un loop infinito, riscrivila in modo che le azioni intraprese dalla regola non corrispondano alla stessa regola.
Ad esempio, una regola che ACLs rileva le modifiche in un bucket Amazon S3 e quindi esegue il software per modificarle in un nuovo stato causa un ciclo infinito. Un modo per risolverlo consiste nel riscrivere la regola in modo ACLs che corrisponda solo a quelle in cattivo stato.
Un loop infinito può generare rapidamente costi più alti di quelli previsti. Ti consigliamo di utilizzare il budgeting, che avvisa quando i costi superano il limite indicato. Per ulteriori informazioni, consulta Gestione dei costi con i budget.
I miei eventi non vengono consegnati alla SQS coda Amazon di destinazione
Se la tua SQS coda Amazon è crittografata, devi creare una KMS chiave gestita dal cliente e includere la seguente sezione di autorizzazione nella tua KMS politica delle chiavi. Per ulteriori informazioni, consulta Configurazione delle autorizzazioni. AWS KMS
{ "Sid": "Allow EventBridge to use the key", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }
La mia regola viene eseguita, ma non vedo alcun messaggio pubblicato nel mio SNS argomento Amazon
Scenario 1
È necessaria l'autorizzazione per la pubblicazione dei messaggi nel tuo SNS argomento Amazon. Usa il seguente comando usando AWS CLI, sostituendo us-east-1 con la tua regione e usando il tuo argomento. ARN
aws sns get-topic-attributes --region
us-east-1
--topic-arn "arn:aws:sns:us-east-1
:123456789012
:MyTopic"
Per disporre dell'autorizzazione corretta, gli attributi della policy devono essere simili a quanto segue.
"{\"Version\":\"2012-10-17\", \"Id\":\"__default_policy_ID\", \"Statement\":[{\"Sid\":\"__default_statement_ID\", \"Effect\":\"Allow\", \"Principal\":{\"AWS\":\"*\"}, \"Action\":[\"SNS:Subscribe\", \"SNS:ListSubscriptionsByTopic\", \"SNS:DeleteTopic\", \"SNS:GetTopicAttributes\", \"SNS:Publish\", \"SNS:RemovePermission\", \"SNS:AddPermission\", \"SNS:SetTopicAttributes\"], \"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\", \"Condition\":{\"StringEquals\":{\"AWS:SourceOwner\":\"123456789012\"}}},{\"Sid\":\"Allow_Publish_Events\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Action\":\"sns:Publish\", \"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\"}]}"
Se non vedi events.amazonaws.com
con l'autorizzazione Publish
nella tua policy, copia prima la policy corrente e aggiungi la seguente istruzione all'elenco delle istruzioni.
{\"Sid\":\"Allow_Publish_Events\", \"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Action\":\"sns:Publish\", \"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\"}
Quindi imposta gli attributi dell'argomento utilizzando il comando AWS CLI, usa il seguente comando.
aws sns set-topic-attributes --region
us-east-1
--topic-arn "arn:aws:sns:us-east-1:123456789012
:MyTopic" --attribute-name Policy --attribute-valueNEW_POLICY_STRING
Nota
Se il criterio non è corretto, puoi anche modificare la regola nella EventBridge console rimuovendola e quindi aggiungendola nuovamente alla regola. EventBridge imposta le autorizzazioni corrette sulla destinazione.
Scenario 2
Se il tuo SNS argomento è crittografato, devi includere la sezione seguente nella tua politica KMS chiave.
{ "Sid": "Allow EventBridge to use the key", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }
Il mio SNS argomento Amazon dispone ancora delle autorizzazioni EventBridge anche dopo aver eliminato la regola associata all'argomento Amazon SNS
Quando crei una regola con Amazon SNS come destinazione, EventBridge aggiunge l'autorizzazione al tuo SNS argomento Amazon per tuo conto. Se elimini la regola poco dopo averla creata, EventBridge potresti non rimuovere l'autorizzazione dal tuo SNS argomento Amazon. In questo caso, puoi rimuovere l'autorizzazione dall'argomento utilizzando il comando aws sns set-topic-attributes
. Per ulteriori informazioni sulle autorizzazioni basate su risorse per l'invio di eventi, consulta Utilizzo di politiche basate sulle risorse per Amazon EventBridge.
Con quali chiavi di IAM condizione posso usare EventBridge?
EventBridge supporta le chiavi di condizione AWS-wide (vedi IAMe AWS STS condition context keys nella Guida per l'IAMutente), più le chiavi elencate inUtilizzo IAM delle condizioni di polizza in Amazon EventBridge.
Come posso sapere quando EventBridge le regole vengono violate?
Puoi utilizzare il seguente avviso per avvisarti quando EventBridge le tue regole vengono violate.
Creazione di un allarme di avviso dell'interruzione delle regole
-
Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/
. -
Scegli Crea allarme. Nel riquadro CloudWatch Metriche per categoria, scegli Metriche degli eventi.
-
Nell'elenco delle metriche, seleziona. FailedInvocations
-
Sopra il grafico, seleziona Statistic (Statistica), Sum (Somma).
-
In Period (Periodo), seleziona un valore, ad esempio 5 minutes (5 minuti). Seleziona Successivo.
-
In Soglia di allarme, per Nome, digita un nome univoco per l'allarme, ad esempio myFailedRules. In Descrizione, digita una descrizione dell'allarme, ad esempio Le regole non distribuiscono eventi a destinazioni.
-
In is (è), seleziona >= e 1. In for (per), immetti 10.
-
In Azioni, per Ogni volta che si verifica questo allarme, scegli Lo stato è ALARM.
-
Per Invia notifica a, seleziona un SNS argomento Amazon esistente o creane uno nuovo. Per creare un nuovo argomento, seleziona New list (Nuovo elenco). Digita un nome per il nuovo SNS argomento di Amazon, per esempio: myFailedRules.
-
Per Elenco e-mail, digita un elenco di indirizzi e-mail separati da virgole per ricevere una notifica quando lo stato dell'allarme cambia. ALARM
-
Scegli Crea allarme.