Code DLQ (DLQ) Amazon SNS - Amazon Simple Notification Service

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

Code DLQ (DLQ) Amazon SNS

Una coda DLQ è una coda Amazon SQS a cui un abbonamento Amazon SNS può mirare per i messaggi che non possono essere recapitati correttamente agli abbonati. I messaggi che non possono essere recapitati a causa di errori client o errori server vengono mantenuti nella coda DLQ per ulteriori analisi o elaborazione. Per ulteriori informazioni, consulta Configurazione di una coda Amazon SNS dead-letter per una sottoscrizione e Tentativi di consegna dei messaggi di Amazon SNS.

Nota
  • L'abbonamento Amazon SNS e la coda Amazon SQS devono appartenere allo stesso account e alla AWS stessa regione.

  • Per un Argomento FIFO, puoi utilizzare una coda di Amazon SQS come una coda DLQ per la sottoscrizione ad Amazon SNS. Le sottoscrizioni agli argomenti FIFO utilizzano le code FIFO e le sottoscrizioni agli argomenti standard utilizzano le code standard.

  • Per utilizzare una coda Amazon SQS crittografata come coda di lettere non scritte, devi utilizzare un KMS personalizzato con una policy chiave che garantisca al servizio Amazon SNS l'accesso principale alle azioni API. AWS KMS Per ulteriori informazioni, consulta Crittografia a riposo in questa guida e Protezione dei dati Amazon SQS con la crittografia lato server (SSE) e AWS KMS nella Guida per sviluppatori Amazon Simple Queue Service.

Perché le consegne dei messaggi non riescono?

In generale, la consegna dei messaggi non riesce quando Amazon SNS non può accedere a un endpoint sottoscritto a causa di un errore lato client o lato server. Quando Amazon SNS riceve un errore sul lato client o continua a ricevere un errore sul lato server per un messaggio che supera il numero di tentativi specificato dalla policy di ripetizione dei tentativi corrispondente, Amazon SNS ignora il messaggio, a meno che non sia allegata una coda DLQ all'abbonamento. Le consegne non riuscite non modificano lo stato delle sottoscrizioni. Per ulteriori informazioni, consulta Tentativi di consegna dei messaggi di Amazon SNS.

Errori lato client

Gli errori lato client possono verificarsi quando Amazon SNS dispone di metadati di sottoscrizione obsoleti. Questi errori si verificano in genere quando un proprietario elimina l'endpoint (ad esempio, una funzione Lambda sottoscritta a un argomento Amazon SNS) o quando un proprietario modifica la policy associata all'endpoint sottoscritto in modo da impedire ad Amazon SNS la policy di consegna dei messaggi all'endpoint. Amazon SNS non riprova il recapito dei messaggi che non riesce a causa di un errore sul lato client.

Errori lato server

Gli errori lato server possono verificarsi quando il sistema responsabile dell'endpoint sottoscritto diventa non disponibile o restituisce un'eccezione che indica che non è in grado di elaborare una richiesta valida da Amazon SNS. Quando si verificano errori lato server, Amazon SNS ripropone le consegne non riuscite utilizzando una funzione di backoff lineare o esponenziale. Per gli errori lato server causati da endpoint AWS gestiti supportati da Amazon SQS o Amazon AWS Lambda SNS, ritenta la consegna fino a 100.015 volte, in 23 giorni.

Gli endpoint gestiti dal cliente (ad esempio HTTP, SMTP, SMS o push mobile) possono anche causare errori lato server. Amazon SNS tenta di eseguire nuovamente la consegna anche a questi tipi di endpoint. Mentre gli endpoint HTTP supportano le policy di nuovi tentativi definite dal cliente, Amazon SNS imposta una policy di nuovi tentativi di consegna interna su 50 volte nell'arco di 6 ore per gli endpoint push SMTP, SMS e dispositivi mobili.

Come funzionano le code DLQ?

Una coda dead-letter è allegata a una sottoscrizione Amazon SNS (anziché a un argomento) perché la consegna dei messaggi avviene a livello di sottoscrizione. In questo modo è possibile identificare più facilmente l'endpoint di destinazione originale per ogni messaggio.

Una coda dead-letter associata a una sottoscrizione Amazon SNS è una coda Amazon SQS ordinaria. Per ulteriori informazioni sul periodo di conservazione dei messaggi, consulta Quote correlate ai messaggi nella Guida per sviluppatori Amazon Simple Queue Service. È possibile modificare il periodo di conservazione dei messaggi utilizzando l'operazione API Amazon SQS SetQueueAttributes. Per rendere le applicazioni più resilienti, è consigliabile impostare il periodo massimo di conservazione per le code dead-letter a 14 giorni.

Come vengono spostati i messaggi in una coda DLQ?

I messaggi vengono spostati in una coda dead-letter utilizzando una policy di redrive. Una policy di redrive è un oggetto JSON che fa riferimento all'ARN della coda dead-letter. L'attributo deadLetterTargetArn specifica l'ARN. L'ARN deve puntare a una coda Amazon SQS nella Account AWS stessa regione dell'abbonamento Amazon SNS. Per ulteriori informazioni, consulta Configurazione di una coda Amazon SNS dead-letter per una sottoscrizione.

L'oggetto JSON seguente è una policy di redrive di esempio, allegato a una sottoscrizione SNS.

{ "deadLetterTargetArn": "arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue" }

Come posso spostare i messaggi fuori da una coda DLQ?

È possibile spostare i messaggi fuori da una coda dead-letter in due modi:

  • Evitare di scrivere logica consumer Amazon SQS - Impostare la coda dead-letter come origine evento sulla funzione Lambda per drenare la coda dead-letter.

  • Scrivi la logica consumer di Amazon SQS: utilizza l'API Amazon SQS AWS , l'SDK AWS CLI o per scrivere una logica consumer personalizzata per il polling, l'elaborazione e l'eliminazione dei messaggi nella coda delle lettere non scritte.

Come posso monitorare e registrare code DLQ?

Puoi utilizzare i CloudWatch parametri di Amazon per monitorare le code di posta indesiderata associate ai tuoi abbonamenti Amazon SNS. Tutte le code Amazon SQS emettono CloudWatch parametri a intervalli di un minuto. Per ulteriori informazioni, consulta i CloudWatch parametri disponibili per Amazon SQS nella Amazon Simple Queue Service Developer Guide. Tutti gli abbonamenti Amazon SNS con code di lettera morta emettono anche parametri. CloudWatch Per ulteriori informazioni, consulta Monitoraggio degli argomenti di Amazon SNS tramite CloudWatch.

Per ricevere notifiche sull'attività nelle code di posta indesiderata, puoi utilizzare metriche e allarmi. CloudWatch L'impostazione di un allarme per la NumberOfMessagesSent metrica non è adatta perché questa metrica non acquisisce i messaggi inviati a un DLQ a seguito di tentativi di elaborazione non riusciti. Utilizzate invece la NumberOfMessagesReceived metrica, che acquisisce tutti i messaggi ricevuti dal DLQ, compresi quelli spostati a causa di errori di elaborazione.

Esempio di configurazione degli allarmi CloudWatch
  1. Crea un CloudWatchallarme per la NumberOfMessagesReceived metrica.

  2. Imposta la soglia di allarme su 1 (o su un altro valore appropriato in base alle tue aspettative e al traffico DLQ).

  3. Specificare un argomento di Amazon SNS per ricevere una notifica quando scatta l'allarme. In questo argomento Amazon SNS è possibile inviare la notifica di allarme a qualsiasi tipo di endpoint (ad esempio un indirizzo e-mail, un numero di telefono o un'app per il cercapersone mobile).

Puoi utilizzare CloudWatch Logs per esaminare le eccezioni che causano il fallimento delle consegne di Amazon SNS e per l'invio dei messaggi a code di lettera morta. Amazon SNS può registrare sia le consegne riuscite che quelle non riuscite. CloudWatch Per ulteriori informazioni, consulta Attributi per app .