Preguntas frecuentes sobre Amazon SQS

Información general

Amazon SQS proporciona varias ventajas en comparación con la creación de su propio software de administración de colas de mensajes o el uso de sistemas de colas de mensajes comerciales o de código abierto que requieren una inversión de tiempo significativa por anticipado para el desarrollo y la configuración. 

Estas alternativas también requieren constantemente recursos de administración de sistemas y mantenimiento de hardware. A la complejidad de configurar y administrar estos sistemas se suma la necesidad de un almacenamiento redundante de mensajes que garantice que no se pierdan si se produce un fallo en el hardware.

Por su parte, Amazon SQS no requiere tareas administrativas y necesita poca configuración. Además, Amazon SQS funciona a escala masiva y procesa miles de millones de mensajes al día. Puede ampliar o reducir la cantidad de tráfico que envía a Amazon SQS sin ninguna configuración. Además, Amazon SQS ofrece una altísima durabilidad para los mensajes, lo que le aporta confianza a usted y las partes interesadas.

Amazon SNS permite a las aplicaciones enviar mensajes en los que el tiempo es esencial a varios suscriptores a través del mecanismo “push”, lo que elimina la necesidad de comprobar o “sondear” de forma periódica en busca de actualizaciones. Amazon SQS es un servicio de cola de mensajes que utilizan aplicaciones distribuidas para intercambiar mensajes a través del modelo de sondeo y se puede utilizar para desacoplar el envío y la recepción de componentes. 

Si utiliza mensajería con aplicaciones existentes y desea migrar sus mensajes a la nube de manera rápida y sencilla, recomendamos utilizar Amazon MQ. Es compatible con protocolos y API estándares del sector, por lo que puede cambiar de cualquier agente de mensajes basado en estándares a Amazon MQ sin tener que volver a escribir código de mensajería en sus aplicaciones. Si está creando aplicaciones totalmente nuevas en la nube, recomendamos utilizar Amazon SQS y Amazon SNS. Amazon SQS y SNS son servicios de temas y colas de mensajes completamente administrados y ligeros que ajustan su escala sin límites y suministran API simples y fáciles de usar. 

Sí. Las colas FIFO (primero en entrar, primero en salir) conservan el orden exacto en que se envían y reciben los mensajes. Si utiliza una cola FIFO, no tendrá que colocar información de secuenciación en sus mensajes. Para obtener más información, consulte la sección Lógica de colas FIFO en la Guía para desarrolladores de Amazon SQS.

La cola estándar proporciona cierta capacidad FIFO que intenta conservar el orden de los mensajes. Sin embargo, como las colas estándar están diseñadas para ser enormemente escalables empleando una arquitectura altamente distribuida, no se garantiza que se reciban los mensajes en el mismo orden en que se envían.

Las colas estándar proporcionan una entrega de al menos una vez, lo que significa que cada mensaje se entrega al menos una vez.

Las colas FIFO proporcionan un procesamiento único, lo que significa que cada mensaje se entrega una vez y permanece disponible hasta que un consumidor lo procesa y lo elimina. Los duplicados no se introducen en la cola.

Amazon SQS ofrece una cola alojada, fiable y altamente escalable que almacena los mensajes mientras viajan entre aplicaciones o microservicios. Mueve los datos entre componentes de aplicaciones distribuidas y le ayuda a desacoplar esos componentes. Amazon SQS proporciona constructores middleware comunes tales como colas de mensajes fallidos y administración de “píldoras venenosas”. También proporciona una API de servicios web genérica a la que se puede acceder mediante cualquier lenguaje de programación que admita el SDK de AWS. Amazon SQS admite tanto las colas estándar como las colas FIFO.

Con Amazon Kinesis Streams puede procesar streaming de big data en tiempo real y puede leer y volver a reproducir registros en varias aplicaciones de Amazon Kinesis. La biblioteca de clientes de Amazon Kinesis (KCL) entrega todos los registros de una clave de partición determinada al mismo procesador de registros, lo que facilita el desarrollo de varias aplicaciones que lean desde una misma transmisión de Amazon Kinesis (por ejemplo, para realizar un recuento, para agregar y para filtrar).

Para obtener más información, consulte la documentación de Amazon Kinesis.

Sí. Los desarrolladores de Amazon utilizan Amazon SQS para diversas aplicaciones que procesan grandes cantidades de mensajes todos los días. Los procesos empresariales clave de Amazon.com y AWS utilizan Amazon SQS.

Facturación

Solo paga por lo que usa y no hay ninguna cuota mínima.

El costo de Amazon SQS se calcula por solicitud, más los cargos por transferencia de datos correspondientes por los datos que se transfieren fuera de Amazon SQS (a menos que se transfieran a instancias de Amazon Elastic Compute Cloud (EC2) o funciones de AWS Lambda de la misma región). Para obtener información detallada sobre el desglose de precios por tipo de cola y región, consulte Precios de Amazon SQS.

La capa gratuita de Amazon SQS le proporciona un millón de solicitudes al mes sin ningún tipo de costo.

Muchas aplicaciones a pequeña escala pueden funcionar por completo dentro de los límites del nivel gratuito. Sin embargo, es posible que se apliquen cargos por transferencia de datos. Para obtener más información, consulte la sección Precios de Amazon SQS.

El nivel gratuito es una oferta mensual. El uso gratuito no se acumula de un mes a otro.

Sí, por todas las solicitudes que estén fuera de los límites de la capa gratuita. Se cobran todas las solicitudes de Amazon SQS, que se facturan de acuerdo con la misma tarifa.

No. Todas las operaciones de lotes (SendMessageBatch, DeleteMessageBatch y ChangeMessageVisibilityBatch) cuestan lo mismo que otras solicitudes de Amazon SQS. Al agrupar mensajes en lotes, puede reducir los costos de Amazon SQS.

Cuando comienza a usar Amazon SQS, no hay cuotas iniciales. A final de mes, se cargará automáticamente en su tarjeta de crédito el uso de ese mes.

Puede ver los cargos del periodo de facturación actual en cualquier momento en el sitio web de AWS:

  1. Inicie sesión en su cuenta de AWS.
  2. En Su cuenta de servicios web, seleccione Actividad de la cuenta.

Puede etiquetar y realizar un seguimiento de las colas para administrar recursos y costos con etiquetas de asignación de costos. Una etiqueta es una marca con metadatos que incluye un par de valores de clave. Por ejemplo, puede etiquetar las colas por centro de costo y luego clasificar y realizar un seguimiento de los costos con base en dichos centros de costo.

Para obtener más información, consulte el tema sobre etiquetado de colas de Amazon SQS en la Guía para desarrolladores de Amazon SQS. Para obtener más información sobre el etiquetado de asignación de costos de recursos de AWS, consulte Uso de etiquetas de asignación de costos en la Guía del usuario de administración de costos y facturación de AWS.

A menos que se indique lo contrario, nuestros precios no incluyen impuestos y aranceles aplicables, como el IVA o el impuesto sobre la venta.

En el caso de los clientes con una dirección de facturación de Japón, el uso de AWS en cualquier región está sujeto al impuesto de consumo nipón. Para obtener más información, consulte las preguntas frecuentes sobre el impuesto al consumo de Amazon Web Services.

Características, funcionalidades e interfaces

Sí. Puede aumentar el nivel de flexibilidad y escalabilidad de sus aplicaciones al combinar Amazon SQS con servicios informáticos como Amazon EC2, Amazon Elastic Container Service (ECS) y AWS Lambda, además de con servicios de bases de datos y almacenamiento como Amazon Simple Storage Service (Amazon S3) y Amazon DynamoDB.

Puede tener acceso a Amazon SQS mediante la consola de administración de AWS, que lo ayudará a crear colas de Amazon SQS y enviar mensajes con facilidad.

Amazon SQS también proporciona una API de servicios web. También está integrado con los SDK de AWS, lo que le permite trabajar con el lenguaje de programación que prefiera.

Para obtener información sobre las operaciones para las colas de mensajes, consulte la Referencia de la API de Amazon SQS.

Solo el propietario de una cuenta de AWS (o una cuenta de AWS a la que el propietario haya otorgado derechos) puede realizar operaciones en una cola de mensajes de Amazon SQS.

Todos los mensajes disponen de un identificador exclusivo global que Amazon SQS devuelve cuando el mensaje se entrega a la cola de mensajes. El identificador no es necesario para realizar más acciones con el mensaje, pero resulta útil para monitorizar el recibo de un mensaje particular en la cola de mensajes.

Cuando recibe un mensaje de la cola de mensajes, la respuesta incluye un identificador de recepción, que debe proporcionar al eliminar el mensaje.

Para obtener más información, consulte Identificadores de colas y mensajes en la Guía para desarrolladores de Amazon SQS.

En Amazon SQS, puede usar la API o la consola para configurar colas de mensajes fallidos, que reciben mensajes de otras colas de origen. Al configurar una cola de mensajes fallidos, tiene que establecer los permisos adecuados para la redirección de dicha cola con RedriveAllowPolicy.

RedriveAllowPolicy incluye los parámetros del permiso de redirección de la cola de mensajes fallidos. Define qué colas de origen pueden especificar colas de mensajes fallidos como un objeto JSON.

Una vez creada la cola de mensajes fallidos, recibe los mensajes después de que no se pueda completar un número máximo de intentos de procesamiento. Puede usar las colas de mensajes fallidos para aislar mensajes que no se pueden procesar para su posterior análisis.

Para obtener más información, consulte Uso de las colas de mensajes fallidos de Amazon SQS en la guía para desarrolladores de Amazon SQS.

El tiempo de espera de visibilidad es un periodo de tiempo durante el que Amazon SQS evita que otros componentes de consumo reciban y procesen un mensaje. Para obtener más información, consulte Tiempo de espera de visibilidad en la Guía para desarrolladores de Amazon SQS.

Sí. Un mensaje de Amazon SQS puede contener hasta 10 atributos de metadatos. Puede usar los atributos de mensajes para separar el cuerpo de un mensaje de los metadatos que lo describen. Esto permite procesar y almacenar información a mayor velocidad y con más inteligencia, ya que sus aplicaciones no tienen que inspeccionar un mensaje entero para saber cómo procesarlo.

Los atributos de los mensajes de Amazon SQS adoptan la forma de atributos triples nombre-tipo-valor. Los tipos compatibles incluyen cadena, binario y número (incluidos integer, punto flotante y doble). Para obtener más información, consulte Uso de los atributos de mensajes de Amazon SQS en la Guía para desarrolladores de Amazon SQS.

Para determinar el valor de tiempo en cola, puede solicitar el atributo SentTimestamp cuando reciba un mensaje. Al restar dicho valor de los resultados de la hora actual obtendrá el valor de tiempo en cola.

Las latencias típicas para las solicitudes a las API SendMessage, ReceiveMessage y DeleteMessage rondan las decenas o los pocos centenares de milisegundos.

Si no está disponible el identificador de una cuenta de AWS (por ejemplo, cuando el remitente de un mensaje es anónimo), Amazon SQS proporciona la dirección IP.

El sondeo largo de Amazon SQS constituye una nueva manera de recuperar mensajes de las colas de Amazon SQS. Mientras que el sondeo corto normal se responde inmediatamente, incluso si la cola de mensajes que se sondea está vacía, el sondeo largo de no se responde hasta que llegue un mensaje a la cola de mensajes, o hasta que se agote el tiempo de espera.

El sondeo largo hace que la recuperación de los mensajes de la cola de mensajes de Amazon SQS tan pronto como están disponibles sea asequible. El uso del sondeo largo puede reducir el costo de uso de SQS, ya que se reduce el número de recepciones vacías. Para obtener más información, consulte Sondeo largo de Amazon SQS en la Guía para desarrolladores de Amazon SQS.

No. Las llamadas ReceiveMessage de sondeo largo se facturan con la misma tarifa que las llamadas ReceiveMessage de sondeo corto.

En prácticamente todos los casos, el sondeo largo de Amazon SQS es preferible al sondeo corto. Las solicitudes de sondeo largo permiten que los consumidores de la cola reciban los mensajes en cuanto llegan a la cola, a la vez que se reduce la cantidad de instancias ReceiveMessageResponse vacías recibidas.

En conjunto, el sondeo largo de Amazon SQS ofrece un mayor desempeño con un menor costo en la mayoría de los casos de uso. Sin embargo, si su aplicación espera recibir una respuesta inmediata a las llamadas ReceiveMessage, es posible que no pueda utilizar el sondeo largo sin realizar modificaciones en su aplicación.

Por ejemplo, si su aplicación cuenta con un único hilo que realiza sondea varias colas, es posible que no pueda pasar del sondeo corto al largo, ya que el hilo esperará a que se agote el tiempo de espera del sondeo largo en las colas vacías, lo que retrasará el procesamiento de las colas que contienen mensajes.

En tal aplicación, es buena idea usar un único hilo para procesar solo una cola, lo que permite que la aplicación aproveche los beneficios de las llamadas selectivas largas de Amazon SQS.

En general, debería utilizar 20 segundos como máximo para el tiempo de espera del sondeo largo. Como los valores superiores de tiempo de espera del sondeo largo reducen la cantidad de instancias ReceiveMessageResponse vacías devueltas, intente adoptar un valor lo mayor posible.

Si el valor máximo de 20 segundos no es apto para su aplicación (consulte el ejemplo de la pregunta anterior), configure un tiempo de espera del sondeo largo inferior, con 1 segundo como mínimo.

Todos los SDK de AWS utilizan el tiempo de espera de 20 segundos para el sondeo largo de forma predeterminada. Si no utiliza un SDK de AWS para acceder a Amazon SQS, o si ha configurado el SDK de AWS para que tenga un tiempo de espera más corto, es posible que tenga que modificar el cliente de Amazon SQS para que permita solicitudes más largas o para que use un tiempo de espera de las llamadas selectivas más breve.

AmazonSQSBufferedAsyncClient para Java proporciona una implementación de la interfaz AmazonSQSAsyncClient y agrega varias características importantes:

  • El agrupamiento automático de solicitudes SendMessage, DeleteMessage o ChangeMessageVisibility en lotes sin realizar cambios a la aplicación
  • La captura previa de mensajes en un búfer local que permite que la aplicación procese inmediatamente mensajes de Amazon SQS sin esperar a que se recuperen

En conjunto, el agrupamiento automático en lotes y la captura previa incrementan el desempeño y disminuyen la latencia de la aplicación, a la par que reducen los costos al realizar menos solicitudes en Amazon SQS. Para obtener más información, consulte Habilitación del almacenamiento en búfer del lado del cliente y del agrupamiento en lotes de solicitudes en la Guía para desarrolladores de Amazon SQS.

Puede descargar AmazonSQSBufferedAsyncClient como parte del AWS SDK para Java.

No. AmazonSQSBufferedAsyncClient para Java se implementa como sustituto para el existente AmazonSQSAsyncClient.

Si actualiza su aplicación para que utilice el SDK de AWS más reciente y cambia su cliente para que utilice AmazonSQSBufferedAsyncClient en lugar del AmazonSQSAsyncClient, su aplicación aprovechará los beneficios adicionales del agrupamiento automático en lotes y la captura previa.

  1. En la consola de Amazon SQS, seleccione una cola estándar de Amazon SQS.
  2. En Queue Actions, seleccione Suscribir cola a tema SNS del menú desplegable.
  3. En el cuadro de diálogo, seleccione el tema del menú desplegable Elija un tema y haga clic en Suscribir.

Para obtener más información, consulte Suscripción de una cola de Amazon SQS a un tema de Amazon SNS en la Guía para desarrolladores de Amazon SQS.

Sí. Sí, puede borrar todos los mensajes de una cola de mensajes de Amazon SQS con la acción PurgeQueue.

Cuando elimina una cola de mensajes, todos los mensajes enviados previamente a la cola también se eliminarán. Como la cola de mensajes y sus atributos seguirán existiendo, no es necesario volver a configurar la cola de mensajes; puede seguir usándola.

Para eliminar mensajes específicos, utilice las acciones DeleteMessage o DeleteMessageBatch.

Para obtener más información, consulte el tutorial: Depuración de mensajes de una cola de Amazon SQS.

Colas FIFO

Las colas FIFO están disponibles en todas las regiones de AWS donde Amazon SQS está disponible. Haga clic aquí para consultar la disponibilidad de Amazon SQS por región.

Las colas FIFO están diseñadas para no introducir nunca mensajes duplicados. Sin embargo, su productor de mensajes podría introducir duplicados en determinados escenarios; por ejemplo, si el productor envía un mensaje, no recibe una respuesta, y reenvía el mismo mensaje. Las API de Amazon SQS proporcionan la funcionalidad de anulación de duplicación, que evita que su productor de mensajes envíe duplicados. Cualquier duplicado introducido por el productor de mensajes se elimina en un intervalo de anulación de duplicación de 5 minutos.

Para las colas estándar, es posible que ocasionalmente reciba una copia duplicada de un mensaje (entrega al menos de una vez). Si utiliza una cola estándar, debe diseñar sus aplicaciones de modo que sean idempotentes (es decir, que no se vean afectadas negativamente si se procesa el mismo mensaje más de una vez).

Para obtener más información, consulte Procesamiento único en la Guía para desarrolladores de Amazon SQS.

No. Las colas estándar de Amazon SQS (el nuevo nombre para las colas existentes) permanecerán inalteradas, y podrá seguir creando colas estándar. Estas colas seguirán proporcionando la más alta escalabilidad y capacidad de proceso; sin embargo, no tendrá garantizada la ordenación y es posible que se produzcan duplicaciones.

Las colas estándar son adecuadas para muchos escenarios, tales como la distribución del trabajo con varios consumidores idempotentes.

No. Debe elegir el tipo de cola al crearlo. Sin embargo, es posible transferir a una cola FIFO. Para obtener más información, consulte Pasar de una cola estándar a una cola FIFO en la Guía para desarrolladores de Amazon SQS.

Para aprovechar las ventajas de la funcionalidad de la cola FIFO, debe utilizar la última versión del SDK de AWS.

Las colas FIFO usan las mismas acciones de API que las colas estándar y los mecanismos para recibir y eliminar mensajes y cambiar el tiempo de espera de visibilidad son las mismas. Sin embargo, al enviar mensajes, debe especificar un identificador de grupo de mensajes. Para obtener más información, consulte la sección Lógica de colas FIFO en la Guía para desarrolladores de Amazon SQS.

Es posible que algunos servicios de AWS o externos que envían notificaciones a Amazon SQS no sean compatibles con las colas FIFO, a pesar de permitirle configurar una cola FIFO como destino.

En la actualidad, las siguientes características de servicios de AWS no son compatibles con las colas FIFO:

Para obtener información sobre la compatibilidad de otros servicios con las colas FIFO, consulte la documentación de su servicio.

Actualmente, las colas de FIFO no son compatibles con el cliente asíncrono con búfer de Amazon SQS.

Las colas de FIFO son compatibles con la biblioteca de clientes extendida de Amazon SQS para Java y el cliente Java Message Service (JMS) de Amazon SQS.

Las colas FIFO son compatibles con todas las métricas que admiten las colas estándar. Para las colas FIFO, todas las métricas aproximadas devuelven recuentos precisos. Por ejemplo, admiten las siguientes métricas de CloudWatch de AWS:

  • ApproximateNumberOfMessagesDelayed: el número de mensajes de la cola que se retrasan y no están disponibles para su lectura inmediata.
  • ApproximateNumberOfMessagesVisible: el número de mensajes disponibles para recuperar de la cola.
  • ApproximateNumberOfMessagesNotVisible: el número de mensajes que se encuentran en vuelo (enviados a un cliente pero que todavía no han sido eliminados o no han alcanzado el final de su ventana de visibilidad).

Los mensajes se agrupan en una cola FIFO en "paquetes" diferenciados y ordenados. Para cada identificador de grupo de mensajes, todos los mensajes se envían y reciben por riguroso orden. No obstante, es posible que los mensajes con diferentes valores de ID de grupo de mensajes no se envíen y reciban en orden. Debe asociar un ID de grupo de mensajes al mensaje. Si no proporciona un identificador de grupo de mensajes, la acción da error.

Si varios hosts (o hilos diferentes en el mismo host) envían mensajes con el mismo identificador de grupo de mensajes a una cola FIFO, Amazon SQS entrega los mensajes en el orden en que llegan para su procesamiento. Para garantizar que Amazon SQS conserve el orden en que se envían y se reciben los mensajes, asegúrese de que varios remitentes envíen cada mensaje con un único identificador de grupo de mensajes.

Para obtener más información, consulte la sección Lógica de colas FIFO en la Guía para desarrolladores de Amazon SQS.

Sí. Uno o más productores pueden enviar mensajes a una cola FIFO. Los mensajes se almacenan en el orden en que Amazon SQS los recibe correctamente.

Si varios productores envían mensajes en paralelo, sin esperar la respuesta de éxito de las acciones SendMessage o SendMessageBatch, es posible que no se conserve el orden entre los productores. La respuesta de las acciones SendMessage o SendMessageBatch contiene la secuencia final de ordenación que las colas FIFO utilizan para colocar los mensajes en la cola, por lo que su código productor de múltiples paralelos puede determinar el orden final de los mensajes de la cola.

Debido a su diseño, las colas FIFO de Amazon SQS no proveen mensajes desde el mismo grupo de mensajes a más de un consumidor por vez. Sin embargo, si su cola FIFO tiene varios grupos de mensajes, puede aprovechar los consumidores paralelos, lo que le permite a Amazon SQS proveer mensajes desde diferentes grupos de mensajes a diferentes consumidores.

De manera predeterminada, las colas FIFO admiten hasta 3000 mensajes por segundo con agrupación por lotes o hasta 300 mensajes por segundo (300 operaciones de envío, recepción o eliminación por segundo) sin agrupación por lotes. Si necesita un rendimiento mayor, puede habilitar el modo de alto rendimiento para FIFO en la consola de Amazon SQS, que ofrece compatibilidad con hasta 70 000 mensajes por segundo con agrupación por lotes e incluso más con agrupación por lotes. Para obtener un desglose detallado de las cuotas del modo de alto rendimiento de FIFO por región, consulte la documentación de AWS.

El nombre de una cola FIFO debe finalizar con el sufijo .fifo. El sufijo cuenta para el límite del nombre de la cola de 80 caracteres. Para determinar si una cola es FIFO, puede comprobar si el nombre de la cola acaba con el sufijo.

Seguridad y fiabilidad

Amazon SQS almacena todas las colas de mensajes y mensajes en una sola región de AWS de alta disponibilidad con numerosas zonas de disponibilidad (AZ) redundantes, de forma que si se produce un fallo en un equipo, red o zona de disponibilidad, siga pudiendo acceder a los mensajes. Para obtener más información, consulte Regiones y zonas de disponibilidad en la Guía del usuario de Amazon Relational Database Service.

Se ofrecen mecanismos de autenticación para garantizar que los mensajes almacenados en colas de mensajes de Amazon SQS estén protegidos frente a accesos no autorizados. Usted controla quién puede enviar mensajes a la cola de mensajes o recibirlos de ella. Para aumentar la seguridad, puede crear su aplicación de modo que cifre los mensajes antes de colocarlos en una cola de mensajes.

Amazon SQS cuenta con su propio sistema de permisos basados en recursos que utiliza políticas escritas en el mismo lenguaje que las políticas de AWS Identity and Access Management (IAM). Por ejemplo, puede usar variables, al igual que en las políticas de IAM. Para obtener más información, consulte Ejemplos de políticas de Amazon SQS en la Guía para desarrolladores de Amazon SQS.

Amazon SQS es compatible con los protocolos HTTP sobre SSL (HTTPS) y seguridad de la capa de transporte (TLS). La mayoría de los clientes pueden utilizar automáticamente versiones nuevas de TLS sin cambiar el código o la configuración. Amazon SQS es compatible con las versiones 1.0, 1.1 y 1.2 del protocolo de seguridad de la capa de transporte (TLS) en todas las regiones.

Cuando Amazon SQS le devuelve un mensaje, este permanece en la cola de mensajes, con independencia de si usted lo ha recibido o no. Usted debe encargarse de eliminar el mensaje, y la solicitud de eliminación reconoce que ha terminado de procesarlo.

Si no lo elimina, Amazon SQS volverá a enviarlo cuando reciba una nueva solicitud de recepción. Para obtener más información, consulte Tiempo de espera de visibilidad en la Guía para desarrolladores de Amazon SQS.

No. Las colas FIFO nunca introducen mensajes duplicados.

En el caso de colas estándar, en ciertos casos poco probables, es posible que reciba por segunda vez un mensaje eliminado anteriormente. 

Cuando se emite una solicitud DeleteMessage para un mensaje eliminado anteriormente, Amazon SQS devuelve una respuesta de resultado satisfactorio.

Cifrado del lado del servidor (SSE)

El SSE le permite transferir información confidencial en colas cifradas. Proteja el contenido de los mensajes en las colas de Amazon SQS con claves administradas en AWS Key Management Service (AWS KMS). El SSE cifra los mensajes tan pronto como Amazon SQS los recibe. Los mensajes se almacenan de manera cifrada, y Amazon SQS los descifra únicamente cuando se envían a un consumidor autorizado.

Para obtener más información, consulte Protección de datos con cifrado del lado del servidor (SSE) y AWS KMS en la Guía para desarrolladores de Amazon SQS.

Sí. Para hacerlo, necesita activar la compatibilidad entre servicios de AWS (p. ej., Amazon CloudWatch Events, Amazon S3 y Amazon SNS) y las colas con SSE. Si desea leer instrucciones detalladas, consulte la sección de compatibilidad de la Guía para desarrolladores de SQS.  

El cifrado del lado del servidor para Amazon SQS se encuentra disponible en todas las regiones de AWS en las que está disponible Amazon SQS. Haga clic aquí para consultar la disponibilidad de Amazon SQS por región.

Si desea habilitar el SSE para una cola nueva o una existente con la API de Amazon SQS, especifique el ID de la clave maestra de cliente (CMK): el alias, ARN del alias, el ID de la clave o el ARN de la clave de una CMK administrada por AWS o una CMK personalizada mediante la configuración del atributo KmsMasterKeyId de la acción CreateQueue o SetQueueAttributes.

Para obtener instrucciones detalladas, consulte Creación de una cola de Amazon SQS con cifrado del lado del servidor y Configuración de cifrado del servidor (SSE) para una cola de Amazon SQS existente en la Guía para desarrolladores de Amazon SQS.

Las colas estándar y FIFO son compatibles con el SSE.

Antes de poder usar el SSE, debe configurar las políticas de claves de AWS KMS para permitir el cifrado de colas, y el cifrado y descifrado de mensajes.

Para habilitar el SSE para una cola, puede usar la clave maestra de cliente (CMK) administrada por AWS para Amazon SQS o una CMK personalizada. Para obtener más información, consulte Claves maestras de cliente en la Guía para desarrolladores de AWS KMS.

Para enviar mensajes a una cola cifrada, el autor debe tener los permisos kms:GenerateDataKey y kms:Decrypt para la CMK.

Para recibir mensajes de una cola cifrada, el consumidor debe tener el permiso kms:Decrypt para cualquier CMK que se utilice para cifrar los mensajes en la cola especificada. Si la cola funciona como una cola de mensajes fallidos, el consumidor también debe tener el permiso kms:Decrypt para cualquier CMK que se utilice para cifrar los mensajes en la cola de origen.

Para obtener más información, consulte ¿Qué permisos necesito para usar SSE? en la Guía para desarrolladores de Amazon SQS.

No se aplican cargos adicionales de Amazon SQS. Sin embargo, sí se aplican cargos por las llamadas desde Amazon SQS hacia AWS KMS. Para obtener más información, consulte Precios de AWS Key Management Service.

Los cargos por el uso de AWS KMS dependen del periodo de reutilización de claves de datos configurado para sus colas. Para obtener más información, consulte ¿Cómo puedo calcular mis costos de uso de AWS KMS? en la Guía para desarrolladores de Amazon SQS.

El SSE cifra el cuerpo de un mensaje en una cola de Amazon SQS.

El SSE no cifra los siguientes componentes:

  • Metadatos de la cola (atributos y nombre de la cola)
  • Metadatos del mensaje (ID de mensaje, marca temporal y atributos)
  • Métricas anteriores a la cola

Amazon SQS genera claves de datos basadas en la clave maestra de cliente (CMK) para Amazon SQS administrada por AWS o una CMK personalizada para brindar cifrado de sobre y descifrado de mensajes para un periodo de tiempo configurable (de 1 minuto a 24 horas).

Para obtener más información, consulte ¿Qué elementos cifra el SSE para Amazon SQS? en la Guía para desarrolladores de Amazon SQS.

El SSE usa el algoritmo AES-GCM 256.

El SSE no limita el rendimiento (TPS) de Amazon SQS. El número de colas con SSE que puede crear está limitado por:

  • El periodo de reutilización de la clave de datos (de 1 minuto a 24 horas).
  • La cuota por cuenta de AWS KMS (100 TPS de forma predeterminada).
  • El número de cuentas o usuarios de IAM que accede a las colas.
  • La existencia de un trabajo pendiente grande (un trabajo pendiente de mayor tamaño requiere más llamadas a AWS KMS).

Por ejemplo, imaginemos el siguiente caso:

  • Usted define el período de reutilización de claves de datos en 5 minutos (300 segundos).
  • Su cuenta de KMS tiene una cuota predeterminada de TPS de AWS KMS de 100 TPS.
  • Usted utiliza una cola de Amazon SQS sin una lista de tareas pendientes y con 1 usuario de IAM para las acciones SendMessage o ReceiveMessage en todas las colas.

En este caso, puede calcular el máximo teórico de colas de Amazon SQS con SSE de la siguiente manera:

300 segundos × 100 TPS / 1 usuario de IAM = 30 000 colas

Para predecir los costos y comprender mejor su factura de AWS, debería saber con qué frecuencia Amazon SQS utiliza su CMK.

Nota: Si bien la siguiente fórmula puede brindarle una muy buena idea de los costos esperados, los costos reales podrían ser más elevados debido a la naturaleza distribuida de Amazon SQS.

Para calcular el número de solicitudes de API por cola (S), utilice la siguiente fórmula:

S = F / D * (2 * P + C)

F es el periodo de facturación (en segundos)

D es el periodo de reutilización de claves de datos (en segundos)

P es el número de entidades principales de producción que envían a la cola de Amazon SQS.

C es el número de entidades principales de consumo que reciben desde la cola de Amazon SQS.

Importante: En general, las entidades principales de producción generan el doble del costo que las entidades principales de consumo. Para obtener más información, consulte ¿Cómo funciona el periodo de reutilización de la clave de datos? en la Guía para desarrolladores de Amazon SQS.

Si el autor y el consumidor tienen diferentes usuarios de IAM, el costo aumenta.

Para obtener más información, consulte ¿Cómo puedo calcular mis costos de uso de AWS KMS? en la Guía para desarrolladores de Amazon SQS.

Conformidad

Sí. Amazon SQS dispone de la certificación PCI DSS Nivel 1. Para obtener más información, consulte Conformidad con PCI.

Sí, AWS amplió su programa de conformidad con HIPAA para incluir Amazon SQS como un servicio compatible con HIPAA. Si ha formalizado un acuerdo de socio empresarial (BAA) con AWS, puede usar Amazon SQS para crear aplicaciones en conformidad con HIPAA, almacenar mensajes en tránsito y transmitir mensajes, incluidos aquellos que contengan información sanitaria protegida (PHI).

Si ya cuenta con un BAA con AWS, puede empezar a usar Amazon SQS inmediatamente. Si no tiene un BAA o si tiene otras preguntas acerca del uso de AWS en sus aplicaciones en conformidad con HIPAA, contacte con nosotros para obtener más información.

Nota: Si prefiere no transmitir PHI mediante Amazon SQS (o si tiene mensajes cuyo peso sea mayor que 256 KB), también puede enviar cargas de mensajes de Amazon SQS a través de Amazon S3 con la biblioteca de clientes ampliada de Amazon SQS para Java (Amazon S3 es un servicio que cumple con los requisitos de HIPAA, excepto el uso de Amazon S3 Transfer Acceleration). Para obtener más información, consulte Utilizar la biblioteca de clientes ampliada de Amazon SQS para Java en la Guía para desarrolladores de Amazon SQS.

Límites y restricciones

La prolongación de la retención de mensajes ofrece mayor flexibilidad y mayores intervalos entre la producción y el consumo de los mensajes.

Puede configurar el periodo de retención de mensajes de Amazon SQS en un valor que vaya de 1 minuto a 14 días. El valor predeterminado es 4 días. Una vez alcanzado el límite de retención de mensajes, estos se eliminarán automáticamente.

Para configurar el periodo de retención de mensajes, defina el atributo MessageRetentionPeriod con la consola o el método Distributiveness. Use este atributo para especificar la cantidad de segundos que un mensaje se retendrá en Amazon SQS.

Puede usar el atributo MessageRetentionPeriod para configurar el periodo de retención de 60 segundos (1 minuto) a 1 209 600 segundos (14 días). Para obtener más información sobre cómo trabajar con este atributo de los mensajes, consulte la Referencia sobre la API de Amazon SQS.

Para configurar el tamaño de mensaje máximo, use la consola o el método SetQueueAttributes para configurar el atributo MaximumMessageSize. Este atributo especifica el número de bytes que puede tener un mensaje de Amazon SQS. Configure el atributo entre 1024 bytes (1 KB) y 262 144 bytes (256 KB). Para obtener más información, consulte Uso de los atributos de mensajes de Amazon SQS en la Guía para desarrolladores de Amazon SQS.

Para enviar mensajes que superen los 256 KB, use la biblioteca de clientes ampliada de Amazon SQS para Java. Esta biblioteca le permite enviar un mensaje de Amazon SQS que contenga una referencia a una carga de mensajes de Amazon S3 que puede tener un tamaño de hasta 2 GB.

Los mensajes de Amazon SQS pueden contener un máximo de 256 KB de datos de texto, incluidos XML, JSON y texto sin formato. Se aceptan los siguientes caracteres Unicode:

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

Para obtener más información, consulte la Especificación XML 1.0.

Una sola cola de mensajes de Amazon SQS puede contener una cantidad ilimitada de mensajes. Sin embargo, el número de mensajes en tránsito para las colas estándar está limitado a una cuota de 120 000 y de 20 000 para las colas FIFO. Los mensajes se encuentran en proceso cuando se han recibido de la cola por un componente de consumo, pero no se han eliminado de esta.

Puede crear cualquier cantidad de colas de mensajes.

Los nombres de cola están limitados a 80 caracteres.

Puede usar caracteres alfanuméricos, guiones (-) y guiones bajos (_).

El nombre de una cola de mensajes debe ser único en la cuenta y región de AWS. Si elimina una cola de mensajes, podrá volver a utilizar su nombre.

Uso compartido de una cola

Puede asociar un enunciado de política de acceso (y especificar los permisos concedidos) con la cola de mensajes que desea compartir. Amazon SQS proporciona API para la creación y la administración de enunciados de políticas de acceso:

  • AddPermission
  • RemovePermission
  • SetQueueAttributes
  • GetQueueAttributes

Para obtener más información, consulte la Referencia de la API de Amazon SQS.

El propietario de la cola de mensajes es quien paga el acceso compartido a la cola.

La API de Amazon SQS utiliza el número de cuenta de AWS para identificar a los usuarios de AWS.

Para compartir una cola de mensajes con un usuario de AWS, proporcione la dirección URL completa de la cola de mensajes que desea compartir. Las operaciones CreateQueue y ListQueues devuelven esta dirección URL en sus respuestas.

Sí. Puede configurar una política de acceso que admita que usuarios anónimos accedan a una cola de mensajes.

La API de permisos constituye una interfaz para compartir el acceso a una cola de mensajes con los desarrolladores. Sin embargo, esta API no puede permitir el acceso condicional ni admite casos de uso más avanzados.

La operación SetQueueAttributes admite el lenguaje de la política de acceso completo. Por ejemplo, puede usar el lenguaje de la política para restringir el acceso a una cola de mensajes por dirección IP y hora del día. Para obtener más información, consulte Ejemplos de políticas de Amazon SQS en la Guía para desarrolladores de Amazon SQS.

Acceso al servicio y regiones

Para obtener información sobre la disponibilidad de los servicios en las regiones, consulte la Tabla de regiones de la infraestructura global de AWS.

No. Cada cola de mensajes de Amazon SQS es independiente en cada región.

Los precios de Amazon SQS son los mismos en todas las regiones, excepto China (Pekín). Para obtener más información, consulte la página Precios de Amazon SQS.

Puede transferir datos entre Amazon SQS y Amazon EC2 o AWS Lambda dentro de una región sin cargos.

Si transfiere datos entre Amazon SQS y Amazon EC2 o AWS Lambda en regiones distintas, se le cobrarán las tarifas estándar de transferencia de datos. Para obtener más información, consulte la página Precios de Amazon SQS.

Colas de mensajes fallidos

Una cola de mensajes fallidos es una cola de Amazon SQS a la cual una cola de origen puede enviar mensajes si la aplicación consumidora de la cola de origen no puede consumir los mensajes correctamente. Las colas de mensajes fallidos facilitan el manejo de los errores de consumo de mensajes y administran el ciclo de vida de los mensajes que no se consumieron. Puede configurar una alarma para todos los mensajes entregados a una cola de mensajes fallidos, examinar registros en busca de excepciones que puedan haber causado que estos mensajes se envíen a la cola y analizar el contenido de los mensajes para diagnosticar problemas en la aplicación consumidora. Una vez que recupere su aplicación consumidora, podrá volver a dirigir los mensajes de la cola de mensajes fallidos a la cola de origen.

Cuando crea la cola de origen, Amazon SQS le permite especificar una cola de mensajes fallidos (DLQ) y la condición bajo la cual SQS debería trasladar los mensajes a ella. La condición es la cantidad de veces que un consumidor puede recibir un mensaje de la cola, definida como maxReceiveCount. Esta configuración de una cola de mensajes fallidos con una cola de origen y maxReceiveCount se conoce como política de redireccionamiento. Amazon SQS está diseñado para que, cuando ReceiveCount para un mensaje exceda maxReceiveCount para una cola, se traslade el mensaje a una cola de mensajes fallidos (con su ID de mensaje original). Por ejemplo, si la cola de origen tiene una política de redireccionamiento con maxReceiveCount establecido en el número cinco, y el consumidor de la cola de origen recibe un mensaje seis veces sin consumirlo correctamente, SQS trasladará el mensaje a la cola de mensajes fallidos.

La política de redireccionamiento administra la primera mitad del ciclo de vida de los mensajes sin consumir trasladándolos de una cola de origen a una cola de mensajes fallidos. Ahora, el redireccionamiento de la cola de mensajes fallidos a la cola de origen completa de manera eficiente el ciclo devolviendo aquellos mensajes a su cola de origen, como se muestra debajo.

Funcionamiento de las zonas locales de AWS

En primera instancia, le permite investigar una muestra de mensajes disponibles en la cola de mensajes fallidos al mostrarle los atributos de los mensajes y los metadatos relacionados. Luego, una vez que investigó los mensajes, puede devolverlos a sus colas de origen. También puede seleccionar la velocidad de redireccionamiento para configurar la rapidez con la que Amazon SQS trasladará los mensajes desde la cola de mensajes fallidos hasta la cola de origen.

Sí. Sin embargo, con una cola FIFO debe usar una cola FIFO de mensajes fallidos. (Igualmente, solo puede usar una cola estándar de mensajes fallidos con una cola estándar).