Pubblicazione di un messaggio Amazon SNS da Amazon VPC - Amazon Simple Notification Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Pubblicazione di un messaggio Amazon SNS da Amazon VPC

In questa sezione viene descritto come pubblicare in un argomento Amazon SNS mantenendo i messaggi protetti in una rete privata. Puoi pubblicare un messaggio da un'istanza Amazon EC2 ospitata in Amazon Virtual Private Cloud (Amazon VPC). Il messaggio rimane sulla rete AWS senza viaggiare sulla rete Internet pubblica. Per pubblicare messaggi privatamente da un VPC, è possibile migliorare la sicurezza del traffico tra le applicazioni e Amazon SNS. Questa sicurezza è importante quando si pubblicano informazioni personali identificabili (PII) sui tuoi clienti oppure quando l'applicazione è soggetta a normative di mercato. Ad esempio, la pubblicazione in privato è utile se si tratta di un sistema sanitario che deve rispettare l'Health Insurance Portability and Accountability Act (HIPAA) o di un sistema finanziario che deve essere conforme al Payment Card Industry Data Security Standard (PCI DSS).

La procedura generale da seguire è riportata di seguito:

  • Utilizzare un modello AWS CloudFormation per creare automaticamente una rete privata temporanea nell'account Account AWS.

  • Creare un endpoint VPC che collega VPC con Amazon SNS.

  • Accedere a un'istanza Amazon EC2 e pubblicare un messaggio in privato a un argomento Amazon SNS.

  • Verificare che il messaggio sia stato consegnato correttamente.

  • Eliminare le risorse create per durante questa procedura in modo che non rimangano nell' Account AWS.

Il diagramma seguente illustra la rete privata creata nell'account AWS una volta completato questa procedura:

L'architettura della rete privata creata con questa procedura.

Questa rete è costituita da un VPC che contiene un'istanza Amazon EC2. L'istanza si collega a Amazon SNS; attraverso un endpoint VPC di interfaccia. Questo tipo di endpoint si connette ai servizi supportati da AWS PrivateLink. Con questa connessione stabilita, puoi accedere all'istanza Amazon EC2 e pubblicare messaggi all'argomento Amazon SNS, anche se la rete è disconnessa dalla rete Internet pubblica. L'argomento distribuisce i messaggi che riceve a due funzioni AWS Lambda di sottoscrizione. Queste funzioni registrano i messaggi ricevuti in Amazon CloudWatch Logs.

Per completare questi passaggi occorrono circa 20 minuti.

Prima di iniziare

Prima di iniziare è necessario un account Amazon Web Services (AWS). Quando accedi, il tuo account viene automaticamente registrato per tutti i servizi in AWS, compreso Amazon SNS e Amazon VPC. Se non hai già creato un account, vai a https://aws.amazon.com/, quindi scegli Crea un account gratuito.

Fase 1: Creazione di una coppia di chiavi di Amazon EC2

Una coppia di chiavi viene utilizzata per effettuare l'accesso a un'istanza Amazon EC2. È costituita da una chiave pubblica utilizzata per crittografare le informazioni di accesso e una chiave privata utilizzata per decifrarle. Quando crei una coppia di chiavi, viene scaricata una copia della chiave privata. Successivamente, una coppia di chiavi viene utilizzata per effettuare l'accesso a un'istanza Amazon EC2. Per effettuare l'accesso, è necessario specificare il nome della coppia di chiavi e fornire la chiave privata.

Per creare la coppia di chiavi
  1. Accedere a AWS Management Console e aprire la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel menu di navigazione a sinistra, individua la sezione Network & Security (Rete e sicurezza). Quindi scegli Key Pairs (Coppie di chiavi).

  3. Scegli Crea coppia di chiavi.

  4. Nella finestra Create Key Pair (Crea coppia di chiavi), per Key pair name (Nome coppia di chiavi), digita VPCE-Tutorial-KeyPair. Quindi scegli Create (Crea).

    Finestra Create Key Pair (Crea coppia di chiavi).
  5. Il file della chiave privata viene automaticamente scaricato dal browser. Salvalo in un posto sicuro. Amazon EC2 assegna al file un'estensione .pem.

  6. (Facoltativo) Se usi un client SSH su un computer Mac o Linux per connetterti alla tua istanza, usa il comando chmod per impostare le autorizzazioni del file della chiave privata in modo da essere l'unico a poterlo leggere:

    1. Apri un terminale e vai alla directory che contiene la chiave privata:

      $ cd /filepath_to_private_key/
    2. Imposta le autorizzazioni utilizzando il comando seguente:

      $ chmod 400 VPCE-Tutorial-KeyPair.pem

Fase 2: creazione delle risorse AWS

Per configurare l'infrastruttura è possibile utilizzare un modello AWS CloudFormation. Un modello è un file che funge come schema per la creazione di risorse AWS, come istanze Amazon EC2 e argomenti Amazon SNS. È possibile scaricare il modello per questa procedura su GitHub.

Puoi fornire il modello a AWS CloudFormation e AWS CloudFormation effettua il provisioning delle risorse di cui hai bisogno come uno stack nel proprio Account AWS. Uno stack è una raccolta di risorse che puoi gestire come un'unità singola. Una volta terminato la procedura, è possibile utilizzare AWS CloudFormation per eliminare contemporaneamente tutte le risorse nello stack. Queste risorse non rimangono nell' Account AWS a meno che non lo si desideri.

Lo stack per questa procedura include le seguenti risorse:

  • Un VPC e le risorse di rete associate, tra cui una sottorete, un gruppo di sicurezza, un gateway Internet e una tabella di routing.

  • Un'istanza Amazon EC2; avviata nella sottorete nel VPC.

  • Argomento Amazon SNS

  • Due funzioni AWS Lambda. Queste funzioni ricevono messaggi che vengono pubblicati all'argomento Amazon SNS e registrano gli eventi in CloudWatch Logs.

  • Parametri e registri di Amazon CloudWatch

  • Un ruolo IAM; che consente all'istanza Amazon EC2 di utilizzare Amazon SNS e un ruolo IAM che consente alle funzioni Lambda; di scrivere nei CloudWatch logs.

Per creare le risorse AWS
  1. Scarica il file di modello dal sito Web di GitHub.

  2. Accedi alla console AWS CloudFormation.

  3. Scegli Create Stack (Crea stack).

  4. Nella pagina Select Template (Seleziona modello) scegli Upload a template to Amazon S3 (Carica un modello in Amazon S3), seleziona il file, quindi scegli Next (Avanti).

  5. Nella pagina Specify Details (Specifica dettagli), specifica i nomi dello stack e della chiave:

    1. Per Stack name (Nome stack), digitare VPCE-Tutorial-Stack.

    2. Per KeyName (Nome chiave), scegli VPCE-Tutorial-KeyPair.

    3. Per SSHLocation, lascia il valore predefinito di 0.0.0.0/0.

      La pagina Specify Details (Specifica dettagli).
    4. Seleziona Next (Successivo).

  6. Nella pagina Options (Opzioni), lascia tutti i valori predefiniti e scegli Next (Avanti).

  7. Nella pagina Review (Rivedi), verifica i dettagli dello stack.

  8. In Funzionalità, ricordare che AWS CloudFormation può creare risorse IAM con nomi personalizzati.

  9. Scegliere Create (Crea).

    La console AWS CloudFormation apre la pagina Stacks (Stack). Il VPCE-Tutorial-Stack ha lo stato CREATE_IN_PROGRESS. Dopo pochi minuti, quando il processo di creazione è stato completato, lo stato diventa CREATE_COMPLETE.

    Lo stack AWS CloudFormation con stato CREATE_COMPLETE.
    Suggerimento

    Scegli il pulsante Refresh (Aggiorna) per visualizzare l'ultimo stato dello stack.

Fase 3: Conferma che l'istanza Amazon EC2; non dispone di accesso Internet

L'istanza Amazon EC2 che è stata avviata nel VPC nella fase precedente non dispone di accesso a Internet. Non consente il traffico in uscita e non è in grado di pubblicare messaggi a Amazon SNS. Verifica accedendo all'istanza. Quindi, prova a connetterti a un endpoint pubblico e ad inviare un messaggio a Amazon SNS.

A questo punto della procedura il tentativo di pubblicazione ha esito negativo. In un secondo momento, dopo aver creato un endpoint VPC per Amazon SNS il tentativo di pubblicazione va a buon fine.

Eseguire la connessione all'istanza di Amazon EC2.
  1. Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel menu di navigazione a sinistra, individua la sezione Instances (Istanze). Quindi scegli Instances (Istanze).

  3. Nell'elenco delle istanze, seleziona VPCE-Tutorial-EC2Instance.

  4. Copia il nome host fornito nella colonna Public DNS (IPv4).

    Dettagli sull'istanza Amazon EC2 avviata da AWS CloudFormation.
  5. Aprire un terminale. Dalla directory che contiene la coppia di chiavi, connettiti all'istanza utilizzando il comando seguente, dove instance-hostname è il nome host copiato dalla console Amazon EC2:

    $ ssh -i VPCE-Tutorial-KeyPair.pem ec2-user@instance-hostname
Per verificare che l'istanza non dispone di una connessione a Internet
  • Nel terminale, tenta di connetterti a un endpoint pubblico, ad esempio amazon.com:

    $ ping amazon.com

    Poiché il tentativo di connessione ha esito negativo, è possibile annullare in qualsiasi momento (Ctrl+C in Windows o Comando+C su macOS).

Per verificare che l'istanza non dispone di una connessione a Amazon SNS
  1. Accedi alla console Amazon SNS.

  2. Nel menu di navigazione a sinistra, scegli Topics (Argomenti).

  3. Nella pagina Topics (Argomenti), copia l'Amazon Resource Name (ARN) per l'argomento VPCE-Tutorial-Topic.

  4. Nel terminale, tenta di pubblicare un messaggio all'argomento:

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

    Poiché il tentativo di pubblicazione ha esito negativo, è possibile annullare in qualsiasi momento.

Fase 4: Creazione di un endpoint Amazon VPC per Amazon SNS

Per collegare il tuo VPC a Amazon SNS, definisci un endpoint VPC dell'interfaccia. Dopo aver aggiunto l'endpoint, è possibile accedere all'istanza Amazon EC2 nel proprio VPC, quindi è possibile utilizzare l'API di Amazon SNS. È possibile pubblicare messaggi all'argomento che vengono pubblicati privatamente. Rimangono nella rete AWS e non viaggiano sulla rete Internet pubblica.

Nota

L'istanza non dispone ancora dell'accesso ad altri servizi AWS ed endpoint su Internet.

Per creare l'endpoint
  1. Accedere alla console Amazon VPC all'indirizzo https://console.aws.amazon.com/vpc/.

  2. Nel menu di navigazione a sinistra, scegli Endpoints.

  3. Scegliere Create Endpoint (Crea endpoint).

  4. Nella pagina Crea endpoint, per Categoria di servizio lascia la scelta predefinita di AWS Servizi.

  5. Per Nome servizio, scegli il nome del servizio per Amazon SNS;.

    I nomi dei servizi variano in base alla regione scelta. Ad esempio, se si sceglie Stati Uniti orientali (Virginia settentrionale), il nome del servizio è com.amazonaws.us-east-1.sns.

  6. Per VPC, scegli il VPC che ha il nome VPCE-Tutorial-VPC.

    Il menu VPC nella pagina Create Endpoint (Crea endpoint).
  7. Per Subnets (Sottoreti), scegli la sottorete che ha VPCE-Tutorial-Subnet nell'ID della sottorete.

    Le sottoreti nella pagina Create Endpoints (Crea endpoint).
  8. Per Enable Private DNS Name (Abilita nome DNS privato), seleziona Enable for this endpoint (Abilita per questo endpoint).

  9. Per Security group (Gruppo di sicurezza), scegli Select security group (Seleziona gruppo di sicurezza) e seleziona VPCE-Tutorial-SecurityGroup.

    I gruppi di sicurezza nella pagina Create Endpoints (Crea endpoint).
  10. Selezionare Create endpoint (Crea endpoint). La console Amazon VPC conferma che è stato creato un endpoint VPC.

    Il messaggio di conferma visualizzato dopo aver creato un endpoint.
  11. Scegli Close (Chiudi).

    La console Amazon VPC apre la pagina Endpoints. Il nuovo endpoint ha lo stato pending (in sospeso). Dopo pochi minuti, quando il processo di creazione è stato completato, lo stato diventa available (disponibile).

    L'endpoint VPC con stato disponibile.

Fase 5: Pubblicazione di un messaggio nel proprio argomento Amazon SNS

Ora che il VPC include un endpoint per Amazon SNS, può possibile accedere all'istanza Amazon EC2 e pubblicare messaggi nell'argomento.

Per pubblicare un messaggio
  1. Se il terminale non è più connesso all'istanza Amazon EC2, effettuare nuovamente il collegamento:

    $ ssh -i VPCE-Tutorial-KeyPair.pem ec2-user@instance-hostname
  2. Eseguire lo stesso comando eseguito precedentemente per pubblicare un messaggio nel proprio argomento Amazon SNS. Questa volta, il tentativo di pubblicazione va a buon fine e Amazon SNS; restituisce un ID messaggio:

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

Fase 6: verifica delle consegne del messaggio

Quando l'argomento Amazon SNS riceve un messaggio, distribuisce il messaggio inviandolo alle due funzioni Lambda di sottoscrizione. Quando queste funzioni ricevono il messaggio, registrano l'evento nei CloudWatch logs. Per verificare che la consegna del messaggio sia riuscita, controllare che le funzioni siano state richiamate e che i CloudWatch logs siano stati aggiornati.

Per verificare che le funzioni Lambda; siano state richiamate
  1. Apri la console AWS Lambda all'indirizzo https://console.aws.amazon.com/lambda/.

  2. Nella pagina Functions (Funzioni), scegli VPCE-Tutorial-Lambda-1.

  3. Selezionare Monitoring (Monitoraggio).

  4. Controlla il grafico Invocation count (Conteggio invocazioni). Questo grafico mostra il numero di volte che la funzione Lambda; è stata eseguita.

    Il conteggio di invocazioni corrisponde al numero di volte in cui è stato pubblicato un messaggio all'argomento.

    Il grafico del conteggio invocazioni nella console Lambda.
Per verificare che i CloudWatch logs siano stati aggiornati
  1. Aprire la console CloudWatch all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nel menu di navigazione a sinistra, scegli Logs.

  3. Controlla i log scritti dalle funzioni Lambda:

    1. Scegli il gruppo di log /aws/lambda/VPCE-Tutorial-Lambda-1/.

    2. Scegli il flusso di log.

    3. Verifica che il log includa la voce From SNS: Hello.

      Il log CloudWatch include la voce "From SNS: Hello".
    4. Scegli Log Groups (Gruppi di log) nella parte superiore della console per tornare alla pagina Log Groups (Gruppi di log). Quindi ripeti le fasi precedenti per il gruppo di log /aws/lambda/VPCE-Tutorial-Lambda-2/.

Complimenti! Aggiungendo un endpoint per Amazon SNS a un VPC, è possibile pubblicare un messaggio in un argomento all'interno della rete gestita dal VPC. Il messaggio è stato pubblicato privatamente senza essere esposto sulla rete Internet pubblica.

Passaggio 7: pulizia

Se non si desidera conservare le risorse create, è possibile eliminarle ora. Eliminando le risorse AWS che non si utilizzano più, è possibile evitare addebiti superflui sul proprio account Account AWS.

In primo luogo, elimina l'endpoint VPC utilizzando la console Amazon VPC. Quindi elimina le altre risorse create eliminando lo stack nella console AWS CloudFormation. Quando si elimina uno stack, AWS CloudFormation rimuove le risorse dello stack dal proprio Account AWS.

Per eliminare l'endpoint VPC
  1. Accedere alla console Amazon VPC all'indirizzo https://console.aws.amazon.com/vpc/.

  2. Nel menu di navigazione a sinistra, scegli Endpoints.

  3. Seleziona l'endpoint creato.

  4. Scegli Actions (Operazioni), quindi Delete Endpoint (Elimina endpoint).

  5. Nella finestra Delete Endpoint (Elimina endpoint), scegli Yes, Delete (Sì, elimina).

    Lo stato dell'endpoint diventa deleting (in eliminazione). Quando l'eliminazione viene completata, l'endpoint viene rimosso dalla pagina.

Per eliminare lo stack AWS CloudFormation
  1. aprire la console di AWS CloudFormation all'indirizzo https://console.aws.amazon.com/cloudformation.

  2. Selezionare lo stack VPCE-Tutorial-Stack.

  3. Scegliere Actions (Operazioni), quindi Delete Stack (Elimina stack).

  4. Nella finestra Delete Stack (Elimina stack), scegli Yes, Delete (Sì, elimina).

    Lo stato dello stack diventa DELETE_IN_PROGRESS. Quando l'eliminazione viene completata, lo stack viene rimosso dalla pagina.

Per ulteriori informazioni, consulta le risorse seguenti.