Perché la mia regola di EventBridge non ha invocato la mia funzione Lambda?
La regola che ho creato in Amazon EventBridge non invoca la mia funzione AWS Lambda.
Risoluzione
Nota: se ricevi degli errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori relativi ad AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Controlla le metriche di CloudWatch relative alla regola di EventBridge
Per identificare la causa del problema, controlla la console Amazon CloudWatch nel namespace AWS/Events per le seguenti metriche di EventBridge:
- Seleziona TriggeredRules per identificare se una regola pianificata è stata eseguita o corrisponde a un evento specifico. Dopo che la regola è stata eseguita correttamente, EventBridge inoltra l'evento alla destinazione.
- Seleziona Invocazioni per stabilire se la regola ha invocato una destinazione. EventBridge effettua più tentativi se non riesce a consegnare l'evento alla destinazione.
- Seleziona FailedInvocations per stabilire se EventBridge non è riuscito a invocare definitivamente la destinazione. Questa metrica indica problemi nella configurazione della destinazione.
Verifica che la policy delle risorse della funzione Lambda abbia le autorizzazioni necessarie
EventBridge deve avere l'autorizzazione per invocare la funzione Lambda. Se utilizzi la console EventBridge per creare la regola, le autorizzazioni necessarie vengono aggiunte automaticamente alla policy basata sulle risorse della funzione. Se hai utilizzato AWS CLI, AWS SDK o AWS CloudFormation per creare una regola, devi invece aggiungerle manualmente le autorizzazioni.
Per aggiornare le autorizzazioni della funzione di destinazione utilizzando la console Lambda, completa i seguenti passaggi:
- Apri la console Lambda.
- Seleziona la funzione Lambda.
- Scegli la scheda Configurazione, quindi Autorizzazioni.
- In Policy basata sulle risorse, assicurati che la policy consenta a EventBridge di invocare la funzione Lambda.
- Se la policy non ha le autorizzazioni richieste, scegli Aggiungi autorizzazioni.
- Scegli Servizio AWS - EventBridge.
- (Facoltativo) Inserisci un ID istruzione come identificatore dell'istruzione di policy.
- In Principale, inserisci events.amazonaws.com.
- In ARN di origine, inserisci il nome della risorsa Amazon (ARN) della regola di EventBridge.
- In Operazione, seleziona lambda:InvokeFunction.
- Scegli Salva.
Puoi anche utilizzare l'API GetPolicy per visualizzare la policy basata sulle risorse della funzione. Oppure esegui questo comando AWS CLI get-policy:
aws lambda get-policy \ --function-name my-function
Nota: sostituisci my-function con il nome della tua funzione.
Per aggiornare la policy, utilizza l'API AddPermission. Oppure esegui questo comando add-permission:
aws lambda add-permission \ --function-name MyFunction \ --statement-id MyId \ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012:rule/MyRule
Nota: sostituisci MyFunction con il nome della tua funzione, myID con l'ID della tua istruzione e arn:aws:events:us-east-1:123456789012:rule/MyRule con l'ARN della regola.
Assicurati che il ruolo di esecuzione abbia le autorizzazioni richieste
Se utilizzi un ruolo di esecuzione, assicurati che abbia l'autorizzazione per invocare la funzione Lambda.
Se utilizzi la console EventBridge per creare il ruolo, la console aggiunge automaticamente le autorizzazioni richieste al ruolo IAM associato alla regola. Se hai utilizzato AWS CLI, AWS SDK o CloudFormation per creare una regola, devi invece aggiungerle manualmente.
Per verificare le autorizzazioni del ruolo IAM, completa i seguenti passaggi:
- Apri la console EventBridge.
- Scegli Regole.
- Seleziona la regola di EventBridge.
- Scegli la scheda Destinazione, quindi scegli il ruolo IAM per la regola.
- In Autorizzazione, assicurati che la policy consenta a EventBridge di invocare funzioni Lambda e che la policy di attendibilità consenta al ruolo di accedere a Lambda.
Esempio di policy IAM:
Esempio di relazione di attendibilità:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name" ] } ] }
Nota: sostituisci arn:aws:lambda:region:account-id:function:function-name con l'ARN della funzione, account-ID con l'ID del tuo account AWS e arn:aws:events:region:account-id:rule/rule-name con l'ARN della regola.{ "Version": "2012-10-17", "Statement": [ { "Sid": "TrustEventBridgeService", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id", "aws:SourceArn": "arn:aws:events:region:account-id:rule/rule-name" } } } ] }
Puoi anche utilizzare l'API GetRole per recuperare la policy IAM. Oppure esegui questo comando get-role:
aws iam get-role \ --role-name Test-Role
Nota: sostituisci Test-Role con il nome del tuo ruolo.
Se alla policy o alla relazione di attendibilità mancano le autorizzazioni necessarie, utilizza la console IAM per aggiornarla.
Aggiungi una coda DLQ alla destinazione in Amazon SQS
EventBridge utilizza code DLQ in Amazon Simple Queue Service (Amazon SQS) per memorizzare eventi che non ha potuto consegnare a una destinazione.
Per ottenere ulteriori informazioni sul motivo per cui un'invocazione non è riuscita, collega una coda DLQ alla destinazione completando i seguenti passaggi:
- Crea una coda Amazon SQS da utilizzare come coda DLQ.
- Apri la console EventBridge.
- Scegli Regole.
- Seleziona la regola di EventBridge.
- Per Destinazioni, seleziona Modifica, quindi espandi la sezione Impostazioni aggiuntive.
- Per Coda DLQ, scegli Select an Amazon SQS queue in the current AWS account to use as the dead-letter queue (Seleziona una coda Amazon SQS nell'account AWS corrente da utilizzare come coda DLQ).
- Scegli la coda SQS.
- Rivedi le modifiche, quindi scegli Salva.
Dopodiché esegui nuovamente l'evento per registrarlo nella coda DLQ e ottenere ulteriori informazioni sul motivo per cui la regola non è riuscita a invocare la funzione.
Informazioni correlate
La mia regola è stata eseguita ma la funzione Lambda non è stata richiamata
Improved failure recovery for Amazon EventBridge (Recupero migliorato in caso di errore per Amazon EventBridge)
- Argomenti
- Application IntegrationCompute
- Lingua
- Italiano
Video correlati

