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 del ramo della piattaforma Amazon ECS
In questo argomento vengono illustrati entrambi i rami di piattaforma Amazon ECS su Amazon Linux 2 e il ramo della piattaforma che sostituisce, Docker multi-container su AL1 (gestito sempre da ECS). Se non diversamente indicato, tutte le informazioni contenute in questo argomento si applicano a entrambi i rami della piattaforma.
Nota
Il 18 luglio 2022 Elastic Beanstalk ha impostato lo stato di tutte le ramificazioni della piattaforma basate sull'AMI Amazon Linux (AL1) su retired (ritirato).
Migrazione da Docker multi-container su ad AL1
Se attualmente stai utilizzando la ramificazione della piattaforma Docker multi-container in esecuzione su AL1 ritirata, puoi migrare alla versione più recente della ramificazione della piattaforma ECS in esecuzione su AL2023. L'ultima versione della ramificazione della piattaforma supporta tutte le funzionalità della ramificazione fuori produzione. Non sono richieste modifiche al codice sorgente. Per ulteriori informazioni, consulta Migrazione di Docker multi-container in esecuzione su Amazon Linux a ECS su Amazon Linux 2023.
Argomenti
- Piattaforma Docker gestita da ECS
- Dockerrun.aws.json file
- Immagini Docker
- Ruolo dell'istanza di container
- Risorse Amazon ECS create da Elastic Beanstalk
- Utilizzo di più listener Elastic Load Balancing
- Distribuzioni di container non riuscite
- Configurazione di Docker gestito da ECS
- Ambienti Docker gestiti da ECS con la console Elastic Beanstalk
- Migrazione di Docker multi-container in esecuzione su Amazon Linux a ECS su Amazon Linux 2023
- (Legacy) Eseguire la migrazione a Docker in esecuzione sul ramo della piattaforma Amazon Linux 2 da Multi-container Docker in esecuzione su Amazon Linux
Piattaforma Docker gestita da ECS
Elastic Beanstalk utilizza Amazon Elastic Container Service (Amazon ECS) per coordinare le distribuzioni dei container in ambienti Docker multicontainer. Amazon ECS fornisce strumenti per la gestione di un cluster di istanze che eseguono container Docker. Elastic Beanstalk si occupa delle attività Amazon ECS, tra cui la creazione di cluster, la definizione delle attività e l'esecuzione. Le istanze nell'ambiente eseguono lo stesso set di container, che sono definiti in un file Dockerrun.aws.json
v2. Per ottenere il massimo da Docker, Elastic Beanstalk ti consente di creare un ambiente in cui le istanze Amazon EC2 eseguono più container Docker affiancati.
Il diagramma seguente mostra un esempio di ambiente Elastic Beanstalk configurato con tre container Docker in esecuzione su ogni istanza Amazon EC2 in un gruppo Auto Scaling:
![](images/aeb-multicontainer-docker-example.png)
Nota
Elastic Beanstalk offre funzionalità di estensibilità per tutte le piattaforme che è possibile utilizzare per personalizzare la distribuzione e l'esecuzione delle applicazioni. Per il ramo di piattaforma ECS in esecuzione su Amazon Linux 2, l'implementazione del flusso di lavoro di distribuzione dell'istanza di queste funzionalità varia dalle altre piattaforme. Per ulteriori informazioni, consulta Flusso di lavoro di implementazione di istanze per ECS in esecuzione su Amazon Linux 2 e versioni successive.
Dockerrun.aws.json
file
Le istanze di container, ovvero le istanze Amazon EC2 che eseguono Docker gestito da ECS in un ambiente Elastic Beanstalk, richiedono un file di configurazione denominato Dockerrun.aws.json
. Questo file è specifico per Elastic Beanstalk e può essere utilizzato da solo o abbinato a un codice sorgente e a contenuti in un bundle di origine per creare un ambiente su una piattaforma Docker.
Nota
La versione 1 del format Dockerrun.aws.json
viene utilizzata per avviare un container Docker singolo in un ambiente Elastic Beanstalk in esecuzione su AMI Amazon Linux (la versione precedente ad Amazon Linux 2). L'ambiente è basato sul ramo di piattaforma Docker in esecuzione su Amazon Linux a 64 bit, che sarà ritirato il 18 luglio 2022. Per ulteriori informazioni sul formato Dockerrun.aws.json
v1, vedi Configurazione della piattaforma Docker - senza Docker Compose.
La versione 2 del formato Dockerrun.aws.json
aggiunge il supporto per più container per l'istanza Amazon EC2 e può essere utilizzata solo con la piattaforma Docker gestita da ECS. Il formato differisce in modo significativo dalla versione precedente.
Consulta Dockerrun.aws.json v2 per dettagli sul formato aggiornato e per un file di esempio.
Immagini Docker
La piattaforma Docker gestita da ECS per Elastic Beanstalk richiede immagini preinstallate e memorizzate in un repository di immagini online pubblico o privato.
Nota
La creazione di immagini personalizzate durante la distribuzione con un Dockerfile
non è supportata dalla piattaforma Docker gestita da ECS su Elastic Beanstalk. Crea le immagini e distribuiscile in un repository online prima di creare un ambiente Elastic Beanstalk.
Specifica le immagini per nome in Dockerrun.aws.json
v2 Nota queste convenzioni:
-
Le immagini in repository ufficiali su Docker Hub utilizzano un singolo nome (ad esempio
ubuntu
omongo
). -
Le immagini in altri repository su Docker Hub vengono qualificate con un nome di organizzazione (ad esempi,
amazon/amazon-ecs-agent
). -
Le immagini in altri registri online vengono ulteriormente qualificate tramite un nome di dominio (ad esempi,
quay.io/assemblyline/ubuntu
).
Per configurare Elastic Beanstalk in modo che effettui l'autenticazione su un repository privato, includi il parametro authentication
nel file Dockerrun.aws.json
v2.
Ruolo dell'istanza di container
Elastic Beanstalk utilizza un'AMI ottimizzata per Amazon ECS con un agente del container Amazon ECS che viene eseguito in un container Docker. L'agente comunica con Amazon ECS per coordinare le distribuzioni dei container. Per comunicare con Amazon ECS, ogni istanza Amazon EC2 deve disporre delle autorizzazioni corrispondenti in IAM. Queste autorizzazioni sono collegate al profilo dell'istanza predefinito al momento della creazione di un ambiente nella console di gestione Elastic Beanstalk:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ECSAccess",
"Effect": "Allow",
"Action": [
"ecs:Poll",
"ecs:StartTask",
"ecs:StopTask",
"ecs:DiscoverPollEndpoint",
"ecs:StartTelemetrySession",
"ecs:RegisterContainerInstance",
"ecs:DeregisterContainerInstance",
"ecs:DescribeContainerInstances",
"ecs:Submit*"
],
"Resource": "*"
}
]
}
Se crei il tuo profilo di istanza, puoi collegare la policy gestita AWSElasticBeanstalkMulticontainerDocker
per accertarti che le autorizzazioni siano aggiornate. Per istruzioni su come creare policy e ruoli in IAM, vedi Creazione di ruoli IAM nella Guida per l'utente IAM.
Risorse Amazon ECS create da Elastic Beanstalk
Quando crei un ambiente utilizzando la piattaforma Docker gestita da ECS, Elastic Beanstalk crea e configura automaticamente diverse risorse Amazon Elastic Container Service durante la creazione dell'ambiente. In questo modo, crea i container necessari su ogni istanza di Amazon EC2.
-
Cluster Amazon ECS: le istanze di container in Amazon ECS sono organizzate in cluster. Se usato con Elastic Beanstalk, viene sempre creato un cluster per ogni ambiente Docker gestito da ECS.
-
Definizione attività Amazon ECS: Elastic Beanstalk usa il file
Dockerrun.aws.json
v2 nel progetto per generare la definizione delle attività Amazon ECS utilizzata per configurare le istanze di container nell'ambiente. -
Attività Amazon ECS: Elastic Beanstalk comunica con Amazon ECS per eseguire un'attività su ogni istanza nell'ambiente e coordinare la distribuzione dei container. In un ambiente scalabile, Elastic Beanstalk avvia una nuova attività ogni volta che un'istanza viene aggiunta al cluster. In rari casi potrebbe essere necessario aumentare la quantità di spazio riservato a contenitori e immagini. Ulteriori informazioni nella sezione Configurazione degli ambienti Docker.
-
Agente container Amazon ECS: l'agente viene eseguito in un container Docker sulle istanze nell'ambiente. L'agente esegue il polling del servizio Amazon ECS e attende l'esecuzione di un'attività.
-
Volumi di dati Amazon ECS: Elastic Beanstalk inserisce definizioni di volumi in aggiunta ai volumi che definisci in
Dockerrun.aws.json
v2 nella definizione dell'attività per facilitare la raccolta di log.Elastic Beanstalk crea volumi di log sull'istanza di container, uno per ogni container Docker, in
/var/log/containers/
. Questi volumi sono denominaticontainername
awseb-logs-
e vengono forniti per il montaggio dei container. Vedi Formato della definizione del container per ulteriori informazioni su come montarli.containername
Utilizzo di più listener Elastic Load Balancing
È possibile configurare più ascoltatori Elastic Load Balancing su un ambiente Docker gestito da ECS per supportare il traffico in entrata per i proxy o altri servizi che non girano sulla porta HTTP predefinita.
Crea una cartella .ebextensions
nel bundle di origine e aggiungi un file con un'estensione file .config
. L'esempio seguente mostra un file di configurazione che crea un listener Elastic Load Balancing sulla porta 8080.
.ebextensions/elb-listener.config
option_settings:
aws:elb:listener:8080:
ListenerProtocol: HTTP
InstanceProtocol: HTTP
InstancePort: 8080
Se l'ambiente è in esecuzione in un Amazon Virtual Private Cloud (Amazon VPC) personalizzato che hai creato, Elastic Beanstalk si occupa del resto. In un VPC predefinito, è necessario configurare il gruppo di sicurezza dell'istanza per consentire l'ingresso dal load balancer. Aggiungi un secondo file di configurazione che aggiunge una regola in ingresso per il gruppo di sicurezza:
.ebextensions/elb-ingress.config
Resources:
port8080SecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 8080
FromPort: 8080
SourceSecurityGroupName: { "Fn::GetAtt": ["AWSEBLoadBalancer", "SourceSecurityGroup.GroupName"] }
Per ulteriori informazioni sul formato del file di configurazione consulta Aggiunta e personalizzazione delle risorse dell'ambiente Elastic Beanstalk e Impostazioni opzioni.
Oltre ad aggiungere un ascoltatore alla configurazione di Elastic Load Balancing e ad aprire una porta nel gruppo di sicurezza, è necessario mappare la porta sull'istanza host a una porta sul container Docker nella sezione containerDefinitions
del file Dockerrun.aws.json
v2. Di seguito viene riportato un estratto di esempio:
"portMappings": [
{
"hostPort": 8080,
"containerPort": 8080
}
]
Consulta Dockerrun.aws.json v2 per dettagli sul formato del file Dockerrun.aws.json
v2.
Distribuzioni di container non riuscite
Se un'attività Amazon ECS ha esito negativo, uno o più container nell'ambiente Elastic Beanstalk non verranno avviati. Elastic Beanstalk non esegue il rollback degli ambienti multicontainer a causa di un'attività Amazon ECS non riuscita. Se un container non viene avviato nell'ambiente, ridistribuisci la versione corrente o una versione funzionante precedente dalla console Elastic Beanstalk.
Per distribuire una versione esistente
-
Apri la console Elastic Beanstalk nella regione dell'ambiente in uso.
-
Fai clic su Actions (Operazioni) a destra del nome dell'applicazione, quindi su View application versions (Visualizza versioni dell'applicazione).
-
Seleziona una versione dell'applicazione e fai clic su Deploy (Distribuisci).