Tutorial: Envio de uma mensagem a uma fila do Amazon SQS pela Amazon Virtual Private Cloud - Amazon Simple Queue Service

Tutorial: Envio de uma mensagem a uma fila do Amazon SQS pela Amazon Virtual Private Cloud

Este tutorial mostra como enviar mensagens para uma fila do Amazon SQS por uma rede privada e segura. A rede inclui:

  • Uma VPC contendo uma instância do Amazon EC2.

  • Uma interface endpoint da VPC, que permite que a instância do Amazon EC2 se conecte ao Amazon SQS sem usar a Internet pública.

Mesmo em uma rede totalmente privada, você pode se conectar à instância do Amazon EC2 e enviar mensagens para a fila do Amazon SQS. Para obter mais informações, consulte Endpoints da Amazon Virtual Private Cloud para o Amazon SQS.

Importante
  • Você pode usar a Amazon Virtual Private Cloud somente com endpoints HTTPS do Amazon SQS.

  • Ao configurar o Amazon SQS para enviar mensagens pela Amazon VPC, habilite o DNS privado e especifique endpoints no formato sqs.us-east-2.amazonaws.com ou sqs.us-east-2.api.aws para o endpoint de pilha dupla.

  • O Amazon SQS também oferece suporte a endpoints FIPS por meio do PrivateLink usando o serviço de endpoint com.amazonaws.region.sqs-fips. Você pode se conectar aos endpoints FIPS no formato sqs-fips.region.amazonaws.com.

  • Ao usar o endpoint de pilha dupla na Amazon Virtual Private Cloud, as solicitações serão enviadas usando IPv4 e IPv6.

  • O DNS privado não oferece suporte a endpoints legados, como queue.amazonaws.com ou us-east-2.queue.amazonaws.com.

Etapa 1: criar um par de chaves do Amazon EC2

Um par de chaves permite que você se conecte a uma instância do Amazon EC2. Esse par consiste em uma chave pública que criptografa suas informações de login e uma chave privada que as descriptografa.

  1. Faça login no console do Amazon EC2.

  2. No menu de navegação, em Network & Security (Rede e segurança), selecione Key Pairs (Pares de chaves).

  3. Escolha Criar par de chaves.

  4. Na caixa de diálogo Create Key Pair (Criar par de chaves), para Key pair name (Nome do par de chaves), insira SQS-VPCE-Tutorial-Key-Pair e selecione Create (Criar).

  5. O navegador faz download do arquivo da chave privada SQS-VPCE-Tutorial-Key-Pair.pem automaticamente.

    Importante

    Salve esse arquivo em um lugar seguro. O EC2 não gera um segundo arquivo .pem para o mesmo par de chaves.

  6. Para permitir que um cliente SSH se conecte à sua instância do EC2, defina as permissões do arquivo da chave privada para que somente o seu usuário possa ter permissões de leitura para ele, por exemplo:

    chmod 400 SQS-VPCE-Tutorial-Key-Pair.pem

Etapa 2: criar recursos da AWS

Para configurar a infraestrutura necessária, é preciso usar um modelo do CloudFormation, que é um esquema para criar uma pilha composta por recursos da AWS, como instâncias do Amazon EC2 e filas do Amazon SQS.

A pilha deste tutorial inclui os seguintes recursos:

  • Uma VPC e os recursos de rede associados, incluindo uma sub-rede, um grupo de segurança, um gateway da Internet e uma tabela de rotas.

  • Uma instância do Amazon EC2 executada na sub-rede da VPC

  • Uma fila do Amazon SQS

  1. Faça download do modelo do CloudFormation chamado SQS-VPCE-Tutorial-CloudFormation.yaml do GitHub.

  2. Faça login no console do CloudFormation.

  3. Escolha Create Stack (Criar pilha).

  4. Na página Select Template (Selecionar modelo), selecione Upload a template to Amazon S3 (Fazer upload de um modelo no Amazon S3), selecione o arquivo SQS-VPCE-SQS-Tutorial-CloudFormation.yaml e, então, selecione Next (Próximo).

  5. Na página Especificar detalhes, faça o seguinte:

    1. Para Stack name (Nome da pilha), insira SQS-VPCE-Tutorial-Stack.

    2. Para KeyName (Nome da chave), escolha SQS-VPCE-Tutorial-Key-Pair.

    3. Escolha Próximo.

  6. Na página Options (Opções), escolha Next (Avançar).

  7. Na página Revisar, na seção Recursos, selecione Reconheço que o AWS CloudFormation pode criar recursos do IAM com nomes personalizados. e escolha Criar.

O CloudFormation começa a criar a pilha e exibe o status CREATE_IN_PROGRESS. Quando o processo é concluído, o CloudFormation exibe o status CREATE_COMPLETE.

Etapa 3: confirmar que sua instância do EC2 não é acessível publicamente

O modelo do CloudFormation executa uma instância do EC2 chamada SQS-VPCE-Tutorial-EC2-Instance na VPC. Essa instância do EC2 não permite tráfego de saída e não é capaz de enviar mensagens para o Amazon SQS. Para verificar isso, você deve se conectar à instância, tentar se conectar a um endpoint público e, então, tentar enviar uma mensagem para o Amazon SQS.

  1. Faça login no console do Amazon EC2.

  2. No menu de navegação, em Instances (Instâncias), selecione Instances (Instâncias).

  3. Selecione SQS-VPCE-Tutorial-EC2Instance.

  4. Copie o nome de host em DNS público, por exemplo, ec2-203-0-113-0.us-west-2.compute.amazonaws.com.

  5. A partir do diretório que contém o par de chaves criado anteriormente, conecte-se à instância usando o comando a seguir, por exemplo:

    ssh -i SQS-VPCE-Tutorial-Key-Pair.pem ec2-user@ec2-203-0-113-0.us-east-2.compute.amazonaws.com
  6. Tente conectar-se a qualquer endpoint público, por exemplo:

    ping amazon.com

    A tentativa de conexão falha, conforme esperado.

  7. Faça login no console do Amazon SQS.

  8. Na lista de filas, selecione a fila criada por seu modelo do CloudFormation, por exemplo, VPCE-SQS-Tutorial-Stack-CFQueue-1ABCDEFGH2IJK.

  9. Na tabela Details (Detalhes), copie o URL, por exemplo, https://sqs.us-east-2.amazonaws.com/123456789012/.

  10. A partir de sua instância do EC2, tente publicar uma mensagem na fila usando o comando a seguir, por exemplo:

    aws sqs send-message --region us-east-2 --endpoint-url https://sqs.us-east-2.amazonaws.com/ --queue-url https://sqs.us-east-2.amazonaws.com/123456789012/ --message-body "Hello from Amazon SQS."

    A tentativa de envio falha, conforme esperado.

    Importante

    Posteriormente, ao criar um endpoint da VPC para o Amazon SQS, sua tentativa de envio será bem-sucedida.

Etapa 4: criar um endpoint da Amazon VPC para o Amazon SQS

Para conectar sua VPC ao Amazon SQS, você precisa definir uma interface de endpoint da VPC. Depois de adicionar o endpoint, você poderá usar a API do Amazon SQS a partir da instância do EC2 em sua VPC. Isso permite que você envie mensagens para uma fila dentro da rede da AWS sem precisar passar pela internet pública.

nota

A instância do EC2 ainda não tem acesso a outros serviços e endpoints da AWS na internet.

  1. Faça login no console da Amazon VPC.

  2. No menu de navegação, selecione Endpoints.

  3. Escolha Criar endpoint.

  4. Na página Create Endpoint (Criar endpoint), em Service Name (Nome do serviço), selecione o nome do serviço para o Amazon SQS.

    nota

    Os nomes de serviços variam de acordo com a atual região da AWS. Por exemplo, se você estiver no Leste dos EUA (Ohio), o nome do serviço será com.amazonaws.us-east-2.sqs.

  5. Para VPC, selecione SQS-VPCE-Tutorial-VPC.

  6. Para Subnets (Sub-redes), selecione a sub-rede cujo Subnet ID (ID da sub-rede) contenha SQS-VPCE-Tutorial-Subnet.

  7. Para Security group (Grupo de segurança), selecione Select security groups (Selecionar grupos de segurança) e selecione o grupo de segurança cujo Group Name (Nome do grupo) contenha SQS VPCE Tutorial Security Group.

  8. Escolha Criar endpoint.

    O VPC endpoint de interface é criado e o ID dele é exibido, por exemplo, vpce-0ab1cdef2ghi3j456k.

  9. Escolha Fechar.

    O console da Amazon VPC abre a página Endpoints.

A Amazon VPC começa a criar o endpoint e exibe o status pending (pendente). Quando o processo é concluído, a Amazon VPC exibe o status available (disponível).

Etapa 5: enviar uma mensagem para sua fila do Amazon SQS

Agora que a VPC inclui um endpoint para o Amazon SQS, você pode se conectar à instância do EC2 e enviar mensagens para a fila.

  1. Reconecte-se à instância do EC2, por exemplo:

    ssh -i SQS-VPCE-Tutorial-Key-Pair.pem ec2-user@ec2-203-0-113-0.us-east-2.compute.amazonaws.com
  2. Tente publicar uma mensagem na fila novamente usando o comando a seguir, por exemplo:

    aws sqs send-message --region us-east-2 --endpoint-url https://sqs.us-east-2.amazonaws.com/ --queue-url https://sqs.us-east-2.amazonaws.com/123456789012/ --message-body "Hello from Amazon SQS."

    A tentativa de envio é bem-sucedida e o resumo MD5 do corpo da mensagem e o ID da mensagem são exibidos, por exemplo:

    { "MD5OfMessageBody": "a1bcd2ef3g45hi678j90klmn12p34qr5", "MessageId": "12345a67-8901-2345-bc67-d890123e45fg" }

Para obter informações sobre como receber e excluir a mensagem da fila criada pelo modelo do CloudFormation (por exemplo, VPCE-SQS-Tutorial-Stack-CFQueue-1ABCDEFGH2IJK), consulte Receber e excluir uma mensagem no Amazon SQS .

Para obter informações sobre como excluir seus recursos, consulte o seguinte: