Publicando uma SNS mensagem da Amazon na Amazon VPC - Amazon Simple Notification Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Publicando uma SNS mensagem da Amazon na Amazon VPC

Esta seção descreve como publicar em um SNS tópico da Amazon enquanto mantém as mensagens seguras em uma rede privada. Você publica uma mensagem de uma EC2 instância da Amazon que está hospedada na Amazon Virtual Private Cloud (AmazonVPC). A mensagem permanece na AWS rede sem viajar pela Internet pública. Ao publicar mensagens de forma privada de umVPC, você pode melhorar a segurança do tráfego entre seus aplicativos e a AmazonSNS. Essa segurança é importante quando você publica informações de identificação pessoal (PII) sobre seus clientes ou quando seu aplicativo está sujeito às regulamentações do mercado. Por exemplo, publicar de forma privada é útil se você tiver um sistema de saúde que deve estar em conformidade com a Lei de Portabilidade e Responsabilidade de Seguros de Saúde (HIPAA) ou um sistema financeiro que deve estar em conformidade com o Padrão de Segurança de Dados do Setor de Cartões de Pagamento (). PCI DSS

As etapas gerais são as seguintes:

  • Use um AWS CloudFormation modelo para criar automaticamente uma rede privada temporária no seu Conta da AWS.

  • Crie um VPC endpoint que o conecte VPC à AmazonSNS.

  • Faça login em uma EC2 instância da Amazon e publique uma mensagem de forma privada em um SNS tópico da Amazon.

  • Verifique se a mensagem foi entregue com sucesso.

  • Exclua os recursos que você criou durante esse processo para que eles não permaneçam no seu Conta da AWS.

O diagrama seguinte descreve a rede privada que você cria na sua conta da AWS ao concluir essas etapas:

A arquitetura de rede privada que você cria com estas etapas.

Essa rede consiste em uma VPC que contém uma EC2 instância da Amazon. A instância se conecta à Amazon SNS por meio de um VPCendpoint de interface. Esse tipo de endpoint se conecta a serviços que são alimentados por AWS PrivateLink. Com essa conexão estabelecida, você pode fazer login na EC2 instância da Amazon e publicar mensagens no SNS tópico da Amazon, mesmo que a rede esteja desconectada da Internet pública. O tópico distribui as mensagens que recebe em duas AWS Lambda funções de assinatura. Essas funções registram as mensagens que recebem no Amazon CloudWatch Logs.

Demora cerca de 20 minutos para concluir essas etapas.

Antes de começar

Antes de começar, você precisa de uma conta da Amazon Web Services (AWS). Quando você se inscreve, sua conta é automaticamente inscrita em todos os serviços AWS, incluindo Amazon SNS e AmazonVPC. Caso ainda não tenha criado uma conta, acesse https://aws.amazon.com/ e escolha Create a Free Account (Criar conta gratuita).

Etapa 1: criar um par de EC2 chaves da Amazon

Um par de chaves é usado para fazer login em uma EC2 instância da Amazon. Esse par consiste em uma chave pública usada para criptografar suas informações de login e uma chave privada usada para descriptografá-la. Ao criar um par de chaves, você faz download de uma cópia da chave privada. Posteriormente, você usa o par de chaves para fazer login em uma EC2 instância da Amazon. Para efetuar login, especifique o nome do par de chaves e insira a chave privada.

Para criar o par de chaves
  1. Faça login no AWS Management Console e abra o EC2 console da Amazon em https://console.aws.amazon.com/ec2/.

  2. No menu de navegação à esquerda, localize a seção Network & Security (Rede e segurança). Em seguida, escolha Key Pairs (Pares de chave).

  3. Escolha Criar par de chaves.

  4. Na janela Create Key Pair (Criar par de chaves), em Key pair name (Nome do par de chaves), digite VPCE-Tutorial-KeyPair. Selecione Criar.

    A janela Create Key Pair (Criar par de chaves).
  5. O arquivo de chave privada é baixado automaticamente pelo navegador. Salve-o em um local seguro. A Amazon EC2 fornece ao arquivo uma extensão de.pem.

  6. (Opcional) Se você estiver usando um SSH cliente em um computador Mac ou Linux para se conectar à sua instância, use o chmod comando para definir as permissões do seu arquivo de chave privada para que somente você possa lê-lo:

    1. Abra um terminal e navegue até o diretório que contém a chave privada:

      $ cd /filepath_to_private_key/
    2. Defina as permissões usando o seguinte comando:

      $ chmod 400 VPCE-Tutorial-KeyPair.pem

Etapa 2: Criar os recursos do AWS

Para configurar a infraestrutura que oferece suporte a este tutorial, use um modelo do AWS CloudFormation . Um modelo é um arquivo que atua como um modelo para criar AWS recursos, como EC2 instâncias da Amazon e SNS tópicos da Amazon. O modelo para esse processo é fornecido GitHub para você baixar.

Você fornece o modelo e AWS CloudFormation provisiona os recursos de que precisa como uma pilha em seu Conta da AWS. AWS CloudFormation Uma pilha é um conjunto de recursos que pode gerenciar como uma unidade. Ao concluir essas etapas, você pode usar AWS CloudFormation para excluir todos os recursos da pilha de uma só vez. Esses recursos não permanecem em seu Conta da AWS, a menos que você queira.

A pilha deste processo inclui os seguintes recursos:

  • A 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 EC2 instância da Amazon que é iniciada na sub-rede noVPC.

  • Um SNS tópico da Amazon.

  • Duas AWS Lambda funções. Essas funções recebem mensagens que são publicadas no SNS tópico da Amazon e registram eventos em CloudWatch Logs.

  • CloudWatch Métricas e registros da Amazon.

  • Uma IAM função que permite que a EC2 instância da Amazon use a Amazon SNS e uma IAM função que permite que as funções Lambda gravem em registros. CloudWatch

Para criar os AWS recursos
  1. Baixe o arquivo de modelo do GitHub site.

  2. Faça login no console do AWS CloudFormation.

  3. Escolha Create Stack (Criar pilha).

  4. Na página Select Template (Selecionar modelo), escolha Upload a template to Amazon S3 (Carregar um modelo no Amazon S3) e, em seguida, o arquivo e Next (Avançar).

  5. Na página Specify Details (Especificar detalhes), especifique os nomes de pilha e chave:

    1. Para Nome da pilha, digite VPCE-Tutorial-Stack.

    2. Para KeyName, escolha VPCE-Tutorial-. KeyPair

    3. Para SSHLocation, mantenha o valor padrão de0.0.0.0/0.

      A página Specify Details (Especificar detalhes)
    4. Escolha Próximo.

  6. Na página Options (Opções), mantenha todos os valores padrão e escolha Next (Próximo).

  7. Na página Review (Revisar), verifique os detalhes da pilha.

  8. Em Capacidades, reconheça que isso AWS CloudFormation pode criar IAM recursos com nomes personalizados.

  9. Escolha Criar.

    O AWS CloudFormation console abre a página Stacks. O VPCE -Tutorial-Stack tem um status de _IN_. CREATE PROGRESS Em alguns minutos, após a conclusão do processo de criação, o status muda para CREATE_ COMPLETE.

    A AWS CloudFormation pilha com um status de CREATE _COMPLETE.
    dica

    Escolha o botão Refresh (Atualizar) para ver o status mais recente da pilha.

Etapa 3: confirme se sua EC2 instância da Amazon não tem acesso à Internet

A EC2 instância da Amazon que foi lançada VPC na sua etapa anterior não tem acesso à Internet. Ele proíbe o tráfego de saída e não consegue publicar mensagens na Amazon. SNS Para verificar isso, faça login na instância. Em seguida, tente se conectar a um endpoint público e tente enviar uma mensagem para a AmazonSNS.

Neste ponto do tutorial, a tentativa de publicação falha. Em uma etapa posterior, depois de criar um VPC endpoint para a AmazonSNS, sua tentativa de publicação será bem-sucedida.

Para se conectar à sua EC2 instância Amazon
  1. Abra o EC2 console da Amazon em https://console.aws.amazon.com/ec2/.

  2. No menu de navegação à esquerda, localize a seção Instances (Instâncias). Em seguida, selecione Instances (Instâncias).

  3. Na lista de instâncias, selecione VPCE- Tutorial-EC2Instance.

  4. Copie o nome do host fornecido na coluna Public DNS (IPv4).

    Detalhes sobre a EC2 instância da Amazon lançada por AWS CloudFormation.
  5. Abra um terminal do . No diretório que contém o key pair, conecte-se à instância usando o comando a seguir, onde instance-hostname é o nome do host que você copiou do console da AmazonEC2:

    $ ssh -i VPCE-Tutorial-KeyPair.pem ec2-user@instance-hostname
Para verificar se a instância não tem conectividade com a Internet
  • No seu terminal, tente se conectar a qualquer endpoint público, como amazon.com:

    $ ping amazon.com

    Como a tentativa de conexão falha, você pode cancelar a qualquer momento (Ctrl + C no Windows ou Command + C no macOS).

Para verificar se a instância não tem conectividade com a Amazon SNS
  1. Faça login no SNSconsole da Amazon.

  2. No menu de navegação à esquerda, escolha Topics (Tópicos).

  3. Na página Tópicos, copie o Amazon Resource Name (ARN) para o tópico VPCE-Tutorial-Topic.

  4. No seu terminal, tente publicar uma mensagem no tópico:

    $ aws sns publish --region aws-region --topic-arn sns-topic-arn --message "Hello"

    Como a tentativa de publicação falha, você pode cancelar a qualquer momento.

Etapa 4: criar um VPC endpoint da Amazon para a Amazon SNS

Para conectá-lo VPC à AmazonSNS, você define um VPC endpoint de interface. Depois de adicionar o endpoint, você pode fazer login na EC2 instância da Amazon em sua eVPC, a partir daí, usar a Amazon SNSAPI. Você pode publicar mensagens no tópico. Elas serão publicadas de maneira privada. Eles permanecem na AWS rede e não navegam pela Internet pública.

nota

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

Para criar o endpoint
  1. Abra o VPC console da Amazon em https://console.aws.amazon.com/vpc/.

  2. No menu de navegação à esquerda, escolha Endpoints.

  3. Escolha Criar Endpoint.

  4. Na página Criar endpoint, na categoria Serviço, mantenha a opção padrão de AWS serviços.

  5. Em Nome do serviço, escolha o nome do serviço para a AmazonSNS.

    Os nomes de serviços variam de acordo com a região escolhida. Por exemplo, se você escolher Leste dos EUA (Norte da Virgínia), o nome do serviço será com.amazonaws.us-east-1.sns.

  6. Para VPC, escolha o VPC que tem o nome VPCE-Tutorial-. VPC

    O VPC menu na página Criar endpoint.
  7. Para Sub-redes, escolha a sub-rede que tem VPCE-Tutorial-Subnet na ID da sub-rede.

    As sub-redes na página Create Endpoints (Criar endpoints).
  8. Em Ativar DNS nome privado, selecione Ativar para este endpoint.

  9. Em Grupo de segurança, escolha Selecionar grupo de segurança e escolha VPCE-Tutorial- SecurityGroup.

    Os grupos de segurança na página Create Endpoints (Criar endpoints).
  10. Escolha Criar endpoint. O VPC console da Amazon confirma que um VPC endpoint foi criado.

    A mensagem de confirmação exibida depois da criação de um endpoint.
  11. Escolha Fechar.

    O VPC console da Amazon abre a página Endpoints. O novo endpoint tem um status pending (pendente). Em instantes, após a conclusão do processo de criação, o status muda para available (disponível).

    O VPC endpoint com um status de disponível.

Etapa 5: publique uma mensagem no seu SNS tópico da Amazon

Agora que você VPC inclui um endpoint para a AmazonSNS, você pode fazer login na EC2 instância da Amazon e publicar mensagens no tópico.

Para publicar uma mensagem
  1. Se o seu terminal não estiver mais conectado à sua EC2 instância da Amazon, conecte-se novamente:

    $ ssh -i VPCE-Tutorial-KeyPair.pem ec2-user@instance-hostname
  2. Execute o mesmo comando que você fez anteriormente para publicar uma mensagem no seu SNS tópico da Amazon. Desta vez, a tentativa de publicação é bem-sucedida e a Amazon SNS retorna um ID de mensagem:

    $ aws sns publish --region aws-region --topic-arn sns-topic-arn --message "Hello" { "MessageId": "5b111270-d169-5be6-9042-410dfc9e86de" }

Etapa 6: Verificar as entregas de mensagens

Quando o SNS tópico da Amazon recebe uma mensagem, ele a divulga enviando-a para as duas funções do Lambda inscritas. Quando essas funções recebem a mensagem, elas registram o evento nos CloudWatch registros. Para verificar se a entrega da mensagem foi bem-sucedida, verifique se as funções foram invocadas e se os CloudWatch registros foram atualizados.

Para verificar se as funções do Lambda foram invocadas
  1. Abra o AWS Lambda console em https://console.aws.amazon.com/lambda/.

  2. Na página Funções, escolha VPCE-Tutorial-Lambda-1.

  3. Escolha Monitoramento.

  4. Verifique o gráfico Invocation count (Contagem de invocação). Este gráfico mostra o número de vezes que a função do Lambda foi executada.

    A contagem de invocação corresponde ao número de vezes que você publicou uma mensagem no tópico.

    O gráfico de contagem de invocação no console do Lambda.
Para verificar se os CloudWatch registros foram atualizados
  1. Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/.

  2. No menu de navegação à esquerda, escolha Logs.

  3. Verifique os registros que foram escritos pelas funções do Lambda:

    1. Escolha o grupo de log /aws/lambda/ VPCE -Tutorial-Lambda-1/.

    2. Escolha o fluxo de logs.

    3. Verifique se o log inclui a entrada From SNS: Hello.

      O CloudWatch registro inclui a entrada “DeSNS: Olá”.
    4. Escolha Log Groups (Grupos de logs) na parte superior do console para retornar para a página Log Groups (Grupos de logs). Em seguida, repita as etapas anteriores para o grupo de log /aws/lambda/ VPCE -Tutorial-Lambda-2/.

Parabéns! Ao adicionar um endpoint da Amazon SNS a umVPC, você conseguiu publicar uma mensagem em um tópico de dentro da rede gerenciada peloVPC. A mensagem foi publicada de maneira privada sem ser exposta à Internet pública.

Etapa 7: limpar

A menos que você queira manter os recursos criados, você poderá excluí-los agora. Ao excluir AWS recursos que você não está mais usando, você evita cobranças desnecessárias no seu Conta da AWS.

Primeiro, exclua seu VPC endpoint usando o VPC console da Amazon. Em seguida, exclua os outros recursos que você criou excluindo a pilha no AWS CloudFormation console. Quando você exclui uma pilha, AWS CloudFormation remove os recursos da pilha do seu. Conta da AWS

Para excluir seu VPC endpoint
  1. Abra o VPC console da Amazon em https://console.aws.amazon.com/vpc/.

  2. No menu de navegação à esquerda, escolha Endpoints.

  3. Selecione o endpoint que você criou.

  4. Escolha Actions (Ações) e escolha Delete Endpoint (Excluir endpoint).

  5. Na janela Delete Endpoint (Excluir endpoint), escolha Yes, Delete (Sim, excluir).

    O status do endpoint muda para deleting (excluindo). Quando a exclusão é concluída, o endpoint é removido da página.

Para excluir sua AWS CloudFormation pilha
  1. Abra o AWS CloudFormation console em https://console.aws.amazon.com/cloudformation.

  2. Selecione a pilha VPCE-Tutorial-Stack.

  3. Escolha Ações e, em seguida, escolha Excluir pilha.

  4. Na janela Delete Stack (Excluir pilha), escolha Yes, Delete (Sim, excluir).

    O status da pilha muda para DELETEPROGRESS_IN_. Quando a exclusão é concluída, a pilha é removida da página.

Para obter mais informações, consulte os recursos a seguir.