Visão geral

Abrir tudo

Em comparação com a desenvolvimento de seu próprio software, o HAQM 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 HAQM SQS não exige sobrecarga de tarefas administrativas e necessita de pouca configuração. O HAQM 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 HAQM SQS sem precisar de nenhuma configuração. O HAQM SQS também proporciona uma resiliência de mensagens substancialmente alta, oferecendo a você e às partes interessadas ainda mais segurança.

O HAQM 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 HAQM 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 HAQM MQ. O HAQM 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 HAQM MQ sem necessidade de recriar o código do sistema de mensagens dos aplicativos. Se você estiver criando aplicativos novos na nuvem, recomendamos o HAQM SQS e o HAQM SNS. O HAQM SQS e o HAQM 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 HAQM 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 HAQM 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 HAQM 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 HAQM SQS oferece suporte para filas padrão e FIFO.

O HAQM 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 HAQM Kinesis. A Biblioteca de cliente do HAQM 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 HAQM Kinesis Stream (por exemplo, para contar, agregar ou filtrar).

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

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

Faturamento

Abrir tudo

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

O custo do HAQM SQS é calculado de acordo com a solicitação, além das cobranças por transferência de dados para dados transferidos para fora do HAQM SQS (exceto quando são transferidos para instâncias do HAQM 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 HAQM SQS.

O nível gratuito do HAQM 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 HAQM 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 HAQM 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 HAQM SQS. Ao agrupar mensagens em lotes, você pode reduzir os custos do HAQM SQS.

Não há taxas iniciais para começar a usar o HAQM 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 HAQM SQS no Guia do desenvolvedor do HAQM 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 HAQM Web Services.

Recursos, funcionalidades e interfaces

Abrir tudo

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

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

O HAQM 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 HAQM 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 HAQM SQS.

Todas as mensagens têm um ID exclusivo global que o HAQM 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 HAQM SQS.

No HAQM 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 dead letter queues 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 HAQM SQS no Guia do desenvolvedor do HAQM SQS.

O tempo limite de visibilidade é um período em que o HAQM 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 HAQM SQS.

Sim. Uma mensagem do HAQM 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 HAQM 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 HAQM SQS no Guia do desenvolvedor do HAQM 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 HAQM SQS disponibilizará o endereço IP.

A sondagem longa do HAQM SQS é uma forma de recuperar mensagens de suas filas do HAQM 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 HAQM 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 HAQM SQS no Guia do desenvolvedor do HAQM 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 HAQM 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 HAQM 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 HAQM 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 HAQM 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 HAQM SQS para permitir solicitações mais longas ou usar um limite de tempo de sondagem longa mais curto.

O HAQMSQSBufferedAsyncClient para Java disponibiliza uma implementação da interface HAQMSQSAsyncClient 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 HAQM 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 HAQM 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 HAQM SQS.

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

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

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

  1. No console do HAQM SQS, selecione uma fila padrão do HAQM 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 HAQM SNS em um tópico do HAQM SNS no Guia do desenvolvedor do HAQM SQS.

Sim. Sim, você pode excluir todas as mensagens de uma fila de mensagens do HAQM 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 HAQM SQS.

Filas FIFO

Abrir tudo

As consultas FIFO estão disponíveis em todas as regiões da AWS em que o HAQM SQS é oferecido. Veja aqui os detalhes da disponibilidade do HAQM 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 HAQM 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 HAQM SQS.

Não. As filas padrão do HAQM 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 HAQM 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 HAQM 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 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 HAQM SQS entrega as mensagens na ordem de chegada para processamento. Para garantir que o HAQM 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 HAQM 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 HAQM 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 HAQM 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 HAQM 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 HAQM 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

Abrir tudo

O HAQM 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 HAQM Relational Database Service.

Mecanismos de autenticação garantem que as mensagens armazenadas nas filas de mensagens do HAQM 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 HAQM 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 HAQM SQS no Guia do desenvolvedor do HAQM SQS.

O HAQM 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 HAQM 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 HAQM 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 HAQM 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 HAQM 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 HAQM SQS retorna uma resposta de êxito.

Criptografia do lado do servidor (SSE)

Abrir tudo

A SSE permite transmitir dados sigilosos em filas criptografadas. A SSE protege o conteúdo de mensagens em filas do HAQM SQS usando chaves gerenciadas no AWS Key Management Service (AWS KMS). A SSE criptografa mensagens assim que o HAQM SQS as recebe. As mensagens são armazenadas no formato criptografado e o HAQM 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 HAQM SQS.

Sim. Para fazer isso, você precisa habilitar a compatibilidade entre os serviços da AWS (por exemplo. HAQM CloudWatch Events, HAQM S3 e HAQM 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 HAQM SQS está disponível em todas as regiões da AWS onde o HAQM SQS está disponível. Veja aqui os detalhes da disponibilidade do HAQM SQS nas regiões.

Para habilitar a SSE para uma fila nova ou atual usando a API do HAQM 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 HAQM SQS com criptografia no lado do servidor e Configuração de criptografia no lado do servidor (SSE) para uma fila existente do HAQM SQS no Guia do desenvolvedor do HAQM 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 HAQM 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 HAQM SQS.

Não há cobranças adicionais para o HAQM SQS. No entanto, existem cobranças para chamadas feitas do HAQM 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 HAQM SQS.

A SSE criptografa o corpo de uma mensagem em uma fila do HAQM 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 HAQM SQS gera chaves de dados baseadas na CMK do HAQM 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 HAQM SQS, o que a SSE criptografa? no Guia do desenvolvedor do HAQM SQS.

A SSE usa o algoritmo AES-GCM 256.

A SSE não limita a taxa de transferência (TPS) do HAQM 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 periodo 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 HAQM 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 HAQM 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 HAQM 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 HAQM 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 HAQM SQS.

C é o número de principais de consumo que recebem da fila do HAQM 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 HAQM 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 HAQM SQS

Conformidade

Abrir tudo

Sim. O HAQM 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 HAQM 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 HAQM 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 HAQM 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 HAQM SQS (ou se tiver mensagens maiores do que 256 KB), como opção, será possível enviar cargas de mensagem do HAQM SQS por meio do HAQM S3 usando a biblioteca do cliente em versão ampliada para Java do HAQM SQS (o HAQM S3 é um serviço qualificado para a HIPAA, com exceção do uso do HAQM S3 Transfer Acceleration). Para obter mais informações, consulte Como usar a biblioteca do cliente em versão ampliada para Java do HAQM SQS no Guia do desenvolvedor do HAQM SQS.

Limites e restrições

Abrir tudo

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 HAQM 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 HAQM 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 HAQM 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 HAQM 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 HAQM SQS no Guia do desenvolvedor do HAQM SQS.

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

As mensagens do HAQM 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 HAQM 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 120.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

Abrir tudo

Você pode associar uma declaração de política de acesso (e especificar as permissões concedidas) à fila de mensagens a ser compartilhada. O HAQM 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 HAQM SQS.

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

A API do HAQM 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 HAQM SQS no Guia do desenvolvedor do HAQM SQS.

Acesso ao serviço e regiões

Abrir tudo

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 HAQM SQS é independente dentro de cada região.

A definição de preço do HAQM 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 HAQM SQS.

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

Ao transferir dados entre o HAQM SQS e o HAQM 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 HAQM SQS.

Filas de mensagens mortas

Abrir tudo

Uma fila de mensagens mortas é uma fila do HAQM 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 HAQM 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 HAQM 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 HAQM 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 HAQM 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.)