Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisation de la branche de plateforme Amazon ECS
Cette rubrique aborde à la fois a branche plateforme Amazon ECS sur Amazon Linux 2 et la branche plateforme qu'elle remplace, Docker multiconteneurs sur AL1 (également géré par ECS). Sauf indication contraire, toutes les informations contenues dans cette rubrique s'appliquent aux deux branches de la plateforme.
Note
Le 18 juillet 2022, Elastic Beanstalk définira les statuts de toutes les branches de plateforme basées sur une AMI Amazon Linux (AL1) sur mise hors service.
Migration à partir de Docker multiconteneurs sur AL1
Si vous utilisez actuellement l'ancien Docker multiconteneurs s'exécutant sur la branche de plateforme AL1, vous pouvez migrer vers la dernière branche de plateforme ECS s'exécutant sur AL2023. La dernière branche de plateforme prend en charge toutes les fonctions de la branche de plateforme abandonnée. Aucune modification du code source n'est requise. Pour de plus amples informations, veuillez consulter Migration de Docker multiconteneurs s'exécutant sur Amazon Linux vers ECS sur Amazon Linux 2023.
Rubriques
- Plateforme Docker gérée par ECS
- Dockerrun.aws.json file
- Images Docker
- Rôle de l'instance de conteneur
- Ressources Amazon ECS créées par Elastic Beanstalk
- Utilisation de plusieurs écouteurs Elastic Load Balancing
- Échec de déploiements de conteneurs
- Configuration Docker gérée par ECS
- Environnements Docker gérés par ECS avec la console Elastic Beanstalk
- Migration de Docker multiconteneurs s'exécutant sur Amazon Linux vers ECS sur Amazon Linux 2023
- (Hérité) Migration vers la branche de plateforme Amazon Linux 2 vers la branche de plateforme Docker multiconteneurs s'exécutant sur Amazon Linux
Plateforme Docker gérée par ECS
Elastic Beanstalk utilise Amazon Elastic Container Service (Amazon ECS) pour coordonner les déploiements de conteneurs vers des environnements Docker gérés par ECS. Amazon ECS fournit des outils permettant de gérer un cluster d'instances exécutant des conteneurs Docker. Elastic Beanstalk prend en charge les tâches Amazon ECS, y compris la création de clusters, la définition et l'exécution des tâches. Chacune des instances de l'environnement exécute le même ensemble de conteneurs, qui sont définis dans un fichier Dockerrun.aws.json
v2. Afin de tirer pleinement parti de Docker, Elastic Beanstalk vous permet de créer un environnement dans lequel vos instances Amazon EC2 exécutent plusieurs conteneurs Docker côte à côte.
Le schéma suivant présente un exemple d'environnement Elastic Beanstalk configuré avec trois conteneurs Docker exécutés sur chaque instance Amazon EC2 d'un groupe Auto Scaling :
![](images/aeb-multicontainer-docker-example.png)
Note
Elastic Beanstalk offre des fonctionnalités d'extensibilité pour toutes ses platesformes que vous pouvez utiliser pour personnaliser le déploiement et l'exécution de vos applications. Pour ECS s'exécutant sur Amazon Linux 2, l'implémentation du flux de déploiement d'instance de ces fonctions varie des autres plateformes. Pour de plus amples informations, veuillez consulter Flux de déploiement d'instance pour ECS s'exécutant sur Amazon Linux 2 et versions ultérieures.
Dockerrun.aws.json
file
Les instances de conteneur (Amazon EC2 exécutant un Docker géré par ECS dans un environnement Elastic Beanstalk) requièrent un fichier de configuration nommé Dockerrun.aws.json
. Ce fichier est propre à Elastic Beanstalk. Il peut être utilisé seul ou combiné au code source et au contenu d'un bundle de fichiers source afin de créer un environnement sur une plateforme Docker.
Note
La version 1 du format Dockerrun.aws.json
permet de lancer un conteneur Docker unique dans un environnement Elastic Beanstalk s'exécutant sur Amazon Linux AMI (la version qui précède Amazon Linux 2). L'environnement repose sur le la branche de plateforme Docker s'exécutant sur Amazon Linux 64 bits, qui sera retirée le 18 juillet 2022 . Pour en savoir plus sur le format Dockerrun.aws.json
v1, consultez Configuration de la plateforme Docker sans Docker Compose.
La version 2 du format Dockerrun.aws.json
ajoute la prise en charge de plusieurs conteneurs par instance Amazon EC2 et ne peut être utilisée qu'avec la plateforme Docker multiconteneurs gérée par ECS. Le format varie considérablement par rapport à la version précédente.
Pour obtenir des détails sur le format mis à jour ainsi qu'un exemple de fichier, veuillez consulter Dockerrun.aws.json v2.
Images Docker
La plateforme Docker gérée par ECS pour Elastic Beanstalk nécessite que des images soient préconstruites et stockées dans un référentiel d'images en ligne public ou privé.
Note
La création d'images personnalisées pendant le déploiement via un Dockerfile
n'est pas prise en charge par la plateforme Docker gérée par ECS sur Elastic Beanstalk. Créez vos images et déployez-les dans un référentiel en ligne avant de créer un environnement Elastic Beanstalk.
Spécifiez des images par nom dans Dockerrun.aws.json
v2. Notez ces conventions :
-
Les images dans les référentiels officiels sur Docker Hub utilisent un nom unique (par exemple,
ubuntu
oumongo
). -
Les images dans les autres référentiels sur Docker Hub sont qualifiées par un nom d'organisation (par exemple,
amazon/amazon-ecs-agent
). -
Les images dans les autres référentiels en ligne sont qualifiées par un nom de domaine (par exemple,
quay.io/assemblyline/ubuntu
).
Pour configurer Elastic Beanstalk afin qu'il s'authentifie auprès d'un référentiel privé, incluez le paramètre authentication
dans votre fichier Dockerrun.aws.json
v2.
Rôle de l'instance de conteneur
Elastic Beanstalk utilise une AMI optimisée pour Elastic Beanstalk avec un agent de conteneur Amazon ECS qui s'exécute dans un conteneur Docker. L'agent communique avec Amazon ECS pour coordonner les déploiements de conteneur. Afin de communiquer avec Amazon ECS, chaque instance Amazon EC2 doit disposer des autorisations correspondantes dans IAM. Ces autorisations sont associées au profil d'instance par défaut lorsque vous créez un environnement dans la console de gestion 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": "*"
}
]
}
Si vous créez votre propre profil d'instance, vous pouvez associer la stratégie gérée AWSElasticBeanstalkMulticontainerDocker
pour faire en sorte que les autorisations restent à jour. Pour obtenir des instructions sur la création de stratégies et de rôles dans IAM, veuillez consulter Création de rôles IAM dans le Guide de l'utilisateur IAM.
Ressources Amazon ECS créées par Elastic Beanstalk
Lorsque vous créez un environnement via la plateforme Docker gérée par ECS, Elastic Beanstalk crée et configure automatiquement plusieurs ressources Amazon Elastic Container Service tout en créant l'environnement. Ce faisant, il crée les conteneurs nécessaires sur chaque instance Amazon EC2.
-
Cluster Amazon ECS – Dans Amazon ECS, les instances de conteneur sont organisées en clusters. En cas d'utilisation avec Elastic Beanstalk, un cluster est toujours créé pour chaque environnement Docker géré par ECS.
-
Définition de tâche Amazon ECS : Elastic Beanstalk utilise le fichier
Dockerrun.aws.json
v2 dans votre projet pour générer la définition de tâche Amazon ECS qui est utilisée pour configurer les instances de conteneur dans l'environnement. -
Tâche Amazon ECS – Elastic Beanstalk communique avec Amazon ECS pour exécuter une tâche sur chaque instance de l'environnement afin de coordonner le déploiement de conteneur. Dans un environnement évolutif, Elastic Beanstalk lance une nouvelle tâche chaque fois qu'une instance est ajoutée au cluster. Dans de rares cas, vous devrez peut-être accroître la quantité d'espace réservée aux conteneurs et aux images. Pour en savoir plus, reportez-vous à la section Configuration des environnements Docker.
-
Agent de conteneur Amazon ECS – L'agent s'exécute dans un conteneur Docker sur les instances de votre environnement. L'agent interroge Amazon ECS service et attend l'exécution d'une tâche.
-
Volumes de données Amazon ECS : pour faciliter la collecte des journaux, Elastic Beanstalk insère les définitions des volumes (en plus des volumes que vous définissez dans
Dockerrun.aws.json
v2) dans la définition de tâche.Elastic Beanstalk crée des volumes de fichiers journaux sur l'instance de conteneur (un pour chaque conteneur), à l'emplacement
/var/log/containers/
. Ces volumes sont nomméscontainername
awseb-logs-
et sont fournis pour être montés par les conteneurs. Pour de plus amples informations sur la façon de les monter, veuillez consulter Format des définitions de conteneur.containername
Utilisation de plusieurs écouteurs Elastic Load Balancing
Vous pouvez configurer plusieurs écouteurs Elastic Load Balancing dans un environnement Docker géré par ECS afin de prendre en charge le trafic entrant pour les proxys ou autres services qui ne fonctionnent pas sur le port HTTP par défaut.
Créez un dossier .ebextensions
dans votre bundle de fichiers source et ajoutez un fichier avec une extension .config
. L'exemple suivant présente un fichier de configuration qui crée un écouteur Elastic Load Balancing sur le port 8080.
.ebextensions/elb-listener.config
option_settings:
aws:elb:listener:8080:
ListenerProtocol: HTTP
InstanceProtocol: HTTP
InstancePort: 8080
Si votre environnement s'exécute dans un Amazon Virtual Private Cloud (Amazon VPC) personnalisé que vous avez créé, Elastic Beanstalk s'occupe du reste. Dans un VPC par défaut, vous devez configurer le groupe de sécurité de votre instance pour autoriser le trafic entrant provenant de l'équilibreur de charge. Ajoutez un deuxième fichier de configuration, qui ajoute une règle de trafic entrant au groupe de sécurité :
.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"] }
Pour de plus amples informations sur le format du fichier de configuration, veuillez consulter Ajout et personnalisation des ressources de l'environnement Elastic Beanstalk et Paramètres d'option.
En plus d'ajouter un écouteur à la configuration Elastic Load Balancing et d'ouvrir un port dans le groupe de sécurité, vous devez mapper le port sur l'instance de l'hôte à un port sur le conteneur Docker, dans la section containerDefinitions
du fichier Dockerrun.aws.json
v2. L'extrait suivant en présente un exemple:
"portMappings": [
{
"hostPort": 8080,
"containerPort": 8080
}
]
Consultez Dockerrun.aws.json v2 pour de plus amples informations sur le format du fichier Dockerrun.aws.json
v2.
Échec de déploiements de conteneurs
En cas d'échec d'une tâche Amazon ECS, un ou plusieurs conteneurs de votre environnement Elastic Beanstalk ne démarreront pas. Elastic Beanstalk ne restaure pas les environnements multiconteneurs suite à l'échec d'une tâche Amazon ECS. Si le démarrage d'un conteneur échoue dans votre environnement, redéployez la version actuelle ou une version de travail précédente à partir de la console Elastic Beanstalk.
Pour déployer une version existante
-
Ouvrez la console Elastic Beanstalk dans la région de votre environnement.
-
Cliquez sur Actions à droite du nom de votre application, puis cliquez sur View application versions (Afficher les versions de l'application).
-
Sélectionnez une version de votre application, puis cliquez sur Déploiement.