Publicación de un mensaje de Amazon SNS desde Amazon VPC - Amazon Simple Notification Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Publicación de un mensaje de Amazon SNS desde Amazon VPC

En esta sección, se describe cómo publicar en un tema de Amazon SNS a la vez que mantiene los mensajes seguros en una red privada. Publica un mensaje desde una instancia de Amazon EC2 alojada en Amazon Virtual Private Cloud (Amazon VPC). El mensaje permanece en la red de AWS sin viajar por la red pública de Internet. Al publicar mensajes de forma privada desde una VPC, puede mejorar la seguridad del tráfico entre sus aplicaciones y Amazon SNS. Esta seguridad es importante cuando publica información personalmente identificable (PII) sobre sus clientes o cuando su aplicación está sujeta a regulaciones del mercado. Por ejemplo, la publicación de forma privada es útil si tiene un sistema de sanidad que debe cumplir con la Ley de portabilidad y responsabilidad de los seguros médicos (HIPAA, por sus siglas en inglés) o un sistema financiero que debe cumplir con el estándar de seguridad de datos del sector de tarjetas de pago (PCI DSS, por sus siglas en inglés).

Los pasos generales son los siguientes:

  • Utilizar una plantilla de AWS CloudFormation para crear de manera automática una red privada temporal en su Cuenta de AWS.

  • Crear un punto de enlace de la VPC que conecte la VPC con Amazon SNS.

  • Iniciar sesión en una instancia de Amazon EC2 y publicar un mensaje de forma privada en un tema de Amazon SNS.

  • Verificar que el mensaje se entregó correctamente.

  • Eliminar los recursos que creó en este proceso con el fin de que no permanezcan en su Cuenta de AWS.

En el siguiente diagrama, se muestra la red privada que creará en su cuenta de AWS a medida que realice estos pasos:


	          La arquitectura de la red privada que crea con estos pasos.

Esta red consta de una VPC que contiene una instancia de Amazon EC2. La instancia se conecta a Amazon SNS a través de un punto de enlace de la VPC de interfaz. Este tipo de punto de enlace se conecta a los servicios basados en AWS PrivateLink. Con esta conexión establecida, puede iniciar sesión en la instancia de Amazon EC2 y publicar mensajes en el tema de Amazon SNS, aunque la red esté desconectada de la Internet pública. El tema distribuye los mensajes que recibe a dos funciones de AWS Lambda de suscripción. Estas funciones registran los mensajes que reciben en Amazon CloudWatch Logs.

Se tarda unos 20 minutos en completar estos pasos.

Antes de empezar

Antes de empezar, necesita una cuenta de Amazon Web Services (AWS). Al registrarse, su cuenta se inscribe de manera automática en todos los servicios de AWS, incluidos Amazon SNS y Amazon VPC. Si todavía no ha creado una cuenta, vaya a https://aws.amazon.com/ y, a continuación, elija Crear una cuenta gratuita.

Paso 1: Crear un par de claves de Amazon EC2

Se utiliza un par de claves para iniciar sesión en una instancia de Amazon EC2. Consta de una clave pública que se utiliza para cifrar la información de inicio de sesión y de una clave privada que se utiliza para descifrarla. Al crear un par de claves, se descarga una copia de la clave privada. Después, utiliza un par de claves para iniciar sesión en una instancia de Amazon EC2. Para iniciar sesión, debe especificar el nombre del par de claves y proporcionar la clave privada.

Para crear el par de claves
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el menú de navegación de la izquierda, busque la sección Network & Security (Red y seguridad). A continuación, elija Key Pairs (Pares de claves).

  3. Seleccione Create Key Pair.

  4. En la ventana Create Key Pair (Crear par de claves), en Key pair name (Nombre del par de claves), escriba VPCE-Tutorial-KeyPair. A continuación, elija Create (Crear).

    
	                La ventana Create Key Pair (Crear par de claves).
  5. Su navegador descargará el archivo de clave privada automáticamente. Guárdelo en un lugar seguro. Amazon EC2 asigna la extensión al archivo .pem.

  6. (Opcional) Si está usando un cliente SSH en un equipo Mac o Linux para conectarse a su instancia, utilice el comando chmod para establecer los permisos de su archivo de clave privada de modo que solo usted pueda leerlo:

    1. Abra un terminal y vaya al directorio que contiene la clave privada:

      $ cd /filepath_to_private_key/
    2. Establezca los permisos mediante el comando siguiente:

      $ chmod 400 VPCE-Tutorial-KeyPair.pem

Paso 2: Crear los recursos de AWS

Para configurar la infraestructura, utilice una plantilla de AWS CloudFormation. Una plantilla es un archivo que sirve como modelo para crear recursos de AWS, como instancias de Amazon EC2 y temas de Amazon SNS. En GitHub se puede descargar la plantilla de este proceso.

Debe proporcionar la plantilla a AWS CloudFormation, y AWS CloudFormation aprovisiona los recursos necesarios como una pila en su Cuenta de AWS. Una pila es una colección de recursos que administra como una única unidad. Cuando finalice estos pasos, podrá utilizar AWS CloudFormation para eliminar todos los recursos de la pila a la vez. Estos recursos no permanecen en su Cuenta de AWS, a menos que desee.

En la pila de este proceso, se incluyen los siguientes recursos:

  • Una VPC y los recursos de red asociados, incluida una subred, un grupo de seguridad, una gateway de Internet y una tabla de ruteo.

  • Una instancia de Amazon EC2 que se lanza en la subred de la VPC.

  • Un tema de Amazon SNS.

  • Dos funciones de AWS Lambda. Estas funciones reciben mensajes que se publican en el tema de Amazon SNS y registran eventos en CloudWatch Logs.

  • Métricas y registros de Amazon CloudWatch

  • Un rol de IAM con el que la instancia de Amazon EC2 puede utilizar Amazon SNS y otro rol de IAM con el que las funciones de Lambda pueden escribir en CloudWatch Logs.

Para crear los recursos de AWS
  1. Descargue el archivo de plantilla del sitio web de GitHub.

  2. Inicie sesión en la consola de AWS CloudFormation.

  3. Elija Create Stack.

  4. En la página Select Template (Seleccionar plantilla), elija Upload a template to Amazon S3 (Cargar una plantilla en Amazon S3), elija el archivo y, a continuación, elija Next (Siguiente).

  5. En la página Specify Details (Especificar detalles), especifique el nombre de la pila y el de la clave:

    1. Para Stack name (Nombre de pila), escriba VPCE-Tutorial-Stack.

    2. En KeyName (Nombre de la clave), elija VPCE-Tutorial-KeyPair.

    3. En SSHLocation (Ubicación para SSH), mantenga el valor predeterminado 0.0.0.0/0.

      
	                    La página Specify Details (Especificar detalles).
    4. Elija Next (Siguiente).

  6. En la página Options (Opciones), mantenga todos los valores predeterminados y elija Next (Siguiente).

  7. En la página Review (Revisar), verifique los detalles de la pila.

  8. En Capacidades, confirme que AWS CloudFormation podría crear recursos de IAM con nombres personalizados.

  9. Seleccione Create (Crear).

    La consola de AWS CloudFormation abre la página Stacks (Pilas). La pila VPCE-Tutorial-Stack tiene el estado CREATE_IN_PROGRESS. En unos minutos, después de que se complete el proceso de creación, el estado cambia a CREATE_COMPLETE.

    
	                La pila de AWS CloudFormation en el estado CREATE_COMPLETE.
    sugerencia

    Elija el botón Refresh (Actualizar) para ver el estado más reciente de la pila.

Paso 3: Confirmar que la instancia de Amazon EC2 carece de acceso a Internet

La instancia de Amazon EC2 que se lanzó en la VPC en el paso anterior carece de acceso a Internet. No permite el tráfico saliente y no puede publicar mensajes en Amazon SNS. Verifíquelo iniciando sesión en la instancia. A continuación, intente conectarse a un punto de enlace público e intentar enviar mensajes a Amazon SNS.

En esta parte, se produce un error en la publicación. En un paso posterior, después de crear un punto de enlace de la VPC para Amazon SNS, el intento de publicación finaliza correctamente.

Para conectarse con la instancia de Amazon EC2, siga estos pasos:
  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el menú de navegación de la izquierda, busque la sección Instances (Instancias). A continuación, elija Instances (Instancias).

  3. En la lista de instancias, seleccione VPCE-Tutorial-EC2Instance.

  4. Copie el nombre de host que se proporciona en la columna Public DNS (IPv4) (DNS público (IPv4)).

    
	                Detalles sobre la instancia de Amazon EC2 lanzada por AWS CloudFormation.
  5. Abra un terminal. Desde el directorio que contiene el par de claves, conéctese a la instancia con el siguiente comando, en el que instance-hostname es el nombre de host que ha copiado de la consola de Amazon EC2.

    $ ssh -i VPCE-Tutorial-KeyPair.pem ec2-user@instance-hostname
Para verificar que la instancia carece de conectividad a Internet
  • En su terminal, intenta conectarse a cualquier punto de enlace público, como amazon.com:

    $ ping amazon.com

    Debido a que se produce un error en el intento de conexión, puede cancelar en cualquier momento (Ctrl + C en Windows o Comando + C en macOS).

Para verificar que la instancia carece de conectividad a Amazon SNS, siga estos pasos:
  1. Inicie sesión en la consola de Amazon SNS.

  2. En el menú de navegación de la izquierda, elija (Temas).

  3. En la página Topics (Temas), copie el nombre de recurso de Amazon (ARN) para el tema VPCE-Tutorial-Topic.

  4. En su terminal, intente publicar un mensaje en el tema:

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

    Debido a que se produce un error en el intento de publicación, puede cancelar en cualquier momento.

Paso 4: Crear un punto de enlace de la VPC para Amazon SNS

Para conectar la VPC a Amazon SNS, debe definir un punto de enlace de la VPC de tipo interfaz. Después de agregar el punto de enlace, puede iniciar sesión en la instancia de Amazon EC2 de la VPC y, desde ahí, puede utilizar la API de Amazon SNS. Puede publicar mensajes en el tema, que se publican de forma privada. Se mantienen en la red de AWS y no viajan por la red pública de Internet.

nota

Tenga en cuenta que la instancia aún carece de acceso a otros servicios y puntos de enlace de AWS en Internet.

Para crear el punto de enlace
  1. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.

  2. En el menú de navegación de la izquierda, elija Endpoints (Puntos de enlace).

  3. Elija Create Endpoint.

  4. En la página Crear punto de enlace, en Categoría de servicio, mantenga la opción predeterminada Servicios de AWS.

  5. En Nombre de servicio, seleccione el nombre de servicio de Amazon SNS.

    Los nombres de los servicios varían en función de la región que haya elegido. Por ejemplo, si elige EE. UU. Este (Norte de Virginia), el nombre del servicio es com.amazonaws.us-east-1.sns.

  6. En VPC, elija la VPC denominada VPCE-Tutorial-VPC.

    
	                El menú VPC de la página Create Endpoint (Crear punto de enlace).
  7. En Subnets (Subredes), seleccione la subred que tiene VPCE-Tutorial-Subnet en el ID de subred.

    
	                Las subredes en la página Create Endpoints (Crear puntos de enlace).
  8. En Enable Private DNS Name (Habilitar nombre de DNS privado), seleccione Enable for this endpoint (Habilitar para este punto de enlace).

  9. En Security group (Grupo de seguridad), elija Select security group (Seleccionar grupo de seguridad) y seleccione VPCE-Tutorial-SecurityGroup.

    
	                Los grupos de seguridad en la página Create Endpoints (Crear puntos de enlace).
  10. Elija Create endpoint. En la consola de Amazon VPC, se confirma que se creó un punto de enlace de la VPC.

    
	                El mensaje de confirmación que se muestra después de crear un punto de enlace.
  11. Seleccione la opción Close.

    En la consola de Amazon VPC, se abre la página Puntos de enlace. El nuevo punto de enlace tiene el estado pending (pendiente). En unos minutos, después de que se complete el proceso de creación, el estado cambia a available (disponible).

    
	                El punto de enlace de la VPC con el estado disponible.

Paso 5: Publicar un mensaje en el tema de Amazon SNS

Ahora que la VPC incluye un punto de enlace para Amazon SNS, puede iniciar sesión en la instancia de Amazon EC2 y publicar mensajes en el tema.

Para publicar un mensaje
  1. Si el terminal ya no está conectado a la instancia de Amazon EC2, conéctese de nuevo:

    $ ssh -i VPCE-Tutorial-KeyPair.pem ec2-user@instance-hostname
  2. Ejecute el mismo comando que usó anteriormente para publicar un mensaje en el tema de Amazon SNS. Esta vez, el intento de publicación se realiza correctamente y Amazon SNS devuelve un ID de mensaje:

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

Paso 6: Verificar las entregas de mensajes

Cuando el tema de Amazon SNS recibe un mensaje, envía el mensaje a las dos funciones de Lambda de la suscripción. Cuando estas funciones reciben el mensaje, registran el evento en CloudWatch Logs. Para verificar que el envío de mensajes se realizó correctamente, compruebe que las funciones se invocaron y compruebe que se actualizó CloudWatch Logs.

Para verificar que se invocaron las funciones Lambda, siga estos pasos:
  1. Abra la consola de AWS Lambda en https://console.aws.amazon.com/lambda/.

  2. En la página Functions (Funciones), elija VPCE-Tutorial-Lambda-1.

  3. Elija Monitoring (Monitorización).

  4. Consulte el gráfico Invocation count (Número de invocaciones). En este gráfico, se muestra la cantidad de veces que se ha ejecutado la función Lambda.

    El número de invocaciones coincide con el número de veces que ha publicado un mensaje en el tema.

    
	                El gráfico de la cantidad de invocaciones en la consola de Lambda.
Para verificar que se actualizó CloudWatch Logs, siga estos pasos:
  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. En el menú de navegación de la izquierda, elija Logs (Registros).

  3. Compruebe que las funciones Lambda hayan escrito los registros:

    1. Elija el grupo de registros /aws/lambda/VPCE-Tutorial-Lambda-1/.

    2. Elija el flujo de registros.

    3. Compruebe que el registro incluye la entrada From SNS: Hello.

      
	                    En CloudWatch Logs, se incluye la entrada “From SNS: Hello”.
    4. Elija Log Groups (Grupos de registros) en la parte superior de la consola para volver a la página Log Groups (Grupos de registros). A continuación, repita los pasos anteriores para el grupo de registros /aws/lambda/VPCE-Tutorial-Lambda-2/.

¡Enhorabuena! Al agregar un punto de enlace para Amazon SNS a una VPC, pudo publicar un mensaje en un tema desde de la red que administra la VPC. El mensaje se publicó de forma privada sin exponerse a la red pública de Internet.

Paso 7: limpieza

A menos que desee retener los recursos que creó, puede eliminarlos ahora. Si elimina los recursos de AWS que ya no utiliza, evitará gastos innecesarios en su Cuenta de AWS.

En primer lugar, elimine el punto de enlace de la VPC mediante la consola de Amazon VPC. A continuación, elimine los demás recursos que creó eliminando la pila en la consola de AWS CloudFormation. Cuando se elimina una pila, AWS CloudFormation elimina los recursos de la pila de su Cuenta de AWS.

Para eliminar su punto de enlace de la VPC
  1. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.

  2. En el menú de navegación de la izquierda, elija Endpoints (Puntos de enlace).

  3. Seleccione el punto de enlace que ha creado.

  4. Elija Actions (Acciones) y, a continuación, elija Delete Endpoint (Eliminar punto de enlace).

  5. En la ventana Delete Endpoint (Eliminar punto de enlace), elija Yes, Delete (Sí, eliminar).

    El estado del punto de enlace cambia a deleting (eliminando). Cuando finaliza la eliminación, el punto de enlace se quita de la página.

Para eliminar la pila de AWS CloudFormation
  1. Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.

  2. Seleccione la pila VPCE-Tutorial-Stack.

  3. Elija Actions (Acciones) y, a continuación, elija Delete Stack (Eliminar pila).

  4. En la ventana Delete Stack (Eliminar pila), elija Yes, Delete (Sí, eliminar).

    El estado de la pila cambia a DELETE_IN_PROGRESS. Cuando finaliza la eliminación, la pila se quita de la página.

Para obtener más información, consulte los recursos siguientes.