Panoramica

D: Quali sono i vantaggi di Amazon SQS rispetto ai sistemi di accodamento di messaggi sviluppati internamente o in commercio?

Amazon SQS offre diversi vantaggi rispetto alla creazione di soluzioni aziendali o all'uso di sistemi di accodamento open source o in commercio, che richiedono, almeno all'inizio, notevoli sforzi di sviluppo e di configurazione.

Queste alternative richiedono manutenzione hardware continua e occupano risorse di amministrazione. La complessità di configurazione e gestione di questi sistemi è aggravata dalla necessità di prevedere storage ridondante che eviti la perdita di messaggi in caso di guasti hardware.

Al contrario, Amazon SQS richiede una configurazione minima senza sovraccarico amministrativo. Inoltre, Amazon SQS funziona su vasta scala ed è in grado di elaborare miliardi di messaggi al giorno. È possibile ridimensionare la quantità di traffico in Amazon SQS in qualsiasi momento e con qualsiasi configurazione. Infine, Amazon SQS fornisce una durabilità di messaggi molto elevata, offrendo una maggiore sicurezza a te e ai tuoi collaboratori.

D: Quali sono le differenze tra Amazon SQS e Amazon SNS?

Amazon SNS consente alle applicazioni di inviare messaggi con vincoli tempistici specifici a più sottoscrittori grazie a un meccanismo "push" che elimina la necessità di controllare periodicamente (polling) l'eventuale presenza di aggiornamenti. Amazon SQS è un servizio di accodamento dei messaggi utilizzato dalle applicazioni distribuite per scambiare messaggi mediante un modello di polling, che può essere impiegato per decuplicare i componenti di invio e ricezione. 

D: Quali sono le differenze tra Amazon SQS e Amazon MQ?

Se è in uso un'applicazione esistente e occorre trasferire la messaggistica nel cloud in modo semplice e veloce, si consiglia di utilizzare Amazon MQ. Supporta i protocolli e le API standard di settore e consente pertanto di passare da un qualsiasi broker di messaggistica basato su standard al servizio senza dover ricompilare il codice dell'applicazione. Se è previsto lo sviluppo di una nuova applicazione nel cloud, si consiglia di utilizzare Amazon SQS e Amazon SNS. Amazon SQS ed SNS sono servizi di gestione di code di messaggi e argomenti completamente gestiti, che ricalibrano le risorse praticamente all'infinito e forniscono API intuitive. 

D: Amazon SQS fornisce l'ordine di messaggi?

Sì. Le code FIFO (first-in-first-out) conservano l'ordine esatto nel quale i messaggi vengono inviati e ricevuti. Se si utilizza una coda FIFO, non c'è bisogno di aggiungere informazioni di sequenziamento nei messaggi. Per maggiori informazioni, consulta la sezione FIFO Queue Logic nell'Amazon SQS Developer Guide.

Le code standard forniscono una funzionalità loose-FIFO che cerca di mantenere l'ordine dei messaggi. Tuttavia, poiché le code standard sono progettate per essere altamente scalabili utilizzando un'architettura estremamente distribuita, non è garantito che i messaggi ricevuti siano nello stesso esatto ordine nel quale sono stati inviati.

D: Amazon SQS garantisce la consegna dei messaggi?

Le code standard offrono una distribuzione di tipo at-least-once, ovvero ciascun messaggio viene distribuito almeno una volta.

Le code FIFO forniscono singole elaborazioni precise, ovvero ciascun messaggio viene distribuito una volta e rimane disponibile fino a che un consumer lo elabora e lo elimina. Non vengono introdotti duplicati nella coda.

D: Quali sono le differenze tra Amazon SQS e Amazon Kinesis Streams?

Amazon SQS offre code in hosting affidabili e a scalabilità elevata per memorizzare i messaggi durante il trasferimento fra applicazioni o microservizi. Trasferisce dati fra i componenti di applicazioni distribuite e consente di disaccoppiare questi componenti. Amazon SQS fornisce costrutti di middleware comuni quali code DLQ e gestione a pillola di veleno. Inoltre fornisce un'API web service generica ed è accessibile con qualsiasi linguaggio di programmazione supportato dall'SDK AWS. Amazon SQS supporta sia le code standard sia le code FIFO.

Amazon Kinesis Streams permette l'elaborazione in tempo reale di streaming di big data e la capacità di leggere e riprodurre i record su più applicazioni Amazon Kinesis. L'Amazon Kinesis Client Library (KCL) distribuisce tutti i record per una determinata chiave di partizione allo stesso processore, facilitando la creazione di più applicazioni in grado di leggere dallo stesso flusso di Amazon Kinesis (ad esempio, per l'applicazione di conteggi, aggregazioni o filtri).

Per ulteriori informazioni, consulta la documentazione su Amazon Kinesis.

D: Amazon utilizza Amazon SQS per le sue applicazioni?

Sì. Gli sviluppatori di Amazon usano Amazon SQS per diverse applicazioni che elaborano un elevato numero di messaggi al giorno. I processi più importanti di Amazon.com e di Amazon Web Services impiegano Amazon SQS.

Fatturazione

D: Quanto costa Amazon SQS?

I prezzi sono calcolati solo in base all'uso effettivo, senza tariffe minime.

Il costo di Amazon SQS viene calcolato in base alle richieste, a cui si aggiungono i costi di trasferimento dei dati da Amazon SQS (a meno che i dati non vengano trasferiti in istanze Amazon EC2 o funzioni AWS Lambda nella stessa regione). Per i dettagli sui prezzi per tipo di coda e per regione, consulta i Prezzi di Amazon SQS.

D: Cosa prevede il piano gratuito di Amazon SQS?

Il piano gratuito di Amazon SQS offre 1 milione di richieste al mese senza alcun costo.

Molte applicazioni di piccole dimensioni possono operare interamente nell'ambito del piano gratuito. Saranno tuttavia applicati i costi di trasferimento dei dati. Per maggiori informazioni, visitare prezzi Amazon SQS.

Il piano gratuito è un'offerta mensile. L'uso gratuito non viene accumulato di mese in mese.

D: Vengono addebitati i costi di tutte le richieste Amazon SQS?

Sì, per ogni richiesta che va oltre il piano gratuito. Tutte le richieste di Amazon SQS sono soggette a costi e vengono fatturate alla stessa tariffa.

D: Le operazioni in batch di Amazon SQS costano più delle altre richieste?

No, le operazioni in batch (SendMessageBatch, DeleteMessageBatch e ChangeMessageVisibilityBatch) hanno lo stesso costo delle altre richieste Amazon SQS. Raggruppando le richieste in batch, potrai ridurre i costi correlati ad Amazon SQS.

D: Come viene addebitato e fatturato l'utilizzo di Amazon SQS?

Non sono previsti costi di avvio per iniziare a usare Amazon SQS. Alla fine del mese, verrà addebitato sulla carta di credito il costo delle risorse utilizzate in quel mese.

Puoi visualizzare in qualsiasi momento i costi relativi al periodo di fatturazione corrente sul sito Web di AWS:

  1. Accedi al tuo account AWS.
  2. In Your Web Services Account, seleziona Account Activity.

D: In che modo è possibile tenere traccia e gestire i costi associati alle code Amazon SQS?

Per monitorare le code per determinate risorse e calcolarne i costi, puoi utilizzare i tag per l'allocazione dei costi. Un tag è un'etichetta di metadati che include una coppia chiave-valore. Ad esempio, è possibile contrassegnare con dei tag le code in base al centro di costo, per poi suddividere le spese in categorie separate.

Per ulteriori informazioni, consulta la sezione Tagging Your Amazon SQS Queues nel documento Amazon SQS Developer Guide. Per ulteriori informazioni sull'applicazione di tag per l'allocazione dei costi, consulta la sezione Using Cost Allocation Tags nel documento AWS Billing and Cost Management User Guide.

D: I prezzi includono le tasse?

Salvo diversamente specificato, i prezzi sono al netto di eventuali tasse e imposte doganali, inclusa l'IVA ed eventuali imposte sulle vendite.

Per i clienti con indirizzo di fatturazione in Giappone, l'utilizzo di AWS (in qualunque area geografica) è soggetto all'imposta sul consumo giapponese. Per ulteriori informazioni, consulta la pagina Domande frequenti sull'imposta sul consumo per Amazon Web Services.

Caratteristiche, funzionalità e interfacce

D: È possibile usare Amazon SQS con altri servizi AWS?

Sì. Puoi rendere le applicazioni più flessibili e scalabili utilizzando Amazon SQS con servizi di elaborazione quali Amazon EC2, Amazon EC2 Container Service (Amazon ECS) e AWS Lambda, oppure con servizi di storage e di database quali Amazon Simple Storage Service (Amazon S3) e Amazon DynamoDB.

D: Come si interagisce con Amazon SQS?

Puoi accedere ad Amazon SQS utilizzando la Console di gestione AWS, che consente di creare code di Amazon SQS e inviare messaggi facilmente.

Amazon SQS fornisce anche un'API web service. Inoltre è integrato con gli SDK AWS, che consentono di lavorare nel linguaggio di programmazione di tua scelta.

D: Quali azioni API sono disponibili per Amazon SQS?

Per dettagli sulle operazioni sulle code, consulta la Guida di riferimento alle API di Amazon SQS.

D: Chi può effettuare operazioni su una coda di messaggi?

Solo il proprietario dell'account AWS (o di un account a cui il proprietario ne abbia delegato i diritti) può effettuare operazioni su una coda di messaggi Amazon SQS.

D: È possibile utilizzare Java Message Service (JMS) con Amazon SQS?

Sì. Puoi sfruttare scalabilità, costi ridotti e disponibilità elevata di Amazon SQS senza dover gestire un cluster JMS.

Amazon fornisce la Amazon SQS Java Messaging Library, che implementa le specifiche di JMS 1.1 e utilizza Amazon SQS come provider JMS. Per maggiori informazioni, consulta la sezione Using JMS with Amazon SQS nell'Amazon SQS Developer Guide.

D: Come fa Amazon SQS a identificare i messaggi?

Tutti i messaggi hanno un ID univoco globale che Amazon SQS restituisce quando il messaggio viene consegnato nella coda. L'ID non è necessario per eseguire ulteriori operazioni sul messaggio, ma è utile per monitorare la corretta ricezione di un determinato messaggio in una coda.

Quando ricevi un messaggio dalla coda, la risposta include un handle di ricezione, che devi fornire quando elimini un messaggio.

Per maggiori informazioni, consulta la sezione Queue and Message Identifiers nell'Amazon SQS Developer Guide.

D: In che modo Amazon SQS gestisce i messaggi che non possono essere elaborati?

In Amazon SQS, puoi usare l'API o la console per configurare code DLQ, ovvero code configurate per la ricezione di messaggi provenienti da altre code di origine.

Se trasformi la coda in una coda DLQ, questa riceve messaggi dopo che il numero massimo di tentativi di elaborazione è stato completato. Puoi usare code DLQ per isolare i messaggi che non possono essere elaborati, in modo da analizzarli in un secondo momento.

Per ulteriori informazioni consulta "Posso utilizzare una coda DLQ con le code FIFO?" in questa pagina e Using Amazon SQS Dead Letter Queues nell'Amazon SQS Developer Guide.

D: Cos'è il timeout visibilità?

Il timeout visibilità è un intervallo di tempo durante il quale Amazon SQS impedisce ad altri componenti la ricezione e l'elaborazione di un messaggio. Per ulteriori informazioni, consulta la sezione Visibility Timeout nell'Amazon SQS Developer Guide.

D: Amazon SQS supporta i metadati nei messaggi?

Sì. Un messaggio Amazon SQS può contenere fino a 10 attributi di metadati. Puoi usare tali attributi per separare il corpo del messaggio dai metadati che lo descrivono. In questo modo è più semplice elaborare e memorizzare le informazioni più rapidamente e in modo più intelligente, perché le applicazioni non devono analizzare l'intero messaggio prima di apprendere come elaborarlo.

Gli attributi di messaggio Amazon SQS hanno la forma del gruppo nome-tipo-valore. I tipi supportati includono stringhe, valori binari e numeri (numeri interi, a virgola mobile e a doppia precisione). Per maggiori informazioni, consulta la sezione Using Amazon SQS Message Attributes nell'Amazon SQS Developer Guide.

D: In che modo è possibile determinare il valore del tempo in coda?

Per determinare il valore del tempo in coda, è possibile richiedere l'attributo SentTimestamp al momento della ricezione del messaggio. Sottraendo quel valore dall'ora attuale si ottiene il valore del tempo in coda.

D: Qual è, in genere, la latenza di Amazon SQS?

In genere, la latenza per le richieste API SendMessage, ReceiveMessage e DeleteMessage è quantificabile nell'ordine di qualche decina o poche centinaia di millisecondi.

D: Per l'accesso in forma anonima, qual è il valore dell'attributo SenderID per un messaggio?

Quando l'ID account AWS non è disponibile (ad esempio quando invia un messaggio un utente anonimo), Amazon SQS fornisce un indirizzo IP.

D: Cos'è il polling lungo in Amazon SQS?

Il polling lungo in Amazon SQS è un modo per recuperare messaggi dalle code Amazon SQS. Mentre il comune polling breve restituisce i messaggi immediatamente, anche quando la coda interrogata è vuota, il polling lungo non restituisce la risposta finché il messaggio non arriva nella coda o il polling lungo scade.

Con il polling lungo, recuperare i messaggi dalla coda Amazon SQS non appena sono disponibili è facile e poco costoso. Il polling lungo può ridurre il costo di utilizzo di SQS, poiché riduce il numero di ricezioni a vuoto. Per maggiori informazioni, consulta la sezione Amazon SQS Long Polling nell'Amazon SQS Developer Guide.

D: Il polling lungo di Amazon SQS comporta costi aggiuntivi?

No, le chiamate ReceiveMessage associate al polling lungo vengono fatturate esattamente come le altre chiamate ReceiveMessage.

D: In quali casi è più utile usare il polling lungo di Amazon SQS e in quali casi il polling breve?

In quasi tutti i casi, il polling lungo è preferibile al polling breve. Le richieste a polling lungo consentono la ricezione dei messaggi non appena raggiungono la coda, riducendo il numero di istanze ReceiveMessageResponse restituite vuote.

Il polling lungo di Amazon SQS ha prestazioni più elevate e un costo ridotto nella maggior parte dei casi d'uso. Tuttavia, se un'applicazione è stata progettata per ricevere una risposta immediata da una chiamata ReceiveMessage, sarà necessario apportare alcune modifiche per poter approfittare dei vantaggi del polling lungo.

Per esempio, se la tua applicazione impiega un thread singolo per interrogare più code, potrebbe non essere possibile passare dal polling breve a quello lungo, perché il thread singolo attenderà il timeout del polling lungo sulle code vuote, ritardando l'elaborazione delle code che possono contenere messaggi.

In applicazioni di questo genere, consigliamo di usare un thread singolo per elaborare una sola coda, consentendo all'applicazione di sfruttare i vantaggi del polling lungo di Amazon SQS.

D: Quale valore è consigliabile usare per il timeout del polling lungo?

In generale, il timeout di un polling lungo dovrebbe essere al massimo di 20 secondi. Poiché valori di timeout più elevati riducono il numero di istanze ReceiveMessageResponse restituite vuote, prova a impostare un timeout il più elevato possibile.

Se il limite di 20 secondi non è adatto per l'applicazione in uso (come nell'esempio della domanda precedente), imposta un timeout di durata inferiore, fino a 1 secondo.

Tutti i kit SDK AWS sono impostati con polling lunghi di 20 secondi come valore predefinito. Se non usi un kit SDK AWS per accedere ad Amazon SQS, oppure se lo hai configurato con un timeout più breve, potresti dover modificare il client Amazon SQS perché accetti richieste con termini più lunghi o utilizzare un timeout con polling breve.

D: Cos'è AmazonSQSBufferedAsyncClient per Java?

AmazonSQSBufferedAsyncClient per Java fornisce un'implementazione dell'interfaccia AmazonSQSAsyncClient e aggiunge diverse importanti caratteristiche:

  • L'inclusione automatica in batch di più richieste SendMessage, DeleteMessage o ChangeMessageVisibility senza dover modificare l'applicazione
  • Prelettura dei messaggi in un buffer locale per consentire all'applicazione di elaborare immediatamente i messaggi da Amazon SQS senza attenderne il recupero

La combinazione di queste due caratteristiche (la creazione automatica di batch e la prelettura) permette di migliorare il throughput e ridurre la latenza delle applicazioni, contenendo al contempo i costi grazie alla diminuzione del numero di richieste Amazon SQS. Per maggiori informazioni, consulta la sezione Client-Side Buffering and Request Batching nell'Amazon SQS Developer Guide.

D: Dove è possibile scaricare AmazonSQSBufferedAsyncClient per Java?

AmazonSQSBufferedAsyncClient fa parte del kit SDK AWS per Java.

D: È necessario riscrivere un'applicazione per poter utilizzare AmazonSQSBufferedAsyncClient per Java?

no, AmazonSQSBufferedAsyncClient per Java viene implementata come una sostituzione nel codice per le istanze esistenti di AmazonSQSAsyncClient.

Se aggiorni un'applicazione per consentire l'utilizzo del kit SDK AWS più recente e modifichi il client perché utilizzi AmazonSQSBufferedAsyncClient per Java invece di AmazonSQSAsyncClient, l'applicazione potrà beneficiare del batching automatico e della prelettura.

D: In che modo è possibile abbonarsi alle code di messaggi Amazon SQS per ricevere le notifiche dagli argomenti Amazon SNS?

  1. Nella console di Amazon SQS, seleziona una coda di messaggi standard.
  2. In Queue Actions, seleziona Subscribe Queue to SNS Topic dall'elenco a discesa.
  3. Nella finestra di dialogo, seleziona l'argomento desiderato nell'elenco a discesa Choose a Topic e fai clic su Subscribe.

Per maggiori informazioni, consulta la sezione Subscribing a Queue to an Amazon SNS Topic nell'Amazon SQS Developer Guide.

D: È possibile eliminare tutti i messaggi in una coda senza eliminare la coda?

Sì. Puoi eliminare tutti i messaggi in una coda Amazon SQS tramite l'operazione PurgeQueue.

Quando si ripulisce una coda, tutti i messaggi precedentemente inviati a quella coda vengono eliminati. Poiché la coda e i relativi attributi non vengono cancellati, non è necessario riconfigurarla, ma è possibile continuare a utilizzarla.

Per cancellare solo messaggi specifici, usa le chiamate DeleteMessage e DeleteMessageBatch.

Per ulteriori informazioni, guarda questo tutorial: Ripulire messaggi a una coda di Amazon SQS.

Code FIFO

D: In quali regioni sono disponibili le code FIFO?

Le code FIFO sono al momento disponibili nelle regioni Stati Uniti occidentali (Oregon), Stati Uniti orientali (Virginia settentrionale) e UE (Irlanda). La caratteristica sarà resa disponibile in altre regioni nei prossimi mesi.

D: Quante copie di un messaggio si ricevono?

Le code FIFO sono progettate per non introdurre mai messaggi duplicati. Tuttavia, in alcuni casi, il produttore di messaggi può introdurre duplicati: per esempio, se il produttore invia un messaggio, non riceve una risposta e allora rimanda lo stesso messaggio. Le API di Amazon SQS forniscono una funzionalità di disaccoppiamento che impedisce al produttore del messaggio di inviare duplicati. I duplicati introdotti dal produttore del messaggio vengono eliminati entro un intervallo di disaccoppiamento di 5 minuti.

Con le code standard, è possibile che si riceva occasionalmente il duplicato di un messaggio (consegna almeno una volta). Se si usa una coda standard, le applicazioni devono essere idempotenti (ovvero non devono essere influenzate nel momento in cui un messaggio viene elaborato più di una volta).

Per ulteriori informazioni, consulta la sezione Exactly-Once Processing nell'Amazon SQS Developer Guide.

D: Le code Amazon SQS che ho usato precedentemente diventeranno code FIFO?

Le code standard di Amazon SQS (il nuovo nome delle code esistenti) non cambiano e si possono ancora creare code standard. Queste code continuano a fornire la scalabilità e il throughput più elevati, tuttavia l'ordine non è garantito e possono esserci duplicati.

Le code standard sono adatta a più scenari, come ad esempio la distribuzione di lavoro con più consumer idempotenti.

D: È possibile convertire una coda standard esistente in una coda FIFO?

No. Quando crei una coda, devi sceglierne il tipo. Tuttavia è possibile passare a una coda FIFO. Per maggiori informazioni, consulta la sezione Moving From a Standard Queue to a FIFO Queue nell'Amazon SQS Developer Guide.

D: Le code FIFO di Amazon SQS sono compatibili con versioni precedenti?

Per utilizzare la funzionalità di coda FIFO si deve usare l'SDK AWS più recente.

Le code FIFO utilizzano le stesse azioni API delle code standard e i meccanismi di ricezione ed eliminazione dei messaggi e di modifica del timeout visibilità sono gli stessi. Tuttavia, quando si inviano messaggi, si deve specificare un ID di gruppo di messaggi. Per maggiori informazioni, consulta la sezione FIFO Queue Logic nell'Amazon SQS Developer Guide.

D: Con quali servizi (AWS o esterni) sono compatibili le code FIFO di Amazon SQS?

Alcuni servizi AWS o esterni per l'invio di notifiche ad Amazon SQS potrebbero non essere compatibili con le code FIFO, anche se consentono di impostare una coda FIFO come destinazione.

Le seguenti caratteristiche dei servizi AWS non sono attualmente compatibili con le code FIFO:

Per informazioni sulla compatibilità di altri servizi con le code FIFO, consulta la documentazione dei rispettivi servizi.

D: Le code FIFO di Amazon SQS sono compatibili con Amazon SQS Buffered Asynchronous Client, la Amazon SQS Extended Client Library for Java o Amazon SQS Java Message Service (JMS) Client?

Le code FIFO non sono attualmente compatibili con Amazon SQS Buffered Asynchronous Client.

Sono invece compatibili con la libreria Extended Client di Amazon SQS per Java e Amazon SQS Java Message Service (JMS) Client.

D: Quali parametri di CloudWatch AWS supportano le code FIFO di Amazon SQS?

Le code FIFO supportano tutti i parametri supportati dalle code standard. Per le code FIFO, tutti i parametri approssimativi restituiscono conteggi accurati. Per esempio, sono supportati i seguenti parametri di CloudWatch AWS:

  • ApproximateNumberOfMessagesDelayed – Il numero dei messaggi nella coda che vengono differiti e non sono disponibili per la lettura immediata.
  • ApproximateNumberOfMessagesVisible – Il numero dei messaggi disponibili per il recupero dalla coda.
  • ApproximateNumberOfMessagesNotVisible – Il numero dei messaggi in volo, ovvero inviati a un client ma che non sono ancora stati eliminati e che non hanno ancora raggiunto il limite della finestra di visibilità.

D: Cosa sono i gruppi di messaggi?

I messaggi sono raggruppati in "pacchetti" distinti e ordinati in una coda FIFO. Per ogni ID di gruppo di messaggi, tutti i messaggi vengono inviati e ricevuti nell'ordine esatto. Tuttavia, i messaggi con valori ID gruppo messaggi diversi possono essere inviati e ricevuti fuori ordine. Devi associare un ID gruppo di messaggi a un messaggio. Se non si fornisce un ID di gruppo di messaggi, l'azione non viene completata.

Se più host (o diversi thread sullo stesso host) inviano messaggi con lo stesso ID di gruppo di messaggi a una coda FIFO, Amazon SQS li consegna nell'ordine in cui sono arrivati per l'elaborazione. Per garantire che Amazon SQS conservi l'ordine nel quale i messaggi vengono inviati e ricevuti, i mittenti devono inviare ciascun messaggio con un ID di gruppo di messaggi univoco.

Per maggiori informazioni, consulta la sezione FIFO Queue Logic nell'Amazon SQS Developer Guide.

D: Le code FIFO di Amazon SQS supportano più produttori?

Sì. Uno o più produttori possono inviare messaggi a una coda FIFO. I messaggi vengono memorizzati nell'ordine in cui sono ricevuti correttamente da Amazon SQS.

Se più produttori inviano messaggi in parallelo senza attendere la risposta di esito positivo delle azioni SendMessage o SendMessageBatch, l'ordine fra i produttori può non essere rispettato. La risposta delle azioni SendMessage or SendMessageBatch contiene la sequenza d'ordine finale utilizzata dalle code FIFO per collocare i messaggi nella coda in modo che il codice di più produttori in parallelo possa determinare l'ordine finale dei messaggi nella coda.

D: Le code FIFO di Amazon SQS supportano più consumer?

Le code FIFO di Amazon SQS non distribuiscono messaggi da uno stesso gruppo di messaggi a più di un consumer alla volta. Tuttavia, se la coda FIFO dispone di più gruppi di messaggi, è possibile sfruttare i consumer in parallelo, consentendo ad Amazon SQS di distribuire messaggi da gruppi di messaggi diversi a consumer differenti.

D: Posso utilizzare una coda DLQ con code FIFO?

Sì. Tuttavia, una coda DLQ FIFO va utilizzata con una coda FIFO. (Analogamente, una coda DLQ standard può essere utilizzata solo con una coda standard.)

D: Qual è il limite di throughput per una coda FIFO di Amazon SQS?

Di default, le code FIFO supportano fino a 3.000 messaggi al secondo con la divisione in batch o fino a 300 messaggi al secondo (300 operazioni di invio, ricezione o eliminazione al secondo) senza divisione in batch. Per richiedere un aumento dei limiti, esegui una richiesta di supporto.

D: Sono previste limitazioni specifiche per gli attributi delle code FIFO?

Il nome di una coda FIFO deve terminare con il suffisso .fifo. Il suffisso viene conteggiato nel limite del nome della coda di 80 caratteri. Per determinare se una coda è FIFO, verifica che il suo nome termini con tale suffisso.

Sicurezza e affidabilità

D: Qual è il livello di affidabilità dello storage dei dati in Amazon SQS?

Amazon SQS memorizza tutte le code di messaggi e i messaggi all'interno di una singola regione AWS ad elevata disponibilità, su diverse zone di disponibilità; in questo modo il messaggio può essere reperibile anche se in un computer, una rete o una zona di disponibilità dovessero verificarsi guasti. Per ulteriori informazioni, consulta Regions and Availability Zones nella Guida per l'utente di Amazon Relational Database Service.

D: In che modo è possibile proteggere i messaggi nelle code?

Sono disponibili meccanismi di autenticazione per accertare che i messaggi memorizzati nelle code di Amazon SQS siano protetti da accessi non autorizzati. Puoi controllare chi può inviare messaggi a una coda e chi può riceverne da una coda. Per maggiore sicurezza, puoi creare un'applicazione in modo che crittografi i messaggi prima che vengono messi nella coda.

Amazon SQS dispone di un proprio sistema di autorizzazioni basato sulle risorse, che impiega policy scritte con la stessa sintassi delle policy di AWS Identity and Access Management (IAM) come in IAM, ad esempio, è possibile usare variabili. Per maggiori informazioni, consulta la sezione Amazon SQS Policy Examples nell'Amazon SQS Developer Guide.

Amazon SQS supporta i protocolli HTTP over SSL (HTTPS) e Transport Layer Security (TLS). La maggior parte dei client sono in grado di utilizzare le versioni più recenti di TLS senza modificare il codice o la configurazione. Amazon SQS supporta le versioni 1.0, 1.1 e 1.2 del protocollo Transport Layer Security (TLS) in tutte le regioni.

D: Perché esistono le operazioni separate ReceiveMessage e DeleteMessage?

Quando Amazon SQS ti restituisce un messaggio, quel messaggio resta nella coda, che tu l'abbia ricevuto o no. Sei tu a decidere se vuoi eliminare il messaggio e la richiesta di eliminazione conferma che hai terminato l'elaborazione del messaggio.

Se non elimini il messaggio, Amazon SQS lo consegnerà di nuovo nel momento in cui giunge un'altra richiesta di ricezione. Per ulteriori informazioni, consulta la sezione Visibility Timeout nell'Amazon SQS Developer Guide.

D: Un messaggio eliminato può essere ricevuto di nuovo?

No. Le code FIFO non introducono mai messaggi duplicati.

Per le code standard, in casi particolari, è possibile che un messaggio precedentemente eliminato venga ricevuto una seconda volta. 

D: Cosa succede se viene inoltrata una richiesta DeleteMessage su un messaggio già eliminato?

Quando inoltri una richiesta DeleteMessage su un messaggio già eliminato, Amazon SQS restituisce una risposta di operazione riuscita.

Crittografia lato server (SSE)

D: Quali sono i vantaggi della crittografia lato server (SSE) per Amazon SQS?

La crittografia lato server (SSE) consente di trasmettere dati sensibili in code crittografate. SSE protegge il contenuto dei messaggi in code Amazon SQS utilizzando chiavi gestite in AWS Key Management Service (AWS KMS). SSE crittografa i messaggi non appena Amazon SQS li riceve. I messaggi sono archiviati in forma crittografata e Amazon SQS li decrittografa solo quando vengono inviati a un consumer autorizzato.

Per ulteriori informazioni, consulta la sezione Protecting Data Using Server-Side Encryption (SSE) and AWS KMS nell'Amazon SQS Developer Guide

D: È possibile utilizzare SNS, Cloud Watch Events ed S3 Events con code crittografate?

Sì. Per farlo è necessario abilitare la compatibilità tra i servizi AWS (ad esempio Amazon CloudWatch Events, Amazon S3 e Amazon SNS) e le code con SSE. Per informazioni dettagliate, consulta la sezione Compatibility dell'SQS Developer Guide.  

D: In quali regioni sono disponibili le code con SSE?

La crittografia lato server per Amazon SQS è disponibile nelle seguenti regioni: Asia Pacifico (Mumbai, Osaka, Seoul, Singapore, Sydney e Tokyo), Canada (Centrale), UE (Francoforte, Irlanda, Londra e Parigi), Sud America (San Paolo), Stati Uniti occidentali (California settentrionale, Oregon), Stati Uniti orientali (Virginia settentrionale, Ohio) e GovCloud (Stati Uniti).

D: Come si abilita SSE per una coda Amazon SQS nuova o esistente?

Per abilitare SSE per una coda nuova o esistente con l'API Amazon SQS, bisogna specificare l'ID della chiave master del cliente (CMK): l'alias, l'ARN dell'alias, l'ID della chiave o l'ARN della chiave di una CMK gestita da AWS o di una CMK personalizzata impostando l'attributo KmsMasterKeyId dell'azione CreateQueue o SetQueueAttributes.

Per istruzioni dettagliate, consulta le sezioni Creating an Amazon SQS Queue with Server-Side Encryption e Configuring Server-Side Encryption (SSE) for an Existing Amazon SQS Queue nell'Amazon SQS Developer Guide.

D: Quali tipi di code Amazon SQS possono usare SSE?

SSE è supportato sia dalle code standard sia dalle code FIFO.

D: Quali permessi servono per utilizzare SSE con Amazon SQS?

Prima di poter utilizzare SSE, occorre configurare le policy chiave AWS KMS per permettere la crittografia delle code e la crittografia e decrittografia dei messaggi.

Per abilitare SSE per una coda, si può utilizzare la chiave master del cliente (CMK) per Amazon SQS gestita da AWS o una CMK personalizzata. Per ulteriori informazioni, consulta la sezione Customer Master Keys nell'AWS KMS Developer Guide.

Per inviare messaggi a una coda crittografata, il produttore deve avere i permessi kms:GenerateDataKey e kms:Decrypt per la CMK.

Per ricevere messaggi da una coda crittografata, il consumer deve avere il permesso kms:Decrypt per qualsiasi CMK utilizzata per crittografare il messaggio nella coda specificata. Se la coda agisce come una coda DLQ, il consumer deve avere l'autorizzazione kms:Decrypt per qualsiasi CMK utilizzata per crittografare il messaggio nella coda specificata.

Per ulteriori informazioni, consultare What Permissions Do I Need to Use SSE? nella Amazon SQS Developer Guide.

D: Ci sono costi relativi all'utilizzo di SSE con Amazon SQS?

Non ci sono costi supplementari di Amazon SQS. Tuttavia ci sono costi associati alle chiamate da Amazon SQS ad AWS KMS. Per ulteriori informazioni, consulta la sezione relativa ai prezzi di AWS Key Management Service.

I costi di utilizzo di AWS KMS dipendono dal periodo di riutilizzo della chiave dati configurata per le tue code. Per ulteriori informazioni, consulta le sezioni How Do I Estimate My AWS KMS Usage Costs? nella Amazon SQS Developer Guide.

D: Che cosa crittografa SSE per Amazon SQS e in che modo?

SSE crittografa il corpo di un messaggio in una coda Amazon SQS.

SSE non crittografa gli elementi seguenti:

  • Metadata della coda (nome e attributo della coda)
  • Metadati del messaggio (ID messaggio, time stamp e attributo)
  • Parametri della coda

Amazon SQS genera chiavi dati basate sulla chiave master del cliente (CMK) per Amazon SQS gestita da AWS o una CMK personalizzata per fornire una crittografia della busta e la decrittografia di messaggi per un periodo di tempo configurabile (da 1 minuto a 24 ore).

Per ulteriori informazioni, consultare What Does SSE for Amazon SQS Encrypt? nella Amazon SQS Developer Guide.

D: Quali algoritmi utilizza SSE per Amazon SQS per crittografare i messaggi?

SSE usa l'algoritmo AES-GCM 256.

D: SSE limita le transazioni al secondo (TPS) o il numero di code che possono essere create con Amazon SQS?

SSE non limita il throughput (TPS) di Amazon SQS. Il numero di code SSE che possono essere create è limitato dagli elementi seguenti:

  • Il periodo di riutilizzo della chiave dati (da 1 minuto a 24 ore).
  • Il limite per account di AWS KMS (100 TPS per impostazione predefinita).
  • Il numero di utenti o account IAM che accedono alle code.
  • L'esistenza di un backlog di grandi dimensioni (un backlog importante richiede più chiamate AWS KMS).

Per esempio, supponiamo i limiti seguenti:

  • Hai impostato il periodo di riutilizzo della chiave dati a 5 minuti (300 secondi).
  • Il tuo account KMS ha un limite predefinito di 100 TPS.
  • Usi una coda Amazon SQS senza un backlog e con 1 utente IAM per
  • le azioni SendMessage o ReceiveMessage su tutte le code.

In questo caso puoi calcolare il numero massimo teorico di code Amazon SQS con SSE come segue:

300 secondi × 100 TPS/1 utente IAM = 30.000 code

D: Come si stimano i costi di utilizzo di AWS KMS?

Per prevedere i costi e capire meglio la tua fattura AWS, è necessario sapere con quale frequenza Amazon SQS utilizza la tua CMK.

Nota: sebbene la formula seguente possa fornire un'idea molto precisa dei costi previsti, i costi effettivi possono essere più elevati a causa della distribuzione che caratterizza Amazon SQS.

Per calcolare il numero di richieste API per coda (R), usa la formula seguente:

R = B / D * (2 * P + C)

B è il periodo di fatturazione (in secondi)

D è il periodo di riutilizzo della chiave di dati (in secondi).

P è il numero di entità generatrici che inviano alla coda Amazon SQS.

C è il numero di entità utilizzatrici che ricevono dalla coda Amazon SQS.

Importante: in generale, le entità generatrici costano il doppio delle entità utilizzatrici. Per ulteriori informazioni, consulta la sezione How Does the Data Key Reuse Period Work? nella Amazon SQS Developer Guide.

Se il produttore e l'utilizzatore hanno utenti IAM diversi, il costo aumenta.

Per ulteriori informazioni, consulta le sezioni How Do I Estimate My AWS KMS Usage Costs? nella Amazon SQS Developer Guide

Conformità

D: Amazon SQS è certificato PCI DSS?

Sì. Amazon SQS è certificato PCI DSS livello 1. Per ulteriori informazioni, consulta la pagina Conformità PCI.

D: Amazon SQS è conforme agli standard HIPAA?

Sì, AWS ha esteso il proprio programma di conformità agli standard HIPAA in modo da includere Amazon SQS. Se disponi di un contratto di società in affari o BAA (Business Associate Agreement) con AWS, puoi utilizzare Amazon SQS per creare applicazioni conformi allo standard HIPAA, memorizzare messaggi in transito e trasmettere messaggi, inclusi messaggi contenenti informazioni sanitarie protette.

Se disponi di un BAA con AWS, puoi iniziare subito a utilizzare Amazon SQS. In caso contrario, oppure se hai domande sull'utilizzo di AWS con applicazioni conformi agli standard HIPAA, contattaci.

Nota: se preferisci non trasferire informazioni sanitarie protette tramite Amazon SQS (oppure se le dimensioni dei messaggi sono superiori a 256 KB), puoi inviare payload di messaggi Amazon SQS tramite Amazon S3 utilizzando la Amazon SQS Extended Client Library for Java (Amazon S3 è un servizio conforme agli standard HIPAA, fatta eccezione per Amazon S3 Transfer Acceleration). Per maggiori informazioni, consulta la sezione Using the Amazon SQS Extended Client Library for Java nella Amazon SQS Developer Guide.

Limitazioni e restrizioni

D: Per quanto tempo è possibile conservare i messaggi nelle code Amazon SQS?

Una retention dei messaggi maggiore offre più flessibilità permettendo intervalli più lunghi fra la produzione e il consumo dei messaggi.

Il periodo di retention dei messaggi di Amazon SQS può essere configurato tra 1 minuto e 14 giorni. L'impostazione di default è 4 giorni. Quando il periodo di retention viene raggiunto, i messaggi vengono automaticamente eliminati.

D: Come si configura un periodo di retention dei messaggi maggiore in Amazon SQS?

Per modificare il periodo di retention dei messaggi, configura l'attributo MessageRetentionPeriod tramite la console o usando il metodo Distributiveness. Tramite questo attributo, puoi specificare il numero di secondi di retention di un messaggio in Amazon SQS.

Puoi usare l'attributo MessageRetentionPeriod per impostare il periodo di retention tra 60 secondi (1 minuto) e 1.209.600 secondi (14 giorni). Per ulteriori informazioni su come utilizzare questo attributo di messaggio, consulta il documento Amazon SQS API Reference.

D: Come si configurano le dimensioni massime dei messaggi per Amazon SQS?

Per configurare le dimensioni massime dei messaggi, usa la console o il metodo SetQueueAttributes per impostare l'attributo MaximumMessageSize. Questo attributo specifica il limite del numero di byte che può contenere un messaggio Amazon SQS. Imposta questo limite con un valore compreso tra 1.024 byte (1 KB) e 262.144 byte (256 KB). Per maggiori informazioni, consulta la sezione Using Amazon SQS Message Attributes nell'Amazon SQS Developer Guide.

Per inviare messaggi che superano i 256 KB, usa la Amazon SQS Extended Client Library for Java. Questa libreria permette di inviare messaggi Amazon SQS che contengono riferimenti a un payload di messaggio in Amazon S3, con dimensioni massime di 2 GB.

D: Quali tipi di dati possono essere inclusi in un messaggio?

I messaggi Amazon SQS possono contenere fino a 256 KB di dati di testo, incluso testo XML, JSON e testo non formattato. Sono accettati i seguenti caratteri Unicode:

#x9 | #xA | #xD | [#x20 – #xD7FF] | [#xE000 – #xFFFD] | [#x10000 – #x10FFFF]

Per ulteriori informazioni, consulta la specifica XML 1.0.

D: Quali sono le dimensioni massime possibili per le code di messaggi Amazon SQS?

Una singola coda di messaggi Amazon SQS può contenere un numero illimitato di messaggi. Tuttavia c'è un limite di 120.000 messaggi in volo per una coda standard e di 20.000 per una coda FIFO. I messaggi sono in fase di consegna dopo la ricezione di una coda da un componente di consumo, ma non sono ancora stati cancellati da essa.

D: Quante code di messaggi è possibile creare?

Puoi creare un numero illimitato di code di messaggi.

D: C'è un limite alla lunghezza del nome delle code di messaggi Amazon SQS?

I nomi di coda sono limitati a 80 caratteri.

D: Sono previste restrizioni sui nomi delle code di messaggi Amazon SQS?

I nomi possono contenere caratteri alfanumerici, trattini (-) e trattini bassi (_).

D: È possibile utilizzare più di una volta il nome di una coda di messaggi?

Il nome delle code di messaggi deve essere univoco all'interno dell'account AWS e della regione. Puoi usare nuovamente un nome se elimini la relativa coda di messaggi.

Condivisione di code

D: Come si condivide una coda di messaggi?

È possibile associare un'istruzione di policy di accesso (e specificarne le autorizzazioni) con la coda di messaggi da condividere. Amazon SQS fornisce le API per creare e gestire le istruzioni di policy di accesso:

  • AddPermission
  • RemovePermission
  • SetQueueAttributes
  • GetQueueAttributes

Per ulteriori informazioni, consulta il documento Amazon SQS API Reference.

D: Chi paga l'accesso a una coda condivisa?

L'accesso a una coda condivisa viene addebitato al proprietario della coda.

D: In che modo si identifica l'utente AWS con cui condividere una coda di messaggi?

L'API Amazon SQS utilizza il numero di account AWS per identificare gli utenti AWS.

D: Quali informazioni è necessario fornire a un utente AWS per condividere con lui una coda di messaggi?

Per condividere una coda di messaggi, devi fornire all'utente AWS l'URL completo della coda da condividere. Le operazioni CreateQueue e ListQueues restituiscono questo URL nella risposta.

D: Amazon SQS supporta l'accesso anonimo?

Sì. Puoi configurare una policy di accesso che consente agli utenti anonimi di accedere a una coda di messaggi.

D: In quali casi è consigliato utilizzare l'API Permissions?

L'API Permissions fornisce un'interfaccia per la condivisione dell'accesso a una coda di messaggi per sviluppatori. Può tuttavia concedere privilegi di accesso condizionale o altri casi d'uso avanzati.

D: In quali casi è consigliato usare l'operazione SetQueueAttributes con gli oggetti JSON?

L'operazione SetQueueAttributes supporta la sintassi di policy di accesso completa. Ad esempio, puoi usare la sintassi di policy per limitare l'accesso a una coda di messaggi per indirizzo IP e ora del giorno. Per maggiori informazioni, consulta la sezione Amazon SQS Policy Examples nell'Amazon SQS Developer Guide.

Accesso e regioni del servizio

D: In quali regioni è disponibile Amazon SQS?

Per informazioni sulla disponibilità dei servizi, consulta la tabella delle regioni per l'infrastruttura globale AWS.
Note: Le code FIFO al momento sono disponibili solo nelle regioni Stati Uniti occidentali (Oregon), Stati Uniti orientali (Ohio), Stati Uniti orientali (Virginia settentrionale) e UE (Irlanda). La caratteristica sarà resa disponibile in altre regioni nei prossimi mesi.

D: È possibile condividere messaggi tra code in regioni diverse?

No. Ogni coda di messaggi Amazon SQS è indipendente in ciascuna regione.

D: C'è una differenza di prezzo fra le regioni?

I prezzi di Amazon SQS sono gli stessi in tutte le regioni, tranne nella regione Cina (Pechino). Per maggiori informazioni, visitare prezzi Amazon SQS.

D: Qual è la struttura dei prezzi fra più regioni?

Puoi trasferire dati tra Amazon SQS e Amazon EC2 o AWS Lambda all'interno di una stessa regione senza alcun costo.

Quando trasferisci dati tra Amazon SQS e Amazon EC2 o AWS Lambda in regioni diverse, viene addebitata la tariffa standard per il trasferimento di dati. Per maggiori informazioni, visitare prezzi Amazon SQS.

Ulteriori informazioni sui prezzi di Amazon SQS

Visita la pagina dei prezzi
Ti senti pronto?
Nozioni di base su Amazon SQS
Hai altre domande?
Contattaci