Utilizzo di AWS Elastic Beanstalk con Amazon VPC - AWS Elastic Beanstalk

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à.

Utilizzo di AWS Elastic Beanstalk con Amazon VPC

Puoi utilizzare un Amazon Virtual Private Cloud (Amazon VPC) per creare una rete sicura per l'applicazione Elastic Beanstalk e le risorse AWS correlate. Quando crei l'ambiente, scegli VPC, sottoreti e gruppi di sicurezza usati per le istanze dell'applicazione e il sistema di bilanciamento del carico. Puoi usare qualsiasi configurazione VPC desiderata, a condizione che soddisfi i requisiti seguenti.

Requisiti VPC
  • Accesso a Internet: le istanze possono accedere a Internet tramite uno dei metodi seguenti.

    • Sottorete pubblica: le istanze dispongono di un indirizzo IP pubblico e utilizzano un gateway Internet per accedere a Internet.

    • Sottorete privata: le istanze utilizzano un dispositivo NAT per accedere a Internet.

    Nota

    Se si configurano endpoint VPC nel VPC per connettersi sia ai servizi elasticbeanstalk sia ai servizi elasticbeanstalk-health, l'accesso a Internet è facoltativo ed è richiesto solo se necessario per l'applicazione. Senza endpoint VPC, il VPC deve avere accesso a Internet.

    Il VPC predefinito impostato automaticamente da Elastic Beanstalk fornisce accesso a Internet.

    Elastic Beanstalk non supporta le impostazioni proxy, ad esempio HTTPS_PROXY, per configurare un proxy Web.

  • NTP: le istanze nell'ambiente Elastic Beanstalk utilizzano NTP (Network Time Protocol) per sincronizzare l'orologio di sistema. Se le istanze non sono in grado di comunicare sulla porta UDP 123, l'orologio potrebbe non essere sincronizzato, causando problemi con il reporting dello stato di Elastic Beanstalk. Assicurati che i gruppi di sicurezza del tuo VPC e le liste di controllo degli accessi di rete permettano il traffico in entrata e in uscita su porte UDP 123 per evitare questi problemi.

Il repository elastic-beanstalk-samples fornisce modelli di AWS CloudFormation che puoi utilizzare per creare un VPC da utilizzare con gli ambienti Elastic Beanstalk.

Creazione delle risorse con un modello AWS CloudFormation
  1. Clonare i repository di esempio o scaricare un modello tramite i collegamenti disponibili in README.

  2. Aprire la console AWS CloudFormation.

  3. Selezionare Crea pila.

  4. Selezionare Upload a template to Amazon S3 (Carica un modello in Amazon S3).

  5. Selezionare Upload file (Carica file), quindi caricare il file modello dalla macchina locale.

  6. Scegliere Next (Successivo) e seguire le istruzioni per creare uno stack con le risorse all'interno del modello.

Al termine della creazione dello stack, esamina la scheda Outputs (Output) per trovare l'ID del VPC e gli ID delle sottoreti. Usa queste informazioni per configurare il VPC nella categoria di configurazione della rete nella procedura guidata del nuovo ambiente.

VPC pubblico

Modello AWS CloudFormation: vpc-public.yaml

Impostazioni (carico bilanciato)
  • Visibilità del sistema di bilanciamento del carico: pubblica

  • Sottoreti del sistema di bilanciamento del carico: entrambe le sottoreti pubbliche

  • IP pubblico istanza: abilitato

  • Sottoreti dell'istanza: entrambe le sottoreti pubbliche

  • Gruppi di sicurezza dell'istanza: aggiungi il gruppo di sicurezza predefinito

Impostazioni (istanza singola)
  • Sottoreti dell'istanza: una delle sottoreti pubbliche

  • Gruppi di sicurezza dell'istanza: aggiungi il gruppo di sicurezza predefinito

Un layout VPC solo pubblico include una o più sottoreti pubbliche, un gateway Internet e un gruppo di sicurezza predefinito che permette il traffico tra le risorse nel VPC. Quando crei un ambiente nel VPC, Elastic Beanstalk crea risorse aggiuntive che variano a seconda del tipo di ambiente.

Risorse VPC
  • Istanza singola: Elastic Beanstalk crea un gruppo di sicurezza per l'istanza dell'applicazione che permette il traffico sulla porta 80 da Internet e assegna all'istanza un IP elastico per fornire un indirizzo IP pubblico. Il nome di dominio dell'ambiente si risolve nell'indirizzo IP pubblico dell'istanza.

  • Carico bilanciato: Elastic Beanstalk crea un gruppo di sicurezza per il sistema di bilanciamento del carico che permette il traffico sulla porta 80 da Internet e un gruppo di sicurezza per le istanze dell'applicazione che permette il traffico dal gruppo di sicurezza del sistema di bilanciamento del carico. Il nome di dominio dell'ambiente si risolve nel nome di dominio pubblico del sistema di bilanciamento del carico.

Ciò è simile al modo in cui Elastic Beanstalk gestisce le reti quando si usa il VPC predefinito. La sicurezza in una sottorete pubblica dipende dal sistema di bilanciamento del carico e dai gruppi di sicurezza delle istanze creati da Elastic Beanstalk. Si tratta della configurazione meno costosa e non richiede un gateway NAT.

VPC pubblico/privato

Modello AWS CloudFormation: vpc-privatepublic.yaml

Impostazioni (carico bilanciato)
  • Visibilità del sistema di bilanciamento del carico: pubblica

  • Sottoreti del sistema di bilanciamento del carico: entrambe le sottoreti pubbliche

  • IP pubblico dell'istanza: disabilitato

  • Sottoreti dell'istanza: entrambe le sottoreti private

  • Gruppi di sicurezza dell'istanza: aggiungi il gruppo di sicurezza predefinito

Per maggiore sicurezza, aggiungi sottoreti private al VPC per creare un layout pubblico-privato. Questo layout richiede un sistema di bilanciamento del carico e il gateway NAT nelle sottoreti pubbliche e permette di eseguire le istanze dell'applicazione, il database e tutte le altre risorse nelle sottoreti private. Le istanze nelle sottoreti private possono comunicare con Internet solo tramite il sistema di bilanciamento del carico e il gateway NAT.

VPC privato

Modello AWS CloudFormation: vpc-private.yaml

Impostazioni (carico bilanciato)
  • Visibilità del sistema di bilanciamento del carico: privata

  • Sottoreti del sistema di bilanciamento del carico: entrambe le sottoreti sono private

  • IP pubblico dell'istanza: disabilitato

  • Sottoreti dell'istanza: entrambe le sottoreti private

  • Gruppi di sicurezza dell'istanza: aggiungi il gruppo di sicurezza predefinito

Per le applicazioni interne che non devono essere accessibili da Internet, è possibile impostare l'esecuzione nelle sottoreti private e configurare il sistema di bilanciamento del carico come interno, modificando l'impostazione di Load balancer visibility (Visibilità sistema di bilanciamento del carico) su Internal (Interna). Questo modello crea un VPC senza sottoreti pubbliche e senza gateway Internet. Usa questo layout per le applicazioni che devono essere accessibili solo dallo stesso VPC o da una VPN collegata.

Esecuzione di un ambiente Elastic Beanstalk in un VPC privato

L'ambiente Elastic Beanstalk creato in un VPC privato non dispone di accesso a Internet. L'applicazione potrebbe richiedere l'accesso al servizio Elastic Beanstalk o ad altri servizi. L'ambiente potrebbe utilizzare il reporting dello stato avanzato e, in questo caso, le istanze dell'ambiente inviano informazioni sullo stato al servizio di stato avanzato. Inoltre, il codice Elastic Beanstalk sulle istanze dell'ambiente invia traffico ad altri servizi AWS e altro traffico agli endpoint non AWS (ad esempio, per scaricare i pacchetti di dipendenza per l'applicazione). Di seguito sono riportati alcuni passaggi che potrebbe essere necessario eseguire in questo caso per garantire che l'ambiente funzioni correttamente.

  • Configurare gli endpoint VPC per Elastic Beanstalk: Elastic Beanstalk e il relativo servizio di stato avanzato supportano gli endpoint VPC. Ciò garantisce che il traffico verso questi servizi rimanga all'interno della rete Amazon e non richieda l'accesso a Internet. Per ulteriori informazioni, consulta . Utilizzo di Elastic Beanstalk con endpoint VPC.

  • Configurare gli endpoint VPC per servizi aggiuntivi: le istanze Elastic Beanstalk inviano automaticamente traffico a diversi altri servizi AWS per tuo conto: Amazon Simple Storage Service (Amazon S3), Amazon Simple Queue Service (Amazon SQS), AWS CloudFormation e Amazon CloudWatch Logs. È necessario configurare gli endpoint VPC anche per questi servizi. Per informazioni dettagliate sugli endpoint VPC, inclusi i collegamenti per servizio, consulta Endpoint VPC nella Guida per l'utente di Amazon VPC.

    Nota

    Alcuni servizi AWS, incluso Elastic Beanstalk, supportano gli endpoint VPC in un numero limitato di Regioni AWS. Durante la progettazione della soluzione VPC privata, verifica che Elastic Beanstalk e gli altri servizi dipendenti menzionati qui supportino gli endpoint VPC nella Regione AWS selezionata.

  • Fornire un'immagine Docker privata: in un ambiente Docker, è possibile che il codice nelle istanze dell'ambiente tenti, senza riuscirci, di estrarre l'immagine Docker configurata da Internet durante la creazione dell'ambiente. Per evitare questo errore, crea un'immagine Docker personalizzata nel tuo ambiente o utilizza un'immagine Docker archiviata in Amazon Elastic Container Registry (Amazon ECR) e configura un endpoint VPC per il servizio Amazon ECR.

  • Abilitare nomi DNS: il codice Elastic Beanstalk nelle istanze di ambiente invia il traffico a tutti i servizi AWS utilizzando i relativi endpoint pubblici. Per garantire il passaggio del traffico, scegliere l'opzione Enable DNS name (Abilita nome DNS) quando si configurano tutti gli endpoint VPC dell'interfaccia. In questo modo viene aggiunta una voce DNS nel VPC che associa l'endpoint del servizio pubblico all'endpoint VPC dell'interfaccia.

    Importante

    Se il VPC non è privato e dispone di accesso a Internet pubblico e se Enable DNS name (Abilita nome DNS) è disabilitato per qualsiasi endpoint VPC, il traffico verso il rispettivo servizio passa attraverso Internet pubblico. Probabilmente non quanto si desiderava ottenere. È facile rilevare questo problema con un VPC privato, perché impedisce il passaggio del traffico e si ricevono errori. Tuttavia, con un VPC pubblico, non si ottiene alcuna indicazione.

  • Includere dipendenze dell'applicazione: se l'applicazione dispone di dipendenze, ad esempio pacchetti di runtime del linguaggio, potrebbe tentare, senza riuscirci, di scaricarle da Internet e installarle durante la creazione dell'ambiente. Per evitare questo errore, includere tutti i pacchetti di dipendenza nel bundle di origine dell'applicazione.

  • Utilizzare una versione corrente della piattaforma: assicurarsi che l'ambiente utilizzi una versione della piattaforma rilasciata il 24 febbraio 2020 o in seguito. In particolare, utilizzare una versione della piattaforma rilasciata a partire da uno di questi due aggiornamenti: Linux Update 2020-02-28, Windows Update 2020-02-24.

    Nota

    Una versione aggiornata della piattaforma è necessaria a causa di un problema delle versioni precedenti che impedisce alle voci DNS create dall'opzione Enable DNS name (Abilita nome DNS) di funzionare correttamente per Amazon SQS.