Visão geral

P: Quais são os benefícios do Amazon SQS em comparação com os sistemas de enfileiramento de mensagens desenvolvidos internamente ou em pacotes?

Em comparação com a criação do seu próprio software, o Amazon SQS disponibiliza várias vantagens para o gerenciamento de filas de mensagens ou para o uso de sistemas de enfileiramento de mensagens comerciais ou de código aberto que exigem um tempo inicial significativo para o desenvolvimento e a configuração.

Essas alternativas exigem manutenção de hardware contínua e recursos de administração de sistemas. A complexidade de configurar e gerenciar esses sistemas é agravada pela necessidade de um armazenamento redundante de mensagens que garanta que elas não serão perdidas no caso de falha do hardware.

Por outro lado, o Amazon SQS não exige sobrecarga de tarefas administrativas e necessita de pouca configuração. O Amazon SQS funciona em grande escala e processa bilhões de mensagens por dia. É possível aumentar ou reduzir a escala vertical da quantidade de tráfego que você envia sem precisar de nenhuma configuração. O Amazon SQS também proporciona uma resiliência de mensagens substancialmente alta, oferecendo a você e às partes interessadas ainda mais segurança.

P: Qual a diferença entre o Amazon SQS e o Amazon SNS?

O Amazon SNS permite que aplicativos enviem mensagens críticas em termos de tempo para vários assinantes através de um mecanismo de “push”, eliminando a necessidade de verificar periodicamente ou “pesquisar” por atualizações. O Amazon SQS é um serviço de fila de mensagens usado por aplicativos distribuídos para trocar mensagens através de um modelo de sondagem e pode ser usado para desacoplar componentes de envio e recebimento. 

P: Qual a diferença entre o Amazon SQS e o Amazon MQ?

Se você estiver usando sistemas de mensagens com aplicativos existentes e quiser migrar esses sistemas para a nuvem com rapidez e facilidade, recomendamos o Amazon MQ. O Amazon MQ oferece suporte a APIs e protocolos padrão do setor, o que permite mudar de qualquer agente de mensagens baseado em padrões para o Amazon MQ sem necessidade de recriar o código do sistema de mensagens dos aplicativos. Se você estiver criando aplicativos novos na nuvem, recomendamos o Amazon SQS e o Amazon SNS. O Amazon SQS e o Amazon SNS são serviços gerenciados de filas de mensagens e tópicos que escalam de forma praticamente infinita e oferecem APIs simples e fáceis de usar. 

P: O Amazon SQS oferece ordenação de mensagens?

Sim. As filas first-in-first-out (FIFO, primeiro a entrar, primeiro a sair) preservam a ordem exata de envio e recebimento das mensagens. Se você utilizar uma fila FIFO, não é necessário inserir informações de sequenciamento nas mensagens. Por obter mais informações, consulte a lógica da fila FIFO no Guia do desenvolvedor do Amazon SQS.

As filas padrão fornecem um recurso de FIFO flexível que tenta preservar a ordem das mensagens. Entretanto, como as filas padrão foram criadas para ser altamente escaláveis, utilizando uma arquitetura altamente distribuída, não há garantias de recebimento de mensagens na ordem exata de envio.

P: O Amazon SQS garante a entrega das mensagens?

As filas padrão oferecem entrega pelo menos uma vez, ou seja, cada mensagem é entregue pelo menos uma vez.

As filas FIFO oferecem processamento exatamente uma vez, ou seja, cada mensagem é entregue uma vez e continua disponível até ser processada e excluída por um consumidor. As repetições não são introduzidas na fila.

P: Qual a diferença entre o Amazon SQS e o Amazon Kinesis Streams?

O Amazon SQS oferece uma fila hospedada confiável e altamente escalável para armazenar mensagens enquanto se deslocam entre aplicativos ou microsserviços. Ele movimenta dados entre os componentes distribuídos do aplicativo e ajuda a desacoplá-los. O Amazon SQS oferece construções de middleware comuns, como dead letter queues e gerenciamento tipo poison-pill. Também oferece uma API de web services genéricos e pode ser acessado por qualquer linguagem de programação suportada pelo AWS SDK. O Amazon SQS oferece suporte para filas padrão e FIFO.

Os Amazon Kinesis Stream permitem o processamento em tempo real para o streaming de big data, além da capacidade de leitura e reprodução dos registros para diversos aplicativos Amazon Kinesis. A Biblioteca de cliente do Amazon Kinesis (KCL) fornece todos os registros de uma determinada chave de partição para o mesmo processador de registros, facilitando a criação de vários aplicativos de leitura do mesmo Amazon Kinesis Stream (por exemplo, para contar, agregar ou filtrar).

Para obter mais informações, consulte a documentação do Amazon Kinesis.

P: A Amazon utiliza o Amazon SQS para seus próprios aplicativos?

Sim. Os desenvolvedores da Amazon usam o Amazon SQS para várias aplicações que processam grandes números de mensagens todos os dias. Processos empresariais essenciais da Amazon.com e da Amazon Web Services usam o Amazon SQS.

Faturamento

P: Qual é o custo do Amazon SQS?

Você paga apenas pelo que utilizar e não há taxa mínima.

O custo do Amazon SQS é calculado de acordo com a solicitação, além das cobranças por transferência de dados para dados transferidos para fora do Amazon SQS (exceto quando são transferidos para instâncias do Amazon EC2 ou funções do AWS Lambda dentro da mesma região). Para obter definições de preços detalhados por tipo de fila e região, consulte Definição de preços do Amazon SQS.

P: O que posso fazer com o nível gratuito do Amazon SQS?

O nível gratuito do Amazon SQS disponibiliza 1 milhão de solicitações por mês sem custo.

Muitas aplicações de pequena escala podem operar inteiramente dentro dos limites do nível gratuito. No entanto, cobranças de transferência de dados ainda podem ser aplicáveis. Para obter mais informações, consulte a definição de preço do Amazon SQS.

O nível gratuito é uma oferta mensal. O uso gratuito não se acumula de um mês a outro.

P: Serei cobrado por todas as solicitações do Amazon SQS?

Sim, para quaisquer solicitações além do nível gratuito. Todas as solicitações do Amazon SQS são passíveis de cobrança, além de serem faturadas usando a mesma taxa.

P: As operações em lote do Amazon SQS custam mais do que outras solicitações?

Não. As operações em lote (SendMessageBatch, DeleteMessageBatch e ChangeMessageVisibilityBatch) custam o mesmo que outras solicitações do Amazon SQS. Ao agrupar mensagens em lotes, você pode reduzir os custos do Amazon SQS.

P: Como serei cobrado pelo uso que eu fizer do Amazon SQS?

Não há taxas iniciais para começar a usar o Amazon SQS. No final do mês, seu cartão de crédito será automaticamente cobrado pelo uso do mês.

Você pode ver suas cobranças para o período de faturamento atual a qualquer momento no site da AWS:

  1. Faça login na sua conta da AWS.
  2. Na opção Your Web Services Account, selecione Account Activity.

P: Como posso monitorar e gerenciar os custos associados com as filas do Amazon SQS?

Você pode aplicar tags e monitorar suas filas para o gerenciamento de recursos e custos usando tags de alocação de custos. Uma tag é um rótulo de metadados compactado de um par de chave-valor. Por exemplo, você pode aplicar tags às suas filas por centro de custo e depois categorizar e monitorar seus custos com base nesses centros de custo.

Para obter mais informações, consulte Como marcar com tags as filas do Amazon SQS no Guia do desenvolvedor do Amazon SQS. Para obter mais informações sobre a marcação de alocação de custos de recursos da AWS, consulte Como usar tags de alocação de custos no Guia do usuário do Faturamento e gerenciamento de custo da AWS.

P: Os preços incluem impostos?

A menos que seja indicado de outra forma, nossos preços não incluem quaisquer taxas ou impostos aplicáveis, como IVA ou imposto sobre vendas aplicável.

Para clientes com endereço de pagamento no Japão, o uso da AWS em qualquer região está sujeito ao imposto sobre utilização japonês. Para obter mais informações, consulte Perguntas frequentes sobre impostos sobre consumo da Amazon Web Services.

Recursos, funcionalidades e interfaces

P: Posso usar o Amazon SQS com outros serviços da AWS?

Sim. Você pode tornar seus aplicativos mais flexíveis e escaláveis usando o Amazon SQS com serviços computacionais, como o Amazon EC2, o Amazon EC2 Container Service (Amazon ECS) e o AWS Lambda, como também com serviços de armazenamento e banco de dados, como o Amazon Simple Storage Service (Amazon S3) e o Amazon DynamoDB.

P: Como faço para interagir com o Amazon SQS?

Você pode acessar o Amazon SQS utilizando o Console de Gerenciamento da AWS, que ajuda você a criar filas do Amazon SQS e enviar mensagens com facilidade.

O Amazon SQS também oferece uma API de web services. Além disso, ele está integrado aos AWS SDKs, permitindo que você trabalhe na linguagem de programação de sua preferência.

P: Quais ações de API estão disponíveis para o Amazon SQS?

Para obter informações sobre operações de fila de mensagens, consulte a Referência de API do Amazon SQS.

P: Quem pode executar operações em uma fila de mensagens?

Apenas um proprietário de conta da AWS (ou uma conta da AWS para a qual o proprietário da conta delegou direitos) pode executar operações em uma fila de mensagens do Amazon SQS.

P: Posso usar o Java Message Service (JMS) com o Amazon SQS?

Sim. Você pode se beneficiar com a escala, o baixo custo e a alta disponibilidade do Amazon SQS sem a preocupação e a alta sobrecarga de ter de executar seu próprio cluster JMS.

A Amazon fornece uma Biblioteca de mensagens Java do Amazon SQS que implementa a especificação JMS 1.1 e usa o Amazon SQS como o provedor do JMS. Para obter mais informações, consulte Como trabalhar com o JMS e o Amazon SQS no Guia do desenvolvedor do Amazon SQS.

P: Como o Amazon SQS identifica mensagens?

Todas as mensagens têm um ID exclusivo global que o Amazon SQS retorna quando a mensagem é entregue à fila de mensagens. O ID não é exigido para executar nenhuma ação subsequente relacionada à mensagem, mas é útil para rastrear o recebimento de uma mensagem específica na fila de mensagens.

Ao receber uma mensagem da fila de mensagens, a resposta incluirá um receipt handle que você deve disponibilizar ao excluir a mensagem.

Por obter mais informações, consulte Identificadores de filas e mensagens no Guia do desenvolvedor do Amazon SQS.

P: Como o Amazon SQS lida com mensagens que não podem ser processadas?

No Amazon SQS, é possível usar a API ou o console para configurar dead letter queues, ou seja, filas que recebem mensagens de outras filas de origem.

Se você criar uma fila em uma dead letter queue, ela receberá mensagens após um número máximo de tentativas de processamento sem sucesso. Você pode usar dead letter queues para isolar mensagens que não podem ser processadas para análise posterior.

Para obter mais informações, consulte “É possível usar uma dead letter queue com filas FIFO?” nesta página e Como usar dead letter queues do Amazon SQS no Guia do desenvolvedor do Amazon SQS.

P: O que é um tempo limite de visibilidade?

O tempo limite de visibilidade é um período em que o Amazon SQS impede que outros componentes de utilização recebam e processem uma mensagem. Para obter mais informações, consulte Tempo limite de visibilidade no Guia do desenvolvedor do Amazon SQS.

P: O Amazon SQS é compatível com metadados de mensagem?

Sim. Uma mensagem do Amazon SQS pode conter até 10 atributos de metadados. Você pode usar atributos de mensagem para separar o corpo de uma mensagem dos metadados que a descrevem. Isso ajuda a processar e armazenar informações com maior velocidade e eficácia, pois os aplicativos não precisam inspecionar uma mensagem inteira antes de entender como processá-la.

Os atributos de mensagem do Amazon SQS assumem a forma de trios nome-tipo-valor. Os tipos compatíveis incluem string, binário e número (inclusive inteiro, ponto de flutuação e duplo). Para obter mais informações, consulte Uso dos atributos de mensagens do Amazon SQS no Guia do desenvolvedor do Amazon SQS.

P: Como posso determinar o valor de tempo na fila?

Para determinar o valor de tempo na fila, você pode solicitar o atributo SentTimestamp quando recebe uma mensagem. A subtração desse valor da hora atual resulta no valor de tempo na fila.

P: Qual é a latência típica do Amazon SQS?

As latências típicas para solicitações das APIs SendMessage, ReceiveMessage e DeleteMessage estão na casa das dezenas ou poucas centenas de milissegundos.

P: Para obter acesso anônimo, qual é o valor do atributo SenderId de uma mensagem?

Quando o ID da conta da AWS não estiver disponível (por exemplo, quando um usuário anônimo enviar uma mensagem), o Amazon SQS disponibilizará o endereço IP.

P: O que é a sondagem longa do Amazon SQS?

A sondagem longa do Amazon SQS é uma forma de recuperar mensagens de suas filas do Amazon SQS. Embora a sondagem curta tradicional tenha retorno imediato, mesmo se a fila de mensagens sendo sondada estiver vazia, a sondagem longa não retorna uma resposta até que uma mensagem chegue na fila de mensagens ou a sondagem longa atinja seu limite de tempo.

A sondagem longa diminui o custo da recuperação de mensagens da sua fila do Amazon SQS assim que as mensagens estiverem disponíveis. O uso da sondagem longa pode reduzir o custo de utilização do SQS, pois é possível reduzir o número de recebimentos vazios. Para obter mais informações, consulte Sondagem longa do Amazon SQS no Guia do desenvolvedor do Amazon SQS.

P: Existe uma cobrança adicional por usar a sondagem longa do Amazon SQS?

Não. As chamadas ReceiveMessage de sondagem longa são faturadas da mesma forma que as chamadas ReceiveMessage de sondagem curta.

P: Quando devo usar a sondagem longa do Amazon SQS e quando devo usar a sondagem curta do Amazon SQS?

Na maioria dos casos, a sondagem longa do Amazon SQS é preferível à sondagem curta. As solicitações de sondagem longa permitem que os consumidores da sua fila recebam mensagens assim que elas chegarem na fila. Ao mesmo tempo, elas reduzem o número de instâncias ReceiveMessageResponse vazias retornadas.

A sondagem longa do Amazon SQS resulta em desempenho superior, a um custo reduzido, para a maioria dos casos de uso. No entanto, se o aplicativo esperar uma resposta imediata de uma chamada ReceiveMessage, é possível que você não consiga utilizar a sondagem longa sem fazer algumas modificações nele.

Por exemplo, se o aplicativo usar um thread único para sondar várias filas, a alternância de sondagem curta para sondagem longa provavelmente não funcionará, pois o thread único esperará pelo limite de tempo da sondagem longa em qualquer fila vazia, adiando o processamento de todas as filas que possam conter mensagens.

Em um aplicativo como esse, é uma boa prática usar um thread único para processar apenas uma fila, permitindo que o aplicativo aproveite os benefícios que a sondagem longa do Amazon SQS proporciona.

P: Qual valor devo usar para meu limite de tempo de sondagem longa?

Em geral, você deve usar uma máximo de 20 segundos para um limite de tempo de sondagem longa. Como valores de limite de tempo de sondagem longa reduzem o número de instâncias ReceiveMessageResponse vazias retornadas, tente definir seu limite de tempo de sondagem longa com o valor mais alto possível.

Se o máximo de 20 segundos não funcionar para a sua aplicação (veja o exemplo na pergunta anterior), defina um limite de tempo de sondagem mais curto, que pode chegar a até 1 segundo.

Todos os AWS SDKs trabalham com o padrão de 20 segundos para sondagens longas. Se você não usa um AWS SDK para acessar o Amazon SQS, ou se você configurou seu AWS SDK para que ele tenha um tempo limite especificamente mais curto, será necessário modificar o cliente do Amazon SQS para permitir solicitações mais longas ou usar um limite de tempo de sondagem longa mais curto.

P: O que é AmazonSQSBufferedAsyncClient para Java?

O AmazonSQSBufferedAsyncClient para Java disponibiliza uma implementação da interface AmazonSQSAsyncClient e adiciona vários recursos importantes:

  • O envio em lote automático de várias solicitações SendMessage, DeleteMessage ou ChangeMessageVisibility sem a necessidade de fazer nenhuma alteração na aplicação
  • A pré-análise de mensagens em um buffer local que permite que a sua aplicação processe imediatamente mensagens por meio do Amazon SQS sem esperar que as mensagens sejam recuperadas

Trabalhando em conjunto, o envio em lote e a pré-análise aumentam o throughput e reduzem a latência da sua aplicação enquanto diminuem seus custos ao fazer menos solicitações ao Amazon SQS. Para obter mais informações, consulte Ativar buffer por parte do cliente e processamento de solicitações em lotes no Guia do desenvolvedor do Amazon SQS.

P: Onde posso fazer download do AmazonSQSBufferedAsyncClient para Java?

Você pode fazer download do AmazonSQSBufferedAsyncClient como parte do AWS SDK para Java.

P: Preciso reescrever meu aplicativo para usar o AmazonSQSBufferedAsyncClient para Java?

Não. O AmazonSQSBufferedAsyncClient para Java foi implementado como uma substituição imediata do AmazonSQSAsyncClient atual.

Se você atualizar o aplicativo para usar o AWS SDK mais recente e alterar o cliente para usar o AmazonSQSBufferedAsyncClient para Java em vez do AmazonSQSAsyncClient, o aplicativo receberá os benefícios agregados de envio em lote automático e pré-análise.

P: Como posso me inscrever em filas de mensagens do Amazon SQS para receber notificações dos tópicos do Amazon SNS?

  1. No console do Amazon SQS, selecione uma fila padrão do Amazon SQS.
  2. Na opção Queue Actions, selecione Subscribe Queue to SNS Topic na lista suspensa.
  3. Na caixa de diálogo, selecione o tópico na lista suspensa Choose a Topic e clique em Subscribe.

Para obter mais informações, consulte Inscrição de uma fila do Amazon SQS em um tópico do Amazon SNS no Guia do desenvolvedor do Amazon SQS.

P: Posso excluir todas as mensagens de uma fila de mensagens sem excluir a fila de mensagens em si?

Sim. Sim, você pode excluir todas as mensagens de uma fila de mensagens do Amazon SQS usando a ação PurgeQueue.

Quando você limpar uma fila de mensagens, todas as mensagens enviadas anteriormente para ela serão excluídas. Como a sua fila de mensagens e seus atributos permanecem, não é necessário reconfigurar a fila de mensagens. Você poderá continuar a utilizá-la.

Para excluir apenas mensagens específicas, use as ações DeleteMessage ou DeleteMessageBatch.

Para obter mais informações, veja este tutorial: Como limpar mensagens de uma fila do Amazon SQS.

Filas FIFO

P: Em quais regiões as filas FIFO estão disponíveis?

Filas FIFO estão disponíveis nas seguintes regiões:

  • Oeste dos EUA (Oregon, Norte da Califórnia)
  • Leste dos EUA (Ohio, Norte da Virgínia)
  • UE (Irlanda, Frankfurt, Londres, Paris, Estocolmo)
  • Ásia-Pacífico (Sydney, Tóquio, Mumbai, Seul, Cingapura)
  • Canadá (Central)
  • América do Sul (São Paulo)
  • China (Ningxia), operada pela NWCD

P: Quantas cópias de uma mensagem eu receberei?

As filas FIFO foram criadas para não introduzir mensagens repetidas. No entanto, o produtor da mensagem pode introduzir repetições em algumas situações: por exemplo, se o produtor envia uma mensagem, não recebe uma resposta e, em seguida, a envia novamente. As APIs do Amazon SQS oferecem funcionalidades de deduplicação que impedem o envio de mensagens repetidas. Qualquer repetição introduzida pelo produtor da mensagem é removida em um intervalo de cancelamento de duplicação de cinco minutos.

Para filas padrão, é possível receber ocasionalmente uma cópia repetida de uma mensagem (entrega única). Se você usar uma fila padrão, é necessário projetar os aplicativos para serem idempotentes (ou seja, não devem ser afetados de modo adverso durante o processamento da mesma mensagem mais de uma vez).

Para obter mais informações, consulte Processamento exatamente uma vez no Guia do desenvolvedor do Amazon SQS.

P: As filas do Amazon SQS utilizadas anteriormente serão alteradas para filas FIFO?

Não. As filas padrão do Amazon SQS (o novo nome das filas existentes) permanecem inalteradas e ainda é possível criar filas padrão. Essas filas continuam a oferecer a maior escalabilidade e capacidade; entretanto, não há garantias de ordem e podem ocorrer repetições.

As filas padrão são adequadas para diversos cenários, como distribuição de trabalho com diversos consumidores idempotentes.

P: Posso converter a fila padrão atual em uma fila FIFO?

Não. Você deve selecionar o tipo de fila ao criá-la. No entanto, não é possível transformar em uma fila FIFO. Para obter mais informações, consulte Mudança de uma fila padrão para uma fila FIFO no Guia do desenvolvedor do Amazon SQS.

P: As filas FIFO do Amazon SQS são compatíveis com versões anteriores?

Para aproveitar a funcionalidade de filas FIFO, você deve utilizar o AWS SDK mais recente.

As filas FIFO usam as mesmas ações de API do que as filas padrão, e a mecânica de recebimento e exclusão de mensagens, bem como de alteração do visibility timeout, são as mesmas. Entretanto, ao enviar mensagens, é necessário especificar um ID de grupo de mensagens. Por obter mais informações, consulte a lógica da fila FIFO no Guia do desenvolvedor do Amazon SQS.

P: Quais serviços da AWS ou serviços externos são compatíveis com as filas FIFO do Amazon SQS?

Alguns serviços da AWS ou externos que enviam notificações para o Amazon SQS podem não ser compatíveis com filas FIFO, apesar de permitirem definir uma fila FIFO como destino.

No momento, os recursos de serviços da AWS a seguir não são compatíveis com filas FIFO:

Para obter informações sobre a compatibilidade de outros serviços com filas FIFO, consulte a documentação do serviço.

P: As filas FIFO do Amazon SQS são compatíveis com o Amazon SQS Buffered Asynchronous Client, a Amazon SQS Extended Client Library for Java ou o cliente do Amazon SQS Java Message Service (JMS)?

No momento, as filas FIFO não são compatíveis com o cliente assíncrono em buffer do Amazon SQS.

As filas FIFO são compatíveis com o Amazon SQS Extended Client Library for Java e o cliente do Amazon SQS Java Message Service (JMS).

P: Quais métricas do AWS CloudWatch são oferecidas pelas filas FIFO do Amazon SQS?

As filas FIFO oferecem suporte a todas as métricas oferecidas pelas filas padrão. Para filas FIFO, todas as métricas aproximadas retornam contagens precisas. Por exemplo, as seguintes métricas da AWS CloudWatch são suportadas:

  • ApproximateNumberOfMessagesDelayed – O número de mensagens na fila que estão atrasadas e indisponíveis para leitura imediata.
  • ApproximateNumberOfMessagesVisible – O número de mensagens disponíveis para recuperação da fila.
  • ApproximateNumberOfMessagesNotVisible – A quantidade de mensagens em andamento (enviadas a um cliente, mas ainda não excluídas ou que atingiram o fim da janela de visibilidade).

P: O que são grupos de mensagens?

As mensagens são agrupadas em "pacotes" distintos e ordenados na fila FIFO. Para cada ID de grupo de mensagens, todas as mensagens são enviadas e recebidas na ordem estrita. No entanto, as mensagens com valores de ID de grupo de mensagens diferentes podem ser enviadas e recebidas fora de ordem. Você deve associar um ID de grupo de mensagens a uma mensagem. Se você não fornecer um ID de grupo de mensagens, a ação resultará em falha.

Se diversos hosts (ou conversas diferentes no mesmo host) enviarem mensagens com o mesmo ID de grupo de mensagens e forem enviados para uma fila FIFO, o Amazon SQS entrega as mensagens na ordem de chegada para processamento. Para garantir que o Amazon SQS preserve a ordem de envio e recebimento das mensagens, assegure que diversos remetentes enviem cada mensagem com um ID de grupo de mensagens único.

Por obter mais informações, consulte a lógica da fila FIFO no Guia do desenvolvedor do Amazon SQS.

P: As filas FIFO do Amazon SQS oferecem suporte a diversos produtores?

Sim. Um ou mais produtores podem enviar mensagens para uma fila FIFO. As mensagens são armazenadas na ordem em que são recebidas pelo Amazon SQS.

Se diversos produtores enviam mensagens em paralelo, sem aguardar pela resposta de sucesso das ações SendMessage ou SendMessageBatch, não é possível preservar a ordem entre os produtores. A resposta das ações SendMessage ou SendMessageBatch contém a sequência final que as filas FIFO utilizam para inserir mensagens na fila. Portanto, o código de produtor paralelo múltiplo pode determinar a ordem final das mensagens na fila.

P: As filas FIFO do Amazon SQS oferecem suporte a diversos consumidores?

Por projeto, as filas FIFO do Amazon SQS não enviam mensagens do mesmo grupo de mensagens a mais de um consumidor por vez. No entanto, se uma fila FIFO tiver vários grupos de mensagens, você poderá interagir com consumidores em paralelo, permitindo que o Amazon SQS envie mensagens de grupos de mensagens diferentes a consumidores distintos.

P: É possível usar uma dead letter queue com filas FIFO?

Sim. No entanto, você deve usar uma dead letter queue FIFO com uma fila FIFO. (De modo semelhante, você pode usar somente uma dead letter queue padrão com uma fila padrão.)

P: Qual o limite de throughput para uma fila FIFO do Amazon SQS?

Por padrão, as filas FIFO dão suporte a até 3.000 mensagens por segundo com agrupamento em lote, ou até 300 mensagens por segundo (300 operações de envio, recebimento ou exclusão por segundo) sem agrupamento em lote. Para solicitar um aumento de limite, envie uma solicitação de suporte.

P: Há algum limite específico para atributos de fila FIFO?

O nome de uma fila FIFO deve terminar com o sufixo .fifo. O sufixo é considerado no limite de 80 caracteres para nomes de fila. Para determinar se uma fila é FIFO, você pode verificar se o nome da fila termina com o sufixo.

Segurança e confiabilidade

P: Qual o nível de confiabilidade do armazenamento de dados no Amazon SQS?

O Amazon SQS armazena todas as filas de mensagens e mensagens em uma única região altamente disponível da AWS, com várias zonas de disponibilidade (AZs) redundantes para que nenhuma falha única de computador, rede ou AZ possa impedir o acesso às mensagens. Para obter mais informações, consulte Regiões e zonas de disponibilidade no Guia do usuário do Amazon Relational Database Service.

P: Como posso proteger as mensagens nas filas de mensagens?

Mecanismos de autenticação garantem que as mensagens armazenadas nas filas de mensagens do Amazon SQS estejam protegidas contra acesso não autorizado. Você pode controlar quem envia mensagens para uma fila de mensagens e quem as recebe de uma fila de mensagens. Para obter maior segurança, você pode criar sua aplicação para criptografar mensagens antes que elas sejam inseridas em uma fila de mensagens.

O Amazon SQS tem seu próprio sistema de permissões baseado em recursos que usa políticas escritas na mesma linguagem das políticas do AWS Identity and Access Management (IAM) por exemplo, você pode usar variáveis, como políticas do IAM. Para obter mais informações, consulte Exemplos de política do Amazon SQS no Guia do desenvolvedor do Amazon SQS.

O Amazon SQS é compatível com os protocolos HTTP over SSL (HTTPS) e Transport Layer Security (TLS). A maioria dos clientes pode negociar automaticamente o uso de versões mais recentes do TLS sem nenhuma mudança de código ou configuração. O Amazon SQS é compatível com as versões 1.0, 1.1 e 1.2 do protocolo Transport Layer Security (TLS) em todas as regiões.

P: Por que existem operações ReceiveMessage e DeleteMessage separadas?

Quando o Amazon SQS retorna uma mensagem para você, essa mensagem permanece na fila de mensagens, mesmo que você não tenha realmente recebido a mensagem. Você é responsável por excluir a mensagem. A solicitação de exclusão confirma que você já acabou de processá-la.

Se você não excluir a mensagem, o Amazon SQS vai entregá-la novamente quando receber outra solicitação de recebimento. Para obter mais informações, consulte Tempo limite de visibilidade no Guia do desenvolvedor do Amazon SQS.

P: Uma mensagem excluída pode ser recebida novamente?

Não. As filas FIFO nunca introduzem mensagens repetidas.

Em raras ocasiões, você poderá receber pela segunda vez uma mensagem excluída previamente nas filas padrão. 

P: O que acontece se eu emitir uma solicitação DeleteMessage em uma mensagem excluída anteriormente?

Quando você emite uma solicitação DeleteMessage em uma mensagem excluída anteriormente, o Amazon SQS retorna uma resposta de êxito.

Criptografia do lado do servidor (SSE)

P: Quais são os benefícios da criptografia do lado do servidor (SSE) para o Amazon SQS?

A SSE permite que você transmita dados confidenciais em filas criptografadas. A SSE protege o conteúdo de mensagens em filas do Amazon SQS usando chaves gerenciadas no AWS Key Management Service (AWS KMS). A SSE criptografa mensagens assim que o Amazon SQS as recebe. As mensagens são armazenadas no formato criptografado e o Amazon SQS as descriptografa apenas quando elas são enviadas para um usuário autorizado.

Para obter mais informações, consulte Proteção de dados usando a criptografia no lado do servidor (SSE) e AWS KMS no Guia do desenvolvedor do Amazon SQS

P: Posso usar SNS, CloudWatch Events e S3 Events com filas criptografadas?

Sim. Para fazer isso, você precisa habilitar a compatibilidade entre os serviços da AWS (por exemplo. Amazon CloudWatch Events, Amazon S3 e Amazon SNS) e as filas com SSE. Para obter instruções detalhadas, consulte a seção de compatibilidade do Guia do desenvolvedor do SQS.  

P: Em quais regiões estão disponíveis filas com SSE?

A criptografia do lado do servidor (SSE) para o Amazon SQS está disponível nas regiões Ásia-Pacífico (Mumbai, Osaka, Seul, Cingapura, Sydney e Tóquio), Canadá (Central), UE (Frankfurt, Irlanda, Londres e Paris), América do Sul (São Paulo), Oeste dos EUA (Norte da Califórnia, Oregon), Leste dos EUA (Norte da Virgínia, Ohio) e GovCloud (EUA).

P: Como posso habilitar a SSE para uma fila do Amazon SQS nova ou atual?

Para habilitar a SSE para uma fila nova ou atual usando a API do Amazon SQS, especifique o ID da CMK, o alias, o ARN do alias, o ID da chave ou o ARN da chave de uma CMK gerenciada pela AWS ou uma CMK personalizada ao configurar o atributo KmsMasterKeyId da ação CreateQueue ou SetQueueAttributes.

Para obter instruções detalhadas, consulte Criar uma fila do Amazon SQS com criptografia no lado do servidor e Configuração de criptografia no lado do servidor (SSE) para uma fila existente do Amazon SQS no Guia do desenvolvedor do Amazon SQS.

P: Quais tipos de fila do Amazon SQS podem usar a SSE?

As filas padrão e FIFO aceitam a SSE.

P: Quais permissões são necessárias para usar a SSE com o Amazon SQS?

Antes de usar a SSE, você precisará configurar as políticas de chave do AWS KMS para permitir a criptografia de filas e mensagens e a descriptografia de mensagens.

Para habilitar a SSE para uma fila, você poderá usar uma CMK do Amazon SQS gerenciada pela AWS ou uma CMK personalizada. Para obter mais informações, consulte Chaves mestre de cliente no Guia do desenvolvedor do AWS KMS.

Para enviar mensagens para uma fila criptografada, o produtor deverá ter as permissões kms:GenerateDataKey e kms:Decrypt para a CMK.

Para receber mensagens de uma fila criptografada, o consumidor deverá ter a permissão kms:Decrypt para qualquer CMK usada para criptografar as mensagens na fila especificada. Se a fila agir como uma dead letter queue, o usuário deverá também ter a permissão kms:Decrypt para qualquer CMK usada para criptografar as mensagens na fila de origem.

Para obter mais informações, consulte Quais permissões são necessárias para usar o SSE? no Guia do desenvolvedor do Amazon SQS.

P: O uso de SSE com o Amazon SQS é cobrado?

Não há cobranças adicionais para o Amazon SQS. No entanto, existem cobranças para chamadas feitas do Amazon SQS para o AWS KMS. Para obter mais informações, consulte a definição de preço do AWS Key Management Service.

As cobranças pelo uso do AWS KMS dependem do período de reutilização de chave de dados configurado para suas filas. Para obter mais informações, consulte Como estimar meus custos de utilização do AWS KMS? no Guia do desenvolvedor do Amazon SQS.

P: Para o Amazon SQS, o que a SSE criptografa e como é feita a criptografia?

A SSE criptografa o corpo de uma mensagem em uma fila do Amazon SQS.

A SSE não criptografa os seguintes componentes:

  • Metadados de fila (nome e atributos da fila)
  • Metadados de mensagens (ID de mensagem, carimbo de data/hora e atributos)
  • Métricas por fila

O Amazon SQS gera chaves de dados baseadas na CMK do Amazon SQS gerenciada pela AWS ou uma CMK personalizada para disponibilizar descriptografia e criptografia de envelope de mensagens por um período configurável (de 1 minuto a 24 horas).

Para obter mais informações, consulte Para o Amazon SQS, o que a SSE criptografa? no Guia do desenvolvedor do Amazon SQS.

P: Qual algoritmo a SSE do Amazon SQS usa para criptografar mensagens?

A SSE usa o algoritmo AES-GCM 256.

P: A SSE limita as transações por segundo (TPS) ou o número de filas que podem ser criadas com o Amazon SQS?

A SSE não limita o throughput (TPS) do Amazon SQS. O número de filas de SSE que você pode criar será limitado pelo seguinte:

  • O período de reutilização da chave de dados (de 1 minuto a 24 horas).
  • O limite por conta do AWS KMS (como padrão, 100 TPS).
  • O número de usuários ou contas do IAM que acessam as filas.
  • A existência de uma grande lista de pendências (uma lista de pendências maior exige mais chamadas do AWS KMS).

Por exemplo, vamos supor os seguintes limites:

  • Defina seu periodo de reutilização de chaves para 5 minutos (300 segundos).
  • Sua conta do KMS tem um limite de TPS do AWS KMS padrão de 100 TPS.
  • Você usa uma fila do Amazon SQS sem um backlog e com um usuário do IAM para
  • ações SendMessage ou ReceiveMessage para todas as filas.

Nesse caso, você poderá calcular o número máximo teórico de filas do Amazon SQS com SSE conforme está descrito abaixo:

300 segundos × 100 TPS/1 usuário do IAM = 30.000 filas

P: Como posso estimar os custos de uso do AWS KMS?

Para prever os custos e entender melhor sua fatura da AWS, é recomendável saber com que frequência o Amazon SQS usa sua CMK.

Observação: embora a fórmula a seguir possa dar a você uma excelente ideia a respeito dos custos esperados, os custos reais poderão ser superiores por conta da natureza distribuída do Amazon SQS.

Para calcular o número de solicitações de APIs por fila (R), use a seguinte fórmula:

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

B é o período de faturamento (em segundos)

D é o período de reutilização da chave de dados (em segundos)

P é o número de principais de produção que enviam para a fila do Amazon SQS.

C é o número de principais de consumo que recebem da fila do Amazon SQS.

Importante: de modo geral, os principais de produção geram o dobro do custo dos principais de consumo. Para obter mais informações, consulte Como funciona o período de reutilização de chaves? no Guia do desenvolvedor do Amazon SQS.

Se o produtor e o consumidor tiverem usuários diferentes do IAM, o custo aumentará.

Para obter mais informações, consulte Como estimar meus custos de utilização do AWS KMS? no Guia do desenvolvedor do Amazon SQS

Conformidade

P: O Amazon SQS tem certificação PCI DSS?

Sim. O Amazon SQS tem certificação PCI DSS de nível 1. Para obter mais informações, consulte Conformidade com o PCI.

P: O Amazon SQS está qualificado pela HIPAA?

Sim. A AWS expandiu seu programa de conformidade com a HIPAA para incluir o Amazon SQS como um serviço qualificado pela HIPAA. Se você tiver um Business Associate Agreement executado (BAA – Acordo de associado comercial) com a AWS, poderá usar o Amazon SQS para criar aplicações em conformidade com a HIPAA, armazenar mensagens em trânsito e transmitir mensagens, inclusive mensagens que contenham Protected health information (PHI – Informações de saúde protegidas).

Se você já tiver executado um BAA com a AWS, já poderá começar a usar o Amazon SQS imediatamente. Se você não tiver um BAA ou tiver outras dúvidas sobre o uso da AWS para aplicações em conformidade com a HIPAA, entre em contato conosco para obter mais informações.

Observação: se você optar por não transferir PHI por meio do Amazon SQS (ou se tiver mensagens maiores do que 256 KB), como opção, será possível enviar cargas de mensagem do Amazon SQS por meio do Amazon S3 usando a biblioteca de cliente estendida para Java do Amazon SQS (o Amazon S3 é um serviço qualificado para a HIPAA, com exceção do uso do Amazon S3 Transfer Acceleration). Para obter mais informações, consulte Como usar a biblioteca de cliente estendida para Java do Amazon SQS no Guia do desenvolvedor do Amazon SQS.

Limites e restrições

P: Por quanto tempo posso manter minhas mensagens nas filas de mensagens do Amazon SQS?

A retenção de mensagens mais longa disponibiliza maior flexibilidade para permitir intervalos mais longos entre a utilização e a produção de mensagens.

Você pode configurar o período de retenção do Amazon SQS com um valor entre 1 minuto e 14 dias. O padrão são 4 dias. Quando o limite de retenção de mensagens for atingido, suas mensagens serão excluídas automaticamente.

P: Como configuro o Amazon SQS para que seja possível reter mensagens por mais tempo?

Para configurar o período de retenção de mensagens, defina o atributo MessageRetentionPeriod usando o console ou o método Distributiveness. Use esse atributo para especificar o número de segundos em que uma mensagem será retida no Amazon SQS.

Você pode usar o atributo MessageRetentionPeriod para definir o período de retenção de mensagens entre 60 segundos (1 minuto) e 1.209.600 segundos (14 dias). Para obter mais informações sobre como trabalhar com esse atributo de mensagem, consulte a Referência de API do Amazon SQS.

P: Como faço para configurar o tamanho máximo de mensagens para o Amazon SQS?

Para configurar o tamanho máximo de mensagens, use o console ou o método SetQueueAttributes para definir o atributo MaximumMessageSize. Esse atributo especifica o limite de bytes que uma mensagem do Amazon SQS pode conter. Defina esse limite com um valor entre 1.024 bytes (1 KB) e 262.144 bytes (256 KB). Para obter mais informações, consulte Uso dos atributos de mensagens do Amazon SQS no Guia do desenvolvedor do Amazon SQS.

Para enviar mensagens maiores que 256 KB, use a biblioteca de cliente estendida para Java do Amazon SQS. Essa biblioteca permite que você envie uma mensagem do Amazon SQS contendo uma referência a uma carga de mensagem no Amazon S3 que pode chegar a até 2 GB.

P: Que tipo de dados posso incluir em uma mensagem?

As mensagens do Amazon SQS podem conter até 256 KB de dados de texto, incluindo XML, JSON e texto não formatado. Os caracteres Unicode seguintes são aceitos:

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

Para obter mais informações, consulte a Especificação de XML 1.0.

P: A que tamanho podem chegar as filas de mensagens do Amazon SQS?

Uma única fila de mensagens do Amazon SQS pode conter um número ilimitado de mensagens. Entretanto, há um limite de 120.000 mensagens em andamento para uma fila padrão e de 20.000 mensagens para uma fila FIFO. As mensagens são consideradas em andamento quando foram recebidas da fila por um componente de utilização, mas ainda não foram excluídas da fila.

P: Quantas filas de mensagens posso criar?

Você pode criar qualquer número de filas de mensagens.

P: Há um limite de tamanho para o nome das filas de mensagens do Amazon SQS?

Os nomes de fila são limitados a 80 caracteres.

P: Há restrições para os nomes das filas de mensagens do Amazon SQS?

Você pode usar caracteres alfanuméricos, hifens (-) e sublinhados (_).

P: Posso reutilizar um nome de fila de mensagens?

Um nome de fila de mensagens deve ser exclusivo dentro de uma conta e uma região da AWS. Você pode reutilizar um nome de fila de mensagens depois de excluí-la.

Compartilhamento de filas

P: Como posso compartilhar uma fila de mensagens?

Você pode associar uma declaração de política de acesso (e especificar as permissões concedidas) à fila de mensagens a ser compartilhada. O Amazon SQS disponibiliza APIs para a criação e o gerenciamento de instruções de política de acesso:

  • AddPermission
  • RemovePermission
  • SetQueueAttributes
  • GetQueueAttributes

Para obter mais informações, consulte a Referência de API do Amazon SQS.

P: Quem paga pelo acesso compartilhado a filas?

O proprietário da fila de mensagens paga pelo acesso compartilhado da fila de mensagens.

P: Como posso identificar outro usuário da AWS com quem desejo compartilhar uma fila de mensagens?

A API do Amazon SQS utiliza o número de conta da AWS para identificar usuários da AWS.

P: O que preciso disponibilizar para um usuário da AWS com quem desejo compartilhar uma fila de mensagens?

Para compartilhar uma fila de mensagens com um usuário da AWS, disponibilize o URL completo da fila de mensagens que você deseja compartilhar. As operações CreateQueue e ListQueues retornam este URL em suas respostas.

P: O Amazon SQS oferece suporte a acesso anônimo?

Sim. Você pode configurar uma política de acesso que permita que usuários anônimos acessem uma fila de mensagens.

P: Quando devo usar a API de permissões?

A API permissions disponibiliza uma interface para compartilhar o acesso a uma fila de mensagens para desenvolvedores. No entanto, essa API não pode permitir acesso condicional ou casos de uso mais avançados.

P: Quando devo usar a operação SetQueueAttributes com objetos JSON?

A operação SetQueueAttributes é compatível com a linguagem de políticas de acesso total. Por exemplo, você pode usar a linguagem da política para restringir o acesso a uma fila de mensagens por endereço IP e horário do dia. Para obter mais informações, consulte Exemplos de políticas do Amazon SQS no Guia do desenvolvedor do Amazon SQS.

Acesso ao serviço e regiões

P: Em que regiões o Amazon SQS está disponível?

Para saber sobre a disponibilidade de serviços de uma região, consulte a tabela de regiões da infraestrutura global da AWS.

P: Posso compartilhar mensagens entre filas em regiões diferentes?

Não. Cada fila de mensagens do Amazon SQS é independente dentro de cada região.

P: Há alguma diferença na definição de preço entre as regiões?

A definição de preço do Amazon SQS é a mesma para todas as regiões, exceto para a região China (Pequim). Para obter mais informações, consulte a definição de preço do Amazon SQS.

P: Qual é a estrutura de definição de preço entre várias regiões?

Você pode transferir dados entre o Amazon SQS e o Amazon EC2 ou o AWS Lambda gratuitamente dentro de uma única região.

Ao transferir dados entre o Amazon SQS e o Amazon EC2 ou o AWS Lambda em regiões diferentes, será cobrada a taxa de transferência de dados normal. Para obter mais informações, consulte a definição de preço do Amazon SQS.

Saiba mais sobre a definição de preço do Amazon SQS

Acesse a página de definição de preço
Pronto para criar?
Comece a usar o Amazon SQS
Mais dúvidas?
Entre em contato conosco