Publicar un SNS mensaje de Amazon 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.

Publicar un SNS mensaje de Amazon desde Amazon VPC

En esta sección se describe cómo publicar en un SNS tema de Amazon y, al mismo tiempo, mantener los mensajes seguros en una red privada. Publicas un mensaje desde una EC2 instancia de Amazon alojada en Amazon Virtual Private Cloud (AmazonVPC). El mensaje permanece dentro de la AWS red sin viajar por la Internet pública. Al publicar mensajes de forma privada desde unVPC, puedes mejorar la seguridad del tráfico entre tus aplicaciones y AmazonSNS. Esta seguridad es importante cuando publicas información de identificación personal (PII) sobre tus clientes o cuando tu solicitud está sujeta a las normas del mercado. Por ejemplo, publicar de forma privada es útil si tienes un sistema de salud que debe cumplir con la Ley de Portabilidad y Responsabilidad de los Seguros Médicos (HIPAA) o un sistema financiero que debe cumplir con el Estándar de Seguridad de Datos del Sector de Tarjetas de Pago (PCIDSS).

Los pasos generales son los siguientes:

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

  • Cree un VPC punto final que lo conecte VPC con AmazonSNS.

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

  • Verificar que el mensaje se entregó correctamente.

  • Elimina los recursos que creaste durante este proceso para que no permanezcan en tu archivo 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 consiste en una VPC que contiene una EC2 instancia de Amazon. La instancia se conecta a Amazon a SNS través de un VPCpunto final de interfaz. Este tipo de punto final se conecta a los servicios que funcionan con AWS PrivateLink. Con esta conexión establecida, puede iniciar sesión en la EC2 instancia de Amazon y publicar mensajes en el SNS tema de Amazon, aunque la red esté desconectada de la Internet pública. El tema distribuye los mensajes que recibe en dos AWS Lambda funciones 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). Cuando te registras, tu cuenta se registra automáticamente en todos los servicios de Amazon AWS, incluidos Amazon SNS y AmazonVPC. 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 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 le da al archivo una extensión de.pem.

  6. (Opcional) Si utilizas un SSH cliente en un ordenador Mac o Linux para conectarte a tu instancia, usa el chmod comando para configurar los permisos del archivo de clave privada de forma que solo tú puedas 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 actúa como modelo para crear AWS recursos, como EC2 instancias de Amazon y SNS temas de Amazon. La plantilla para este proceso está disponible GitHub para que la descargues.

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:

  • A VPC y los recursos de red asociados, que incluyen una subred, un grupo de seguridad, una puerta de enlace a Internet y una tabla de enrutamiento.

  • Una EC2 instancia de Amazon que se lanza a la subred deVPC.

  • Un SNS tema de Amazon.

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

  • Estadísticas CloudWatch y registros de Amazon.

  • Un IAM rol que permite a la EC2 instancia de Amazon usar Amazon SNS y un IAM rol que permite que las funciones de Lambda escriban en los CloudWatch registros.

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 de0.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, reconozca que AWS CloudFormation puede crear IAM recursos con nombres personalizados.

  9. Seleccione Crear.

    La AWS CloudFormation consola abre la página Stacks. El VPCE -Tutorial-Stack tiene el estado _IN_. CREATE PROGRESS En unos minutos, una vez finalizado el proceso de creación, el estado cambia a _. CREATE COMPLETE

    La AWS CloudFormation pila con un estado de 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ó 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, intenta conectarte a un punto final público e intenta enviar un mensaje a AmazonSNS.

En esta parte, se produce un error en la publicación. En un paso posterior, después de crear un VPC punto de conexión para AmazonSNS, el intento de publicación se realizará 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 Public DNS (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 es 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 comprobar que la instancia carece de conectividad con Amazon SNS
  1. Inicia sesión en la SNSconsola de Amazon.

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

  3. En la página de temas, copia el nombre del 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 VPC punto de conexión de Amazon para Amazon SNS

Para conectarlo VPC a AmazonSNS, debe definir un VPC punto final de interfaz. Tras añadir el punto de conexión, puedes iniciar sesión en la EC2 instancia de Amazon de tu cuenta yVPC, desde allí, utilizar Amazon SNSAPI. 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. Abre la VPC consola de Amazon 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 del servicio, elige el nombre del servicio para AmazonSNS.

    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. Para VPC, elija el VPC que tiene el nombre VPCE-Tutorial -. VPC

    El VPC menú de la página Crear punto final.
  7. En el caso de las subredes, elija la subred que tenga VPCE-Tutorial-Subnet en el ID de subred.

    Las subredes en la página Create Endpoints (Crear puntos de enlace).
  8. En Habilitar DNSnombre privado, seleccione Habilitar para este punto final.

  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. Seleccione Crear punto de conexión. La VPC consola de Amazon confirma que se creó un VPC punto final.

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

    La VPC consola de Amazon abre la página Endpoints. 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 VPC punto final cuyo estado es disponible.

Paso 5: Publica un mensaje en tu SNS tema de Amazon

Ahora que VPC incluye un punto de conexión para AmazonSNS, puede iniciar sesión en la EC2 instancia de 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. Ejecuta el mismo comando que utilizaste anteriormente para publicar un mensaje en tu SNS tema de Amazon. Esta vez, el intento de publicación se realiza correctamente y Amazon SNS devuelve un identificador 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 SNS tema de Amazon recibe un mensaje, lo distribuye en abanico enviándolo a las dos funciones de Lambda suscritas. Cuando estas funciones reciben el mensaje, registran el evento en los registros. CloudWatch 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 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 registros se han actualizado CloudWatch
  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.

      CloudWatch El registro incluye la entrada «De: Hola». SNS
    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/ -Tutorial-Lambda-2/VPCE.

¡Enhorabuena! Al añadir un punto de conexión SNS para Amazon a unVPC, podías publicar un mensaje en un tema desde la red gestionada porVPC. 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, elimina tu VPC punto de conexión mediante la VPC consola de Amazon. A continuación, elimina los demás recursos que creaste 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 tu VPC punto final
  1. Abre la VPC consola de Amazon 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 -Tutorial-StackVPCE.

  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 _IN_. DELETE PROGRESS Cuando finaliza la eliminación, la pila se quita de la página.

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