Architect your application for Amazon ECS
Vous élaborez votre application en créant une définition de tâche pour votre application. La définition de tâche contient les paramètres qui définissent les informations relatives à l’application, notamment :
-
La capacité à utiliser, qui détermine l’infrastructure sur laquelle vos tâches sont hébergées.
Lorsque vous utilisez le fournisseur de capacité EC2, vous choisissez également le type d’instance. Lorsque vous utilisez le fournisseur de capacité d’instances gérées Amazon ECS, vous pouvez définir les exigences relatives aux instances pour qu’Amazon ECS gère la capacité de calcul. Pour certains types d’instances, tels que le GPU, vous devez définir des paramètres spécifiques. Pour de plus amples informations, consultez Cas d’utilisation de définition de tâche Amazon ECS.
-
L’image de conteneur, qui contient le code de votre application et toutes les dépendances nécessaires à son exécution.
-
Le mode réseau à utiliser pour les conteneurs dans votre tâche.
Le mode réseau détermine la manière dont votre tâche communique sur le réseau.
Pour les tâches exécutées sur des instances EC2 et des instances gérées Amazon ECS, plusieurs options sont disponibles, mais nous vous recommandons d’utiliser le mode réseau
awsvpc. Le mode réseauawsvpcsimplifie la mise en réseau des conteneurs en vous offrant davantage de contrôle sur la manière dont vos applications communiquent entre elles et avec d’autres services au sein de vos VPC.Pour les tâches exécutées sur Fargate, vous devez utiliser le mode réseau
awsvpc. -
La configuration de journalisation à utiliser pour les tâches
-
Les volumes de données utilisés avec les conteneurs dans la tâche.
Pour obtenir la liste complète des paramètres de définition de tâche, veuillez consulter Paramètres de définition de tâche Amazon ECS pour Fargate.
Suivez ces recommandations lors de la création de vos définitions de tâche :
-
Utilisez chaque famille de définitions de tâches pour un seul objectif métier.
Si vous regroupez plusieurs types de conteneurs d’applications dans la même définition de tâche, vous ne pouvez pas mettre à l’échelle ces conteneurs indépendamment. Par exemple, un site Web et une API nécessitent généralement des modèles de mise à l’échelle différents. À mesure que le trafic augmente, le nombre de conteneurs Web dont vous aurez besoin pourra différer de celui des conteneurs API. Si ces deux conteneurs sont déployés dans la même définition de tâche, chaque tâche exécute le même nombre de conteneurs Web et de conteneurs d’API.
-
Associez chaque version d'application à une révision de définition de tâche au sein d'une famille de définitions de tâches.
Au sein d’une famille de définitions de tâches, chaque révision de définition de tâche représente un instantané ponctuel des paramètres d’une image de conteneur particulière. De la même manière, le conteneur est un instantané de tous les composants nécessaires à l’exécution d’une version particulière du code de votre application.
Créez un mappage un-à-un entre une version du code d’application, une balise d’image de conteneur et une révision de définition de tâche. Un processus de publication typique implique une validation git qui est transformée en une image de conteneur balisée avec le SHA de validation git. Cette balise d'image de conteneur reçoit ensuite sa propre révision de définition de tâche Amazon ECS. Enfin, le service Amazon ECS est mis à jour afin de déployer la nouvelle révision de la définition de tâche.
-
Utilisez différents rôles IAM pour chaque famille de définitions de tâches.
Définissez chaque définition de tâche avec son propre rôle IAM. Mettez cette pratique en œuvre tout en fournissant à chaque composante métier sa propre famille de définitions de tâches. En mettant en œuvre ces deux bonnes pratiques, vous pouvez limiter l'accès de chaque service aux ressources de votre compte AWS. Par exemple, vous pouvez autoriser votre service d'authentification à accéder à votre base de données de mots de passe. Dans le même temps, vous pouvez vous assurer que seul votre service de commande a accès aux informations de paiement par carte de crédit.