Perguntas frequentes sobre o Amazon SQS

Visão geral

Em comparação com a desenvolvimento de seu próprio software, o Amazon SQS disponibiliza várias vantagens para gerenciar filas de mensagens ou usar sistemas de enfileiramento de mensagens comerciais ou de código aberto que exigem um tempo inicial significativo de desenvolvimento e 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 dimensionar a quantidade de tráfego que você envia para o Amazon SQS 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.

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. 

Se você estiver usando sistemas de mensagens com aplicações 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. 

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.

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.

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.

O Amazon Kinesis Streams permite o processamento em tempo real para o streaming de big data, além da capacidade de leitura e reprodução dos registros para diversas aplicações do 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.

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 AWS usam o Amazon SQS.

Faturamento

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 Elastic Compute Cloud (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.

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 os Preços do Amazon SQS.

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

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.

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.

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.

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.

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

Sim. Você pode tornar suas aplicações mais flexíveis e escaláveis usando o Amazon SQS com serviços computacionais, como o Amazon EC2, o Amazon Elastic Container Service (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.

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.

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

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.

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.

No Amazon SQS, é possível usar a API ou o console para configurar filas de mensagens mortas que recebem mensagens de outras filas de origem. Ao configurar uma fila de mensagens mortas, você deve definir as permissões apropriadas para o redirecionamento da fila de devoluções usando a política RedriveAllowPolicy.

RedriveAllowPolicy inclui os parâmetros para a permissão de redirecionamento da fila de mensagens mortas. Ela define quais filas de origem podem especificar filas de mensagens mortas como um objeto JSON.

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

Para obter mais informações, consulte Usar filas de mensagens não entregues do Amazon SQS no Guia do desenvolvedor do Amazon SQS.

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.

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 Usar atributos de mensagens do Amazon SQS no Guia do desenvolvedor do Amazon SQS.

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.

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.

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.

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.

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

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.

Em geral, é necessário usar um 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.

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.

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

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

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

  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 SNS em um tópico do Amazon SNS no Guia do desenvolvedor do Amazon SQS.

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: Limpar mensagens de uma fila do Amazon SQS.

Filas FIFO

As consultas FIFO estão disponíveis em todas as regiões da AWS em que o Amazon SQS é oferecido. Veja aqui os detalhes da disponibilidade do Amazon SQS nas regiões.

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.

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.

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.

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.

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.

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

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

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 atingiram o fim da janela de visibilidade).

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.

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.

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.

Por padrão, as filas FIFO oferecem suporte para até 3 mil mensagens por segundo com agrupamento em lotes ou para até 300 mensagens por segundo (sendo 300 operações de envio, recebimento ou exclusão por segundo) sem agrupamento em lotes. Se você precisar de um throughput mais alto, poderá habilitar o modo de alto throughput para FIFO no console do Amazon SQS, que oferecerá suporte para até 70 mil mensagens por segundo sem agrupamento em lotes e ainda mais mensagens com agrupamento em lotes. Para obter um detalhamento das cotas do modo de alto throughput para FIFO por região, consulte a Documentação da AWS.

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

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.

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íticas 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.

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.

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. 

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)

A SSE permite transmitir dados sigilosos 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.

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.  

A criptografia do lado do servidor (SSE) para o Amazon SQS está disponível em todas as regiões da AWS onde o Amazon SQS está disponível. Veja aqui os detalhes da disponibilidade do Amazon SQS nas regiões.

Para habilitar a SSE para uma fila nova ou atual usando a API do Amazon SQS, especifique o ID da chave primária de cliente (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.

As filas padrão e FIFO aceitam a SSE.

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 fila de mensagens não entregues, 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.

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.

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

A SSE usa o algoritmo AES-GCM 256.

A SSE não limita a taxa de transferência (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).
  • A cota 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 período de reutilização de chaves para 5 minutos (300 segundos).
  • Sua conta do KMS tem uma cota padrão de TPS do AWS KMS de 100 TPS.
  • Use uma fila do Amazon SQS sem uma lista de pendências e com um usuário do IAM para as 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

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

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

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 do cliente em versão ampliada 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 do cliente em versão ampliada para Java do Amazon SQS no Guia do desenvolvedor do Amazon SQS.

Limites e restrições

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 período padrão é 4 dias. Quando a cota de retenção de mensagens for atingida, suas mensagens serão excluídas automaticamente.

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.

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 número de bytes que uma mensagem do Amazon SQS pode conter. Defina esse atributo com um valor entre 1.024 bytes (1 KB) e 262.144 bytes (256 KB). Para obter mais informações, consulte Usar atributos de mensagens do Amazon SQS no Guia do desenvolvedor do Amazon SQS.

Para enviar mensagens maiores que 256 KB, use a biblioteca do cliente em versão ampliada 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.

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 XML 1.0.

Uma única fila de mensagens do Amazon SQS pode conter um número ilimitado de mensagens. Entretanto, há uma cota 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.

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

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

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

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

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.

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

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

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.

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

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.

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

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

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

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.

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.

Filas de mensagens mortas

Uma fila de mensagens mortas é uma fila do Amazon SQS para a qual uma fila de origem pode enviar mensagens se a aplicação do consumidor da fila de origem não puder consumir as mensagens com sucesso. As filas de mensagens mortas facilitam o tratamento das falhas de consumo de mensagens e o gerenciamento do ciclo de vida das mensagens não consumidas. Você pode configurar um alarme para qualquer mensagem entregue a uma fila de mensagens mortas, examinar os logs em busca de exceções que podem ter causado essa entrega e analisar o conteúdo da mensagem para diagnosticar problemas com a aplicação do consumidor. Assim você recuperar a sua aplicação do consumidor, seu aplicativo para o consumidor, já poderá retornar as mensagens da fila de mensagens mortas para a fila de origem mais facilmente.

Na criação da sua fila de origem, o Amazon SQS permite que você especifique uma fila de mensagens mortas (DLQ) e as condição nas quais o SQS deve mover as mensagens para o DLQ. A condição é o número de vezes que um consumidor pode receber uma mensagem da fila, definida como maxReceiveCount. A configuração de uma fila de devoluções com uma fila de origem e o maxReceiveCount é conhecida como política de redirecionamento. Quando o ReceiveCount de uma mensagem excede o maxReceiveCount de uma fila, o Amazon SQS está projetado para mover mensagem para uma fila de mensagens mortas (com o ID da mensagem original). Por exemplo, se a fila de origem tiver uma política de redirecionamento com maxReceiveCount definido como 5, e o consumidor da fila de origem receber uma mensagem 6 vezes sem nunca excluí-la, o Amazon SQS moverá a mensagem para a fila de mensagens mortas.

A política redirecionamento gerencia a primeira metade do ciclo de vida das mensagens não consumidas, movendo-as de uma fila de origem para uma fila de mensagens mortas. Agora, o redirecionamento d a fila de mensagens mortas para a fila de origem completa o ciclo de maneira eficiente, ao mover essas mensagens de volta para sua fila de origem, conforme mostrado abaixo.

Como funcionam as zonas locais da AWS

Primeiramente, permite que você investigue uma amostra de mensagens disponíveis na fila de mensagens mortas, mostrando os atributos da mensagem e os metadados relacionados. Então, depois de investigar as mensagens, você pode movê-las de volta para a fila de origem. Você também pode selecionar a velocidade de redirecionamento para configurar a taxa na qual o Amazon SQS moverá as mensagens da fila de mensagens mortas para a fila de origem.

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