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à.
Iscrizione agli eventi su un Event Bus personalizzato
Un abbonato è una risorsa che indica quali eventi desideri e dove inviarli. Lo crei con CreateSubscriber un nome al bus, ai filtri e a un obiettivo. Controlla quel bus, mantiene gli eventi che corrispondono ai suoi filtri, opzionalmente trasforma ciascuno di essi e lo consegna esattamente a un bersaglio. Per estendere un evento a più target, create un abbonato per ogni target sullo stesso bus.
EventBridge applica la creazione o l'eliminazione di un abbonato alla volta su un determinato bus, a seconda dell'account chiamato. Un secondo bus CreateSubscriber o DeleteSubscriber sullo stesso bus mentre uno è in corso fallisceConcurrentModificationException; riprova. Le tariffe di creazione ed eliminazione si applicano Quote personalizzate per gli Event Bus quindi per bus.
Filtrare quali eventi raggiungono l'obiettivo
FilterConfigurationcontiene un elenco di. Filters Ogni filtro ha una sintassiPattern, in EventBridge event pattern, e unaScope. È possibile avere al massimo un filtro per ambito e EventBridge genera un evento solo se corrisponde a tutti i filtri dell'elenco. Un abbonato senza un FilterConfiguration riceve tutti gli eventi sul bus.
-
DATA: corrisponde al payload. Scrivi il motivo sulla forma descritta inStruttura degli eventi: dati, metadati e metadati di sistema. -
METADATA: corrisponde alle coppie chiave-valore con cui un set di produzione è impostatoPutRawEvents, solo corrispondenza esatta. -
SYSTEM_METADATA: corrisponde ai EventBridge set di campi, ad esempioaws:Sourceo.EventGroupId
Per la sintassi del modello, le regole di ambito e gli esempi, vediFiltrare gli eventi per un abbonato.
Trasformazione del payload
Transformer.Typeseleziona ciò che riceve il bersaglio. Un bersaglio universale non lo usa; vediObiettivi universali per un bus eventi personalizzato.
-
RAW, l'impostazione predefinita. Solo il payload. -
WITH_METADATA. L'evento completo:Data,Metadata, eSystemMetadata. -
JSONATA. Il risultato dell'espressione JSonata inJsonataConfiguration.Expression, racchiuso in{% %}delimitatori, con l'evento disponibile come.$events
EventBridge verifica la sintassi di un'espressione al momento della creazione del sottoscrittore e la valuta al momento della consegna. Un'espressione che genera o non produce alcun valore non riesce a fornire quell'evento. Testa le espressioni rispetto a eventi reali prima di dipendere da essi. Per sapere cosa $events vale, le funzioni extra e i limiti, consultateTrasformare gli eventi con JSonata.
Consegnare a un obiettivo
InvokeConfigurationcontiene ilTargetArn, il RoleArn che EventBridge presuppone di richiamare il target e al massimo un blocco di parametri che corrisponde al tipo di destinazione. La maggior parte dei valori dei parametri accetta un'espressione JSonata, quindi un valore può derivare dall'evento. La tabella seguente elenca i tipi di target personalizzati e il relativo blocco di parametri; ognuno ha una propria pagina sotto. Obiettivi per un abbonato a Custom Event Bus
| Target | Blocco di parametri |
|---|---|
| Coda Amazon SQS | SqsParameters |
| funzione Lambda | LambdaParameters |
| Flusso di Kinesis | KinesisParameters |
| Macchina a stati di Step Functions | StepFunctionsParameters |
| Argomento Amazon SNS | SnsParameters |
| Endpoint HTTP o destinazione API | HttpParameters |
| Flusso Firehose | FirehoseParameters |
L'obiettivo può essere anche un Custom Event Bus o un Custom Event Bus - Classic: imposta l'ARN del bus come. TargetArn Per un target FIFO come una coda FIFO di Amazon SQS, imposta l'identificatore di deduplicazione del target nel blocco di parametri, ad esempioSqsParameters.MessageDeduplicationId, su un valore per messaggio derivato dall'evento con un'espressione JSONata. Una costante fa sì che il bersaglio scarti tutti i messaggi dopo il primo.
Un target universale richiama direttamente un'azione AWS API, senza alcuna funzione intermedia. Il suo ARN ha la formaarn:aws:events:::aws-sdk:, ad esempioservice:apiActionarn:aws:events:::aws-sdk:dynamodb:putItem, e UniversalTargetParameters.Input contiene la richiesta come JSON o come espressione JSONata che la produce. Per le regole di denominazione, il batch e il comportamento in caso di errore, vedi. Obiettivi universali per un bus eventi personalizzato
Quando create il sottoscrittore, EventBridge risolve il tipo di destinazione dall'ARN e verifica tre elementi: che il blocco di parametri corrisponda al tipo di destinazione, che l'ARN appartenga al vostro account e che ogni espressione venga analizzata. Se il target esiste, se il ruolo può raggiungerlo e se l'API del target accetta i valori vengono verificati al momento della consegna, quindi confermate la prima consegna al target.
Ritentativi e code per le lettere morte
RetryPolicyimposta la durata EventBridge dei tentativi di consegna fallita, per impostazione predefinita 5 tentativi entro 300 secondi, e OnFailureConfiguration.Arn nomina la coda Amazon SQS che riceve un record per ogni evento che ha esaurito i tentativi. Imposta entrambi quando crei l'abbonato. Per i limiti, il formato di registrazione e le modalità di redrive, consulta. Criteri di riprova e code per lettere morte
Il ruolo di consegna
Il ruolo in RoleArn deve appartenere al tuo account e fidarsi del responsabile del events.amazonaws.com servizio. Il chiamante deve conoscere iam:PassRole il ruolo per creare l'abbonato oppure EventBridge rifiuta la richiesta prima di verificare l'ARN di destinazione. La politica delle autorizzazioni del ruolo richiede due concessioni.
-
L'azione richiesta dal target, ad esempio
sqs:SendMessagesu una coda,lambda:InvokeFunctionsu una funzione, su un argomento osns:Publishkinesis:PutRecordssu uno stream. -
sqs:SendMessagein coda per le lettere morte.OnFailureConfiguration.ArnSenza di esso, una consegna fallita non ha nessun posto dove registrarsi e quegli eventi vengono persi senza alcun segnale.
La seguente politica di fiducia consente di EventBridge assumere il ruolo.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
La seguente politica di autorizzazioni reindirizza a una coda Amazon SQS e le lettere morte a una seconda coda.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "InvokeTheTarget", "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-1:111122223333:large-orders" }, { "Sid": "WriteToTheDeadLetterQueue", "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-1:111122223333:large-orders-dlq" } ] }
Esempio: consegna di ordini di grandi dimensioni a una coda
Il comando seguente crea un abbonato che consegna gli ordini superiori a 500 a una coda Amazon SQS, per gli eventi pubblicati conPutEvents, e invia gli errori a una coda di lettere morte.
aws eventsv2 create-subscriber \ --name large-orders \ --event-bus-arn arn:aws:events:us-east-1:111122223333:event-busv2/orders/EXAMPLE1234567890abcdef \ --filter-configuration '{ "Filters": [ { "Scope": "DATA", "Pattern": "{\"detail\":{\"total\":[{\"numeric\":[\">\",500]}]}}" } ] }' \ --invoke-configuration '{ "TargetArn": "arn:aws:sqs:us-east-1:111122223333:large-orders", "RoleArn": "arn:aws:iam::111122223333:role/EventBusDeliveryRole" }' \ --on-failure-configuration '{ "Arn": "arn:aws:sqs:us-east-1:111122223333:large-orders-dlq" }'
Risoluzione dei problemi: hai pubblicato e nulla è arrivato a destinazione
Una risposta pubblicata dice solo che il bus ha accettato e memorizzato l'evento; non conferma mai la consegna. Esegui i seguenti controlli in ordine.
- Caratteristiche
La chiamata di pubblicazione ha restituito HTTP 200 senza errori e la destinazione non ha ricevuto nulla dopo diversi minuti.
- Causa
Una delle cinque cose, in ordine di frequenza: la consegna è ancora in fase di ritentativo; l'abbonato è
STOPPEDo è stato revocato; il nome dell'abbonatoStartingPositionèLATESTe l'evento è stato pubblicato prima che il sottoscrittore esistesse; il filtro è stato scritto per l'altra API di pubblicazione e non corrisponde a nulla; oppure il ruolo di consegna non può raggiungere la destinazione o la coda delle lettere morte.TargetInvocationsti dice quale metà del problema hai. Se i dati sono accesi e nessuno èTargetInvocationsacceso, le consegne sono stateEventsDeliveredtentate e non sono riuscite.TargetInvocationsSe nessun dato è attivo, significa che nonFilterEvaluatedè stato effettuato alcun tentativo di consegna; verifica che l'abbonato sia presente e controlla.RUNNINGEventTransformationFailures- Soluzione
-
Leggi l'abbonato.
Statedeve essereRUNNINGeRevokeddeve essere assente; appare solo quando è vero. NotaStartingPositione filtri.aws eventsv2 describe-subscriber \ --subscriber-arn arn:aws:events:us-east-1:111122223333:subscriber/large-orders/EXAMPLE1234567890abcdefLeggi le metriche dell'abbonato in.
AWS/EventsV2FilterEvaluatedpari a zero significa che nessun evento ha raggiunto questo abbonato: il produttore ha pubblicato su un altro bus o prima che l'abbonato esistesse.LATESTFilterEvaluatedsuperioreFilterMatcheda zero con zero significa che il filtro non corrisponde a nulla; vedi. Struttura degli eventi: dati, metadati e metadati di sistema SeFilterMatchedha punti dati e non li ha, le consegneEventsDeliverednon vanno a buon fine e la metrica che registra il risultato dipende dal sottoscrittore:EventsDroppedquando non è configurata alcuna coda di lettere morte, quando l'evento ha raggiunto la coda eOnFailureDestinationDeliveredquando no.OnFailureDestinationFailedAttiva i log e riproduci. Imposta su
INFOeLogConfiguration.LevelIncludePayloadversoFULL, invia un registro, pubblica nuovamente e leggi iEVENT_DELIVERY_ATTEMPTrecord. Ciascuno contiene il codice di errore e il messaggio del destinatariodetails.target_input, ovvero ciò che è EventBridge stato inviato anziché ciò che intendevi inviare. Consulta Osservabilità per il Custom Event Bus: metriche, registri e CloudTrail.Se il filtro è il sospetto, aggiungete un destinatario diagnostico sullo stesso bus senza filtro e una coda di vostra proprietà come bersaglio.
Transformer.TypeWITH_METADATAFornisce ogni evento esattamente come lo EventBridge vede, comeData, e.MetadataSystemMetadataQuindi semplifica il filtro una condizione alla volta; l'ultima condizione che rimuovi è la causa.
- Verifica
Pubblica un evento che dovrebbe corrispondere e uno che non dovrebbe. Il primo arriva all'obiettivo e
EventsDeliveredincrementa di uno; il secondo non arriva eFilterEvaluatedincrementa mentre nonFilterMatchedlo fa.
Nota
Le metriche di un abbonato sono disponibili al proprietario dell'autobus e al proprietario dell'abbonato; i relativi registri vengono consegnati solo al proprietario dell'abbonato.