Progetta la tua soluzione per Amazon ECS - Amazon Elastic Container Service

Progetta la tua soluzione per Amazon ECS

È necessario progettare le applicazioni in modo che possano essere eseguite su container. Un container è un'unità di sviluppo software standardizzata che contiene tutto ciò che è necessario per l'esecuzione dell'applicazione software. Ciò include codice, runtime, strumenti di sistema e librerie di sistema pertinenti. I container vengono creati da un modello di sola lettura denominato immagine. Un'immagine del container è un artefatto statico contenente l'applicazione e le sue dipendenze. Le immagini sono generalmente create da un Dockerfile. Un Dockerfile è un file di testo semplice che contiene le istruzioni per la creazione di un container. In seguito alla creazione, tali immagini vengono archiviate in un registro, ad esempio Amazon ECR, da cui possono essere scaricate.

Dopo aver creato e archiviato l'immagine, puoi creare una definizione dell'attività di Amazon ECS. Una definizione di attività è uno schema dell'applicazione. Si tratta di un file di testo in formato JSON che descrive i parametri e uno o più container che formano l'applicazione. Ad esempio, puoi utilizzarla per specificare l'immagine e i parametri del sistema operativo, i container da utilizzare, le porte da aprire per l'applicazione e i volumi di dati da utilizzare con i container nell'attività. I parametri specifici disponibili per la definizione di attività dipendono dalle esigenze dell'applicazione specifica.

Dopo aver stabilito la definizione di attività, implementala come servizio o attività nel cluster. Un cluster è un raggruppamento logico di attività o servizi in esecuzione sull'infrastruttura di capacità registrata in un cluster.

Si definisce attività la creazione dell'istanza relativa a una definizione dell'attività all'interno di un cluster. Puoi eseguire un processo autonomo oppure eseguire un processo come parte di un servizio. Puoi utilizzare un servizio Amazon ECS per eseguire e mantenere simultaneamente il numero desiderato di processi in un cluster Amazon ECS. Il funzionamento è che, se uno dei processi non riesce o si interrompe per qualsiasi motivo, il pianificatore del servizio Amazon ECS lancia un'altra istanza in base alla definizione di attività. Lo fa per sostituirlo e quindi mantenere il numero desiderato di processi nel servizio.

L'agente del container funziona su ogni istanza di container in un cluster Amazon ECS. L'agente invia ad Amazon ECS informazioni sui processi correntemente in esecuzione e sull'utilizzo delle risorse dei tuoi container. Avvia e interrompe i processi ogni volta che riceve una richiesta da Amazon ECS.

Dopo aver implementato l'attività o il servizio, puoi utilizzare uno degli strumenti seguenti per monitorare l'implementazione e l'applicazione:

  • CloudWatch

  • Monitoraggio del runtime

Capacità

Capacità: l'infrastruttura su cui vengono eseguiti i container Amazon ECS offre tre tipi di infrastruttura per i tuoi cluster:

  • Istanze gestite Amazon ECS: AWS gestisce completamente le istanze Amazon EC2 sottostanti in esecuzione nel tuo account, inclusi provisioning, patching e scalabilità. Questa opzione offre un equilibrio ottimale tra prestazioni, convenienza economica e semplicità operativa.

  • Serverless (Fargate): paghi solo per le risorse utilizzate dalle tue attività senza gestire alcuna infrastruttura. Ideale per carichi di lavoro variabili e per iniziare rapidamente.

  • Istanze Amazon EC2: gestisci direttamente le istanze Amazon EC2 sottostanti, inclusa la selezione, la configurazione e la manutenzione delle istanze.

Usa le istanze gestite di Amazon ECS quando:

  • Desideri la semplicità di Fargate con un maggiore controllo sull'infrastruttura sottostante.

  • Hai bisogno di prestazioni prevedibili e ottimizzazione dei costi.

  • Vuoi che AWS si occupi della gestione dell'infrastruttura mantenendo la flessibilità.

Usa Fargate quando:

  • Vuoi concentrarti sulla tua applicazione senza gestire l'infrastruttura.

  • Hai carichi di lavoro variabili o imprevedibili.

  • Stai iniziando con i container e desideri l'opzione di implementazione più semplice.

Usa le istanze Amazon EC2 quando:

  • Necessiti di requisiti hardware specializzati (accelerazione GPU, elaborazione ad alte prestazioni).

  • Necessiti di prenotazioni della capacità o tipi di istanze specifici.

  • Necessiti di funzionalità privilegiate o AMI personalizzate.

Specifici l'infrastruttura quando crei un cluster. Quando registri una definizione di attività, devi specificare anche il tipo di infrastruttura. La definizione dell'attività si riferisce all'infrastruttura come al “tipo di avvio”. Puoi anche utilizzare fornitori di capacità.

Endpoint di servizio

L'endpoint di servizio è l'URL del punto di ingresso per Amazon ECS che utilizzi per connetterti al servizio in modo programmatico utilizzando Il Protocollo Internet versione 4 (IPv4) o il Protocollo Internet versione 6 (IPv6). Per impostazione predefinita, le richieste che effettui per connetterti ad Amazon ECS utilizzano programmaticamente endpoint di servizio che supportano solo richieste IPv4. Per connetterti a livello di codice con Amazon ECS utilizzando richieste IPv4 o IPv6, puoi utilizzare un endpoint dual-stack. Per ulteriori informazioni sugli endpoint dual-stack, consulta Utilizzo degli endpoint dual-stack Amazon ECS.

Rete

Le risorse AWS vengono create in sottoreti. Quando utilizzi istanze EC2, Amazon ECS avvia le istanze nella sottorete specificata al momento della creazione di un cluster. Le tue attività vengono eseguite nella sottorete dell'istanza. Per le macchine virtuali Fargate oppure on-premises, si specifica la sottorete quando si esegue un'attività o si crea un servizio.

A seconda dell'applicazione, la sottorete può essere una sottorete privata o pubblica e può trovarsi in una delle seguenti risorse AWS:

  • Zone di disponibilità

  • Zone locali

  • Zone Wavelength

  • Regioni AWS

  • AWS Outposts

Per ulteriori informazioni, consulta Applicazioni Amazon ECS in sottoreti condivise, zone locali e zone Wavelength o Amazon Elastic Container Service su AWS Outposts.

È possibile collegare l'applicazione a Internet utilizzando uno dei seguenti metodi:

  • Una sottorete pubblica con un gateway Internet

    Utilizza le sottoreti pubbliche quando hai applicazioni pubbliche che richiedono grandi quantità di larghezza di banda o una latenza minima. Gli scenari applicabili includono lo streaming video e i servizi di gioco.

  • Una sottorete privata con un gateway NAT

    Utilizza le sottoreti private quando desideri proteggere i container dall'accesso esterno diretto. Gli scenari applicabili includono sistemi di elaborazione dei pagamenti o container che archiviano dati e password degli utenti.

  • AWS PrivateLink

    Utilizza AWS PrivateLink per avere una connettività privata tra VPC, servizi AWS e reti on-premises senza esporre il traffico alla rete Internet pubblica.

Accesso alle funzionalità

Puoi utilizzare le impostazioni dell'account Amazon ECS per accedere alle seguenti funzionalità:

  • Container Insights

    CloudWatch Container Insights raccoglie, aggrega e riepiloga parametri e registri di applicazioni e microservizi containerizzati. I parametri includono l'utilizzo di risorse come CPU, memoria, dischi e rete.

  • Trunking awsvpc

    Per alcuni tipi di istanze EC2, puoi avere interfacce di rete aggiuntive (ENI) disponibili sulle istanze di container appena lanciate.

  • Autorizzazione all'assegnazione di tag

    Gli utenti devono disporre dell'autorizzazione per le operazioni che creano la risorsa, ad esempio ecsCreateCluster. Se i tag vengono specificati nell'azione di creazione delle risorse, AWS esegue autorizzazioni aggiuntive per l'operazione ecs:TagResource al fine di verificare se gli utenti o i ruoli dispongono delle autorizzazioni per creare tag.

  • Conformità FIPS-140 di Fargate

    Fargate supporta il Federal Information Processing Standard (FIPS-140) che specifica i requisiti di sicurezza previsti per i moduli crittografici che proteggono le informazioni sensibili. È l'attuale standard governativo degli Stati Uniti e del Canada ed è applicabile ai sistemi che devono essere conformi al Federal Information Security Management Act (FISMA) o al Federal Risk and Authorization Management Program (FedRAMP).

  • Modifiche all'orario di ritiro delle attività Fargate

    Puoi configurare il periodo di attesa prima che le attività Fargate vengano ritirate per l'applicazione di patch.

  • VPC dual stack

    Consenti alle attività di comunicare tramite IPv4, IPv6 o entrambi.

  • Formato Amazon Resource Name (ARN)

    Alcune funzionalità, ad esempio l'autorizzazione all'assegnazione dei tag, richiedono un nuovo formato del Nome della risorsa Amazon (ARN).

Per ulteriori informazioni, consulta Accedi alle funzionalità di Amazon ECS con le impostazioni dell'account.

Ruoli IAM

Un ruolo IAM è un'identità IAM che puoi creare nell'account che dispone di autorizzazioni specifiche. In Amazon ECS puoi creare ruoli per concedere autorizzazioni a risorse Amazon ECS come container o servizi.

Alcune funzionalità di Amazon ECS richiedono dei ruoli. Per ulteriori informazioni, consulta Ruoli IAM per Amazon ECS.

Registrazione di log

I log e il monitoraggio sono importanti per garantire l'affidabilità, la disponibilità e le prestazioni dei carichi di lavoro di Amazon ECS. Sono disponibili le seguenti opzioni:

  • Log Amazon CloudWatch: indirizza i log verso Amazon CloudWatch

  • FireLens per Amazon ECS: indirizza i log verso un servizio AWS o una destinazione AWS Partner Network per l'archiviazione e l'analisi dei log. AWS Partner Network è una comunità globale di partner che sfrutta programmi, competenze e risorse per creare, commercializzare e vendere offerte ai clienti.

Best Practice per l'immagine dei container

Di seguito sono riportati i principi chiave per le immagini dei container Amazon ECS:

  • Includere tutte le dipendenze nell'immagine

  • Eseguire un processo per ciascun container

  • Gestire SIGTERM per spegnimenti senza intoppi

  • Scrivere i log su stdout e stderr

  • Utilizzare tag univoci, evitare latest nella produzione