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. Publicas un mensaje desde una EC2 instancia de Amazon alojada en Amazon Virtual Private Cloud (Amazon VPC). El mensaje permanece dentro de la AWS red sin circular por la Internet pública. 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:

  • Utilice una AWS CloudFormation plantilla para crear automáticamente una red privada temporal en su Cuenta de AWS.

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

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

  • Verificar que el mensaje se entregó correctamente.

  • Elimine los recursos que creó durante este proceso para que no permanezcan en su Cuenta de AWS servidor.

El siguiente diagrama muestra la red privada que crearás en tu AWS cuenta al completar estos pasos:

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

Esta red se compone 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 final se conecta a los servicios que funcionan con la tecnología de AWS PrivateLink. Con esta conexión establecida, puede iniciar sesión en la EC2 instancia de Amazon y publicar mensajes en el tema Amazon SNS, aunque la red esté desconectada de la Internet pública. El tema distribuye los mensajes que recibe en dos funciones de suscripción AWS Lambda . 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). Cuando te registras, tu cuenta se registra automáticamente en todos los servicios de Amazon 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 EC2 key pair de Amazon

Se usa un key pair para iniciar sesión en una EC2 instancia de Amazon. 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. Más adelante, utilizarás el key pair para iniciar sesión en una EC2 instancia de Amazon. Para iniciar sesión, debe especificar el nombre del par de claves y proporcionar la clave privada.

Para crear el par de claves
  1. Inicia sesión en la EC2 consola de Amazon AWS Management Console y ábrela 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 Crear.

    La ventana Crear par de claves con el texto «VPCE-Tutorial-KeyPair» en el campo del nombre del par de claves.
  5. Su navegador descargará el archivo de clave privada automáticamente. Guárdelo en un lugar seguro. Amazon EC2 le da al archivo una extensión de.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: Crea los AWS recursos

Para configurar la infraestructura, se utiliza una AWS CloudFormation plantilla. Una plantilla es un archivo que actúa como modelo para crear AWS recursos, como EC2 instancias de Amazon y temas de Amazon SNS. La plantilla de este proceso está disponible GitHub para que la descargue.

Usted proporciona la plantilla y AWS CloudFormation AWS CloudFormation aprovisiona los recursos que necesita como una pila en su Cuenta de AWS. Una pila es una colección de recursos que administra como una única unidad. Cuando termines estos pasos, podrás AWS CloudFormation eliminarlos todos los recursos de la pila a la vez. Estos recursos no permanecen en tus manos Cuenta de AWS, a menos que así lo desees.

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 EC2 instancia de Amazon que se lanza a la subred de la VPC.

  • Un tema de Amazon SNS.

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

  • Estadísticas CloudWatch y registros de Amazon.

  • Una función de IAM que permite a la EC2 instancia de Amazon utilizar Amazon SNS y una función de IAM que permite a las funciones de Lambda escribir en los registros. CloudWatch

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

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

  3. Elija Crear pila.

  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. Para KeyName, elija VPCE-Tutorial-. KeyPair

    3. Para SSHLocation, mantenga el valor predeterminado de. 0.0.0.0/0

      La página Especificar detalles que muestra los campos de valores rellenados para el nombre de la pila KeyName, y SSHLocation.
    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, reconozca que AWS CloudFormation podría crear recursos de IAM con nombres personalizados.

  9. Seleccione Crear.

    La AWS CloudFormation consola abre la página Stacks. VPCE-Tutorial-StackTiene 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 AWS CloudFormation pila con el estado CREATE_COMPLETE.
    sugerencia

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

Paso 3: Confirma que tu EC2 instancia de Amazon carece de acceso a Internet

La EC2 instancia de Amazon que se lanzó en tu 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 conectarte a tu EC2 instancia de Amazon
  1. Abre la EC2 consola de Amazon 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, selecciona VPCE-. Tutorial-EC2Instance

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

    Detalles sobre la EC2 instancia de Amazon lanzada por AWS CloudFormation.
  5. Abra un terminal. Desde el directorio que contiene el key pair, conéctate a la instancia mediante el siguiente comando, donde instance-hostname está el nombre de host que copiaste de la EC2 consola de Amazon:

    $ 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. Tras añadir el punto de enlace, puede iniciar sesión en la EC2 instancia de Amazon de su VPC y, desde allí, utilizar la API de Amazon SNS. Puede publicar mensajes en el tema, que se publican de forma privada. Permanecen dentro de la AWS red y no viajan por la Internet pública.

nota

La instancia aún carece de acceso a otros AWS servicios y puntos finales de 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. Seleccione Crear punto de conexión.

  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 eliges US East (Virginia del Norte), 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 Grupo de seguridad, elija Seleccionar grupo de seguridad y elija VPCE-Tutorial -. SecurityGroup

    Los grupos de seguridad en la página Create Endpoints (Crear puntos de enlace).
  10. Elija Crear punto de conexión. 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 Cerrar.

    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 su VPC incluye un punto de enlace para Amazon SNS, puede iniciar sesión en la instancia de EC2 Amazon y publicar mensajes en el tema.

Para publicar un mensaje
  1. Si tu terminal ya no está conectado a tu EC2 instancia de Amazon, vuelve a conectarte:

    $ 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 los CloudWatch registros. Para comprobar que la entrega del mensaje se ha realizado correctamente, compruebe que se hayan invocado las funciones y compruebe que los CloudWatch registros se hayan actualizado.

Para verificar que se invocaron las funciones Lambda, siga estos pasos:
  1. Abra la AWS Lambda consola 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 comprobar que los CloudWatch registros se han actualizado
  1. Abra la CloudWatch consola 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.

      El CloudWatch registro incluye la entrada «Desde SNS: Hola».
    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 the /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: limpiar

A menos que desee retener los recursos que creó, puede eliminarlos ahora. Al eliminar AWS los recursos que ya no utilizas, evitas que se te cobren cargos innecesarios. Cuenta de AWS

En primer lugar, elimine el punto de enlace de la VPC mediante la consola de Amazon VPC. A continuación, elimina los demás recursos que hayas creado eliminando la pila de la AWS CloudFormation consola. Al eliminar una pila, AWS CloudFormation elimina los recursos de la pila de los tuyos 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 tu AWS CloudFormation pila
  1. Abre la AWS CloudFormation consola 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 siguientes recursos.