Distribuisci un'applicazione in cluster su Amazon ECS utilizzando AWS Copilot - Prontuario AWS

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

Distribuisci un'applicazione in cluster su Amazon ECS utilizzando AWS Copilot

Creato da Jean-Baptiste Guillois (AWS), Mathew George (AWS) e Thomas Scott (AWS)

Archivio di codice: demo di Clustered Sample Application

Ambiente: produzione

Tecnologie: contenitori e microservizi; Produttività aziendale; CloudNative DevelopmentAndTesting

Servizi AWS: Amazon ECS; AWS Fargate; Amazon ECR

Riepilogo

Questo modello mostra come distribuire contenitori in un cluster Amazon Elastic Container Service (Amazon ECS) in due modi: utilizzando la console di gestione Amazon Web Services (AWS) e utilizzando AWS Copilot, per dimostrare come AWS Copilot semplifica le attività di distribuzione.

Amazon ECS è un servizio di gestione dei container veloce e altamente scalabile che semplifica l'esecuzione, l'arresto e la gestione dei container su un cluster. I container sono definiti in una definizione di attività utilizzata per eseguire singoli processi o processi all'interno di un servizio. Puoi eseguire le tue attività e i tuoi servizi su un'infrastruttura serverless gestita da AWS Fargate. In alternativa, per un maggiore controllo sulla tua infrastruttura, puoi eseguire attività e servizi su un cluster di istanze Amazon Elastic Compute Cloud (Amazon EC2) da te gestite.

I comandi dell'interfaccia a riga di comando (CLI) di AWS Copilot semplificano la creazione, il rilascio e il funzionamento di applicazioni containerizzate pronte per la produzione su Amazon ECS da un ambiente di sviluppo locale. La CLI di AWS Copilot si allinea ai flussi di lavoro degli sviluppatori che supportano le migliori pratiche applicative moderne: dall'uso dell'infrastruttura come codice alla creazione di una pipeline di integrazione e distribuzione continua (CI/CD) fornite per conto di un utente. Puoi utilizzare l'interfaccia a riga di comando di AWS Copilot come parte del tuo ciclo quotidiano di sviluppo e test come alternativa alla Console di gestione AWS.

Prerequisiti e limitazioni

Prerequisiti

Limitazioni

  • Docker impone il limite di pull di 100 immagini di container ogni 6 ore per indirizzo IP nel piano gratuito.

Architettura

Stack tecnologico Target

  • Ambiente AWS configurato con un cloud privato virtuale (VPC), sottoreti pubbliche e private e gruppi di sicurezza

  • Cluster Amazon ECS

  • Definizione del servizio e delle attività di Amazon ECS

  • Amazon Elastic Container Registry (Amazon ECR)

  • Amazon DynamoDB

  • Application Load Balancer

  • AWS Fargate

  • Amazon Identity and Access Management (IAM)

  • Amazon CloudWatch

  • AWS CloudTrail

Architettura Target

Quando si distribuisce l'applicazione di esempio per questo modello, vengono create e distribuite più attività in zone di disponibilità separate. Ogni attività archivia i dati in Amazon DynamoDB. Quando accedi alla pagina Web di un'attività, puoi visualizzare i dati di tutte le altre attività.

Architettura per la distribuzione di contenitori con AWS Copilot

Strumenti

Servizi AWS

  • Amazon ECR Amazon Elastic Container Registry (Amazon ECR) è un servizio di registro di immagini di container gestito da AWS sicuro, scalabile e affidabile. Amazon ECR supporta i repository privati con autorizzazioni basate sulle risorse utilizzando IAM.

  • Amazon ECS — Amazon Elastic Container Service (Amazon ECS) è un servizio di gestione dei container veloce e altamente scalabile per l'esecuzione, l'arresto e la gestione dei container su un cluster. Puoi eseguire le tue attività e i tuoi servizi su un'infrastruttura serverless gestita da AWS Fargate. In alternativa, per un maggiore controllo sulla tua infrastruttura, puoi eseguire attività e servizi su un cluster di istanze Amazon Elastic Compute Cloud (Amazon EC2) da te gestite.

  • AWS Copilot: AWS Copilot fornisce un'interfaccia a riga di comando che consente di avviare e gestire applicazioni containerizzate su AWS, tra cui l'invio a un registro, la creazione di una definizione di attività e la creazione di un cluster.

  • AWS Fargate — AWS Fargate è un motore di pay-as-you-go calcolo serverless che ti consente di concentrarti sulla creazione di applicazioni senza gestire server. AWS Fargate è compatibile sia con Amazon ECS che con Amazon Elastic Kubernetes Service (Amazon EKS). Quando esegui i processi e i servizi Amazon ECS con il tipo di avvio Fargate o il provider di capacità Fargate, crei un pacchetto dell'applicazione in container, specifichi i requisiti di CPU e di memoria, definisci le reti e le policy IAM e avvii l'applicazione. Ogni attività Fargate ha il proprio limite di isolamento e non condivide il kernel sottostante, le risorse della CPU, le risorse di memoria o l'interfaccia elastica di rete con un'altra attività.

  • Amazon DynamoDB — Amazon DynamoDB è un servizio di database NoSQL completamente gestito che offre prestazioni veloci e prevedibili con una scalabilità perfetta.

  • Elastic Load Balancing (ELB): Elastic Load Balancing distribuisce automaticamente il traffico in entrata su più destinazioni, come istanze EC2, contenitori e indirizzi IP, in una o più zone di disponibilità. Monitora lo stato di integrità delle destinazioni registrate e instrada il traffico solo verso le destinazioni integre. Elastic Load Balancing ridimensiona il load balancer di volta in volta, in quanto il traffico in ingresso varia nel corso del tempo. Può ridimensionare le risorse per la maggior parte dei carichi di lavoro automaticamente.

Strumenti

Codice

Il codice per l'applicazione di esempio utilizzata in questo modello è disponibile su GitHub, nel repository Cluster Sample Application. Segui le istruzioni nella sezione successiva per utilizzare i file di esempio.

Epiche

AttivitàDescrizioneCompetenze richieste
Clona il GitHub repository.

Clona il repository di codice di esempio utilizzando il comando:

git clone https://github.com/aws-samples/cluster-sample-app cluster-sample-app && cd cluster-sample-app
Sviluppatore di app, AWS DevOps
Crea il tuo repository Amazon ECR.
  1. Accedi alla Console di gestione AWS e apri la console Amazon ECR all'indirizzo https://console.aws.amazon.com/ecr/repositories.

  2. Scegli Create repository (Crea repository).

  3. Per il nome del repository, inserisci. cluster-sample-app

  4. Per tutte le altre impostazioni, mantieni i valori predefiniti.

  5. Scegli Create repository (Crea repository).

Per ulteriori informazioni, consulta Creazione di un repository privato nella documentazione di Amazon ECR.

Sviluppatore di app, AWS DevOps
Crea, tagga e invia la tua immagine Docker al tuo repository Amazon ECR.
  1. Seleziona il repository che hai appena creato e scegli Visualizza comandi push.

  2. Copia i comandi visualizzati ed eseguili localmente per creare, taggare e inviare la tua immagine docker. Questi comandi saranno simili ai seguenti.

Per autenticare il client Docker nel registro:

aws ecr get-login-password --region <YOUR_AWS_REGION> | docker login --username AWS --password-stdin <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com

Per creare la tua immagine Docker:

docker build -t cluster-sample-app .

Per taggare la tua immagine Docker:

docker tag cluster-sample-app:latest <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com/cluster-sample-app:latest

Per inviare l'immagine Docker al tuo repository:

docker push <YOUR_AWS_ACCOUNT>.dkr.ecr.<YOUR_AWS_REGION>.amazonaws.com/cluster-sample-app:latest
Sviluppatore di app, AWS DevOps
Distribuisci lo stack di applicazioni.
  1. Apri la CloudFormation console AWS all'indirizzo https://console.aws.amazon.com/cloudformation/.

  2. Seleziona Crea stack.

  3. Nella sezione Prepara il modello, scegli Il modello è pronto.

  4. Nella sezione Specify template(Specifica il modello) scegliere Upload a template file (Carica un file modello).

  5. Scegli il file locale cluster-sample-app-stack.yml che hai clonato dal GitHub repository come CloudFormation modello, quindi scegli Avanti.

  6. Inserisci un nome per lo stack, quindi scegli Avanti.

  7. Mantieni tutte le opzioni predefinite, quindi scegli Avanti.

  8. Esamina tutte le opzioni, conferma la creazione di risorse IAM, quindi scegli Create stack.

  9. Una volta distribuito lo stack di applicazioni, scegli la scheda Output, copia l'URL e aprilo nel browser per accedere all'applicazione.

Per ulteriori informazioni sulla distribuzione dei CloudFormation modelli, consulta Creating a stack nella documentazione di CloudFormation AWS.

AWS DevOps, sviluppatore di app
AttivitàDescrizioneCompetenze richieste
Clona il GitHub repository.

Clona il repository di codice di esempio utilizzando il comando:

git clone https://github.com/aws-samples/cluster-sample-app cluster-sample-app && cd cluster-sample-app
Sviluppatore di app, AWS DevOps
Distribuisci l'immagine del contenitore in AWS utilizzando la CLI di AWS Copilot.

Distribuisci l'applicazione in un unico passaggio utilizzando il seguente comando nella directory principale del tuo progetto:

copilot init --app cluster-sample-app --name demo --type "Load Balanced Web Service" --dockerfile ./Dockerfile --port 8080 --deploy

Dovresti quindi essere in grado di accedere all'applicazione utilizzando il nome DNS fornito come output.

Sviluppatore di app, AWS DevOps
AttivitàDescrizioneCompetenze richieste
Elimina le risorse create tramite la Console di gestione AWS.

Se hai utilizzato l'opzione 1 (la Console di gestione AWS) per distribuire lo stack di applicazioni, segui questi passaggi quando sei pronto per eliminare le risorse che hai creato:

  1. Apri la CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation/.

  2. Seleziona lo stack che hai creato, quindi scegli Elimina.

  3. Apri la console Amazon ECR all'indirizzo https://console.aws.amazon.com/ecr/repositories.

  4. Seleziona il repository che hai creato, quindi scegli Elimina.

Sviluppatore di app, AWS DevOps
Elimina le risorse create da AWS Copilot.

Se hai utilizzato l'opzione 2 (la CLI di AWS Copilot) per distribuire lo stack di applicazioni, esegui il seguente comando dalla directory principale del progetto quando sei pronto per eliminare le risorse che hai creato:

copilot app delete
Sviluppatore di app, AWS DevOps

Risorse correlate