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.ouus-east-2.amazonaws.com.rproxy.govskope.casqs.para o endpoint de pilha dupla.us-east-2.api.aws 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 formatosqs-fips---region.amazonaws.com.rproxy.govskope.ca.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.rproxy.govskope.caou.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.
-
Faça login no console do Amazon EC2
. -
No menu de navegação, em Network & Security (Rede e segurança), selecione Key Pairs (Pares de chaves).
-
Escolha Criar par de chaves.
-
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-Paire selecione Create (Criar). -
O navegador faz download do arquivo da chave privada
SQS-VPCE-Tutorial-Key-Pair.pemautomaticamente.Importante
Salve esse arquivo em um lugar seguro. O EC2 não gera um segundo arquivo
.pempara o mesmo par de chaves. -
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
-
Faça download do modelo do CloudFormation chamado
SQS-VPCE-Tutorial-CloudFormation.yamldo GitHub. -
Faça login no console do CloudFormation
. -
Escolha Create Stack (Criar pilha).
-
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.yamle, então, selecione Next (Próximo). -
Na página Especificar detalhes, faça o seguinte:
-
Para Stack name (Nome da pilha), insira
SQS-VPCE-Tutorial-Stack. -
Para KeyName (Nome da chave), escolha SQS-VPCE-Tutorial-Key-Pair.
-
Escolha Próximo.
-
-
Na página Options (Opções), escolha Next (Avançar).
-
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.
-
Faça login no console do Amazon EC2
. -
No menu de navegação, em Instances (Instâncias), selecione Instances (Instâncias).
-
Selecione SQS-VPCE-Tutorial-EC2Instance.
-
Copie o nome de host em DNS público, por exemplo, ec2-203-0-113-0.us-west-2.compute.amazonaws.com.
-
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 -
Tente conectar-se a qualquer endpoint público, por exemplo:
ping amazon.comA tentativa de conexão falha, conforme esperado.
-
Faça login no console do Amazon SQS
. -
Na lista de filas, selecione a fila criada por seu modelo do CloudFormation, por exemplo, VPCE-SQS-Tutorial-Stack-CFQueue-1ABCDEFGH2IJK.
-
Na tabela Details (Detalhes), copie o URL, por exemplo, https://sqs.us-east-2.amazonaws.com/123456789012/.
-
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 --regionus-east-2--endpoint-urlhttps://sqs.us-east-2.amazonaws.com/--queue-urlhttps://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.
-
Faça login no console da Amazon VPC
. -
No menu de navegação, selecione Endpoints.
-
Escolha Criar endpoint.
-
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. -
Para VPC, selecione SQS-VPCE-Tutorial-VPC.
-
Para Subnets (Sub-redes), selecione a sub-rede cujo Subnet ID (ID da sub-rede) contenha SQS-VPCE-Tutorial-Subnet.
-
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.
-
Escolha Criar endpoint.
O VPC endpoint de interface é criado e o ID dele é exibido, por exemplo, vpce-0ab1cdef2ghi3j456k.
-
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.
-
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 -
Tente publicar uma mensagem na fila novamente usando o comando a seguir, por exemplo:
aws sqs send-message --regionus-east-2--endpoint-urlhttps://sqs.us-east-2.amazonaws.com/--queue-urlhttps://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:
-
Excluir um endpoint da VPC no Guia do usuário da Amazon VPC
-
Encerramento de instâncias do Amazon EC2 no Guia do usuário do Amazon EC2
-
Excluir a VPC no Guia do usuário da Amazon VPC
-
Excluir uma pilha no console do CloudFormation no Guia do usuário do AWS CloudFormation
-
Excluir o par de chaves no Guia do usuário do Amazon EC2.