Déployez des conteneurs sans serveur dans le cloud à partir de votre ligne de commande
fargate est une interface de ligne de commande permettant de déployer des conteneurs sur AWS Fargate. Grâce à fargate , les développeurs peuvent facilement exploiter les services fargate, notamment : le déploiement d'applications (images et variables d'environnement), la surveillance des déploiements, l'affichage des journaux de conteneurs, le redémarrage et la mise à l'échelle.
Vous pouvez installer la dernière CLI stable avec un script utilitaire curl ou en téléchargeant le binaire à partir de la page des versions. Une fois installé, vous obtiendrez la commande fargate
.
curl -s get-fargate.turnerlabs.io | sh
Si vous souhaitez installer la dernière version préliminaire, utilisez cette commande :
curl -s get-fargate.turnerlabs.io | RELEASE=develop sh
Par défaut, fargate utilise us-east-1 car il s'agit de la seule région où AWS Fargate est disponible. La CLI accepte un paramètre --region pour une utilisation future et respectera les paramètres d'environnement AWS_REGION et AWS_DEFAULT_REGION . Notez que spécifier une région dans laquelle tous les services requis ne sont pas disponibles renverra une erreur.
Consultez le tableau des régions pour connaître les services disponibles dans quelles régions.
fargate est construit à l'aide du kit AWS SDK for Go qui recherche les informations d'identification aux emplacements suivants :
Variables d'environnement
Fichier d'informations d'identification partagé
Profil d'instance EC2
Pour plus d'informations, consultez Spécification des informations d'identification dans la documentation AWS SDK for Go.
Il existe plusieurs façons de spécifier les paramètres. Chaque élément est prioritaire sur l'élément situé en dessous :
Arguments CLI (par exemple, --cluster my-cluster
)
Variables d'environnement (par exemple, FARGATE_CLUSTER=my-cluster
)
fargate.yml
(par exemple, ci-dessous)
cluster : my-cluster
service : my-service
task : my-task
rule : my-event-rule
verbose : false
nocolor : true
Drapeau | Court | Défaut | Description |
---|---|---|---|
--grappe | -c | Nom du cluster ECS | |
--région | nous-est-1 | Région AWS | |
--pas de couleur | FAUX | Désactiver la sortie couleur | |
--verbeux | -v | FAUX | Sortie verbeuse |
Les services gèrent les instances de longue durée de vos conteneurs exécutés sur AWS Fargate. Si votre conteneur se ferme pour une raison quelconque, le planificateur de service redémarrera vos conteneurs et garantira que votre service exécute le nombre souhaité de tâches. Les services peuvent être utilisés de concert avec un équilibreur de charge pour répartir le trafic entre les tâches de votre service.
Drapeau | Court | Défaut | Description |
---|---|---|---|
--service | -s | Nom du service ECS |
fargate service list
Liste des services
fargate service deploy [--image <docker-image>]
Déployer une nouvelle image sur le service
L'image du conteneur Docker à utiliser dans le service peut être spécifiée via l'indicateur --image.
fargate service deploy [--file docker-compose.yml]
Déployer l'image, les variables d'environnement et les secrets définis dans un fichier de composition Docker sur le service
Déployez ensemble une image Docker et des variables d'environnement définies dans un fichier de composition Docker en tant qu'unité unique. Notez que les variables d'environnement et les secrets sont remplacés par le contenu du fichier de composition.
Les secrets peuvent être définis sous forme de paires clé-valeur sous le champ d'extension de fichier Docker Compose x-fargate-secrets
. Pour utiliser des champs d'extension, la version du fichier de composition doit être au moins 2.4
pour la série 2.x ou au moins 3.7
pour la série 3.x.
Cela vous permet d'exécuter docker-compose up
localement pour exécuter votre application de la même manière qu'elle s'exécutera dans AWS. Notez que même si la configuration yaml docker-compose prend en charge de nombreuses options, seules les variables d'image et d'environnement sont déployées sur fargate. Si le fichier Docker Compose définit plusieurs conteneurs, vous pouvez utiliser l'étiquette aws.ecs.fargate.deploy: 1
pour indiquer le conteneur que vous souhaitez déployer. Par exemple:
version : " 3.7 "
services :
web :
build : .
image : 1234567890.dkr.ecr.us-east-1.amazonaws.com/my-service:0.1.0
ports :
- 80:5000
environment :
FOO : bar
BAZ : bam
env_file :
- hidden.env
x-fargate-secrets :
QUX : arn:key:ssm:us-east-1:000000000000:parameter/path/to/my_parameter
labels :
aws.ecs.fargate.deploy : 1
redis :
image : redis
fargate service info
Inspecter le service
Afficher des informations étendues sur un service, notamment la configuration de l'équilibreur de charge, les déploiements actifs, les variables d'environnement et les secrets.
Les déploiements affichent les versions actives de votre service en cours d'exécution. Plusieurs déploiements sont affichés si un service est en transition en raison d'un déploiement ou d'une mise à jour de la configuration telle qu'un processeur, une mémoire ou des variables d'environnement.
fargate service logs [--follow] [--start <time-expression>] [--end <time-expression>]
[--filter <filter-expression>] [--task <task-id>]
[--time] [--no-prefix]
Afficher les journaux des tâches dans un service
Renvoyez soit un segment spécifique de journaux de service, soit des journaux de queue en temps réel à l'aide de l'option --follow. Les journaux sont précédés du nom de leur flux de journaux, au format « fargate/<service-name>/<task-id> ».
Follow continuera à s'exécuter et renverra les journaux jusqu'à ce qu'il soit interrompu par Control-C. Si --follow est passé, --end ne peut pas être spécifié.
Les journaux peuvent être renvoyés pour des tâches spécifiques au sein d'un service en transmettant un ID de tâche via l'indicateur --task. Transmettez --task avec un ID de tâche plusieurs fois afin de récupérer les journaux de plusieurs tâches spécifiques.
Une fenêtre spécifique de journaux peut être demandée en passant les options --start et --end avec une expression temporelle. L'expression temporelle peut être une durée ou un horodatage :
Vous pouvez filtrer les journaux pour un terme spécifique en passant une expression de filtre via l'indicateur --filter. Transmettez un seul terme pour rechercher ce terme, transmettez plusieurs termes pour rechercher des messages de journal incluant tous les termes. Consultez la documentation CloudWatch Logs pour plus de détails.
--time inclut l'horodatage du journal dans la sortie
--no-prefix exclut le préfixe du flux de journaux de la sortie
fargate service ps
Répertorier les tâches en cours d'exécution pour un service
fargate service scale <scale-expression>
Augmenter le nombre de tâches dans un service
Modifie le nombre de tâches souhaitées à exécuter dans un service par l'expression d'échelle donnée. Une expression d'échelle peut être soit un nombre absolu, soit un delta spécifié avec un signe tel que +5 ou -2.
fargate service env set [--env <key=value>] [--file <pathname>]
[--secret <key=valueFrom>] [--secret-file <pathname>]
Définir les variables d'environnement et les secrets
Au moins une variable d'environnement ou un secret doit être spécifié via les indicateurs --env, --file, --secret ou --secret-file. Vous pouvez spécifier n'importe quel nombre de variables sur la ligne de commande en répétant --env avant chacune d'elles, ou bien placer plusieurs variables dans un fichier texte, une par ligne, et spécifier le nom du fichier avec --file et/ou --secret-file .
Chaque chaîne ou ligne de paramètre --env et --secret dans le fichier doit être de la forme "key=value", sans guillemets ni espace autour du "=", sauf si vous souhaitez un espace littéral dans la valeur. De plus, le côté « clé » doit être un identifiant de shell légal, ce qui signifie qu'il doit commencer par une lettre ASCII AZ ou un trait de soulignement et être composé uniquement de lettres, de chiffres et de traits de soulignement.
La « valeur » dans « key=value » pour chaque indicateur --secret doit faire référence à l'ARN du secret AWS Secrets Manager ou du paramètre AWS Systems Manager Parameter Store.
fargate service env unset --key <key-name>
Désactiver les variables d'environnement et les secrets
Annule la variable d'environnement ou le secret spécifié via l'indicateur --key. Spécifiez --key avec un nom de clé plusieurs fois pour désactiver plusieurs variables.
fargate service env list
Afficher les variables d'environnement
Drapeau | Court | Défaut | Description |
---|---|---|---|
--cpu | Nombre d'unités CPU à allouer pour chaque tâche | ||
--mémoire | -m | Quantité de MiB à allouer pour chaque tâche |
fargate service update [--cpu <cpu-units>] [--memory <MiB>]
Mettre à jour la configuration du service
Les paramètres du processeur et de la mémoire sont spécifiés respectivement en unités de processeur et en mébioctets à l'aide des indicateurs --cpu et --memory. Chaque tranche de 1 024 unités CPU équivaut à un seul processeur virtuel. AWS Fargate ne prend en charge que certaines combinaisons de configurations de processeur et de mémoire :
CPU (unités CPU) | Mémoire (Mio) |
---|---|
256 | 512, 1024 ou 2048 |
512 | 1 024 à 4 096 par incréments de 1 Gio |
1024 | 2 048 à 8 192 par incréments de 1 Gio |
2048 | 4 096 à 16 384 par incréments de 1 Gio |
4096 | 8 192 à 30 720 par incréments de 1 Gio |
Au moins un des éléments --cpu ou --memory doit être spécifié.
fargate service restart
Redémarrer le service
Crée un nouvel ensemble de tâches pour le service et arrête les tâches précédentes. Ceci est utile si votre service a besoin de recharger des données mises en cache à partir d'une source externe, par exemple.
Drapeau | Court | Défaut | Description |
---|---|---|---|
--tâche | -t | Famille de définition de tâches |
Les tâches sont des exécutions uniques de votre conteneur. Les instances de votre tâche sont exécutées jusqu'à ce que vous les arrêtiez manuellement via les API AWS, la console de gestion AWS ou jusqu'à ce qu'elles soient interrompues pour une raison quelconque.
fargate task register [--image <docker-image>]
[-e KEY=value -e KEY2=value] [--env-file dev.env]
[--secret KEY3=valueFrom] [--secret-file secrets.env]
Enregistre une nouvelle définition de tâche pour l'image Docker, les variables d'environnement ou les secrets spécifiés en fonction de la dernière révision de la famille de tâches et renvoie le nouveau numéro de révision.
L'image du conteneur Docker à utiliser dans la nouvelle définition de tâche peut être spécifiée via l'indicateur --image.
Les variables d'environnement peuvent être spécifiées à l'aide d'un ou plusieurs indicateurs --env
ou de l'indicateur --env-file
.
Les secrets peuvent être spécifiés à l'aide d'un ou plusieurs indicateurs --secret
ou de l'indicateur --secret-file
.
fargate task register [--file docker-compose.yml]
Enregistre une nouvelle définition de tâche à l'aide de l'image, des variables d'environnement et des secrets définis dans un fichier de composition Docker. Notez que les variables d'environnement sont remplacées par le contenu du fichier de composition.
Les secrets peuvent être définis sous forme de paires clé-valeur sous le champ d'extension de fichier Docker Compose x-fargate-secrets
. Pour utiliser des champs d'extension, la version du fichier de composition doit être au moins 2.4
pour la série 2.x ou au moins 3.7
pour la série 3.x.
Si le fichier Docker Compose définit plusieurs conteneurs, vous pouvez utiliser l'étiquette aws.ecs.fargate.deploy: 1
pour indiquer le conteneur que vous souhaitez déployer.
fargate task describe
La commande décrire décrit une définition de tâche au format Docker Compose. L'image Docker, les variables d'environnement, les secrets et le port cible sont les éléments mappés.
Cette commande peut être utile pour examiner les modifications apportées par les commandes task register
, service deploy
ou service env set
. Cela peut également être utile pour exécuter une définition de tâche localement à des fins de débogage ou de dépannage.
fargate task describe -t my-app > docker-compose.yml
docker-compose up
Vous pouvez spécifier la famille de définitions de tâches en utilisant un fichier fargate.yml
, la variable d'environnement FARGATE_TASK
ou en utilisant l'indicateur -t
, y compris un numéro de révision facultatif.
fargate task describe -t my-app
fargate task describe -t my-app:42
Exemple de sortie :
version : " 3.7 "
services :
app :
image : 1234567890.dkr.ecr.us-east-1.amazonaws.com/my-app:1.0
ports :
- published : 8080
target : 8080
environment :
AWS_REGION : us-east-1
ENVIRONMENT : dev
FOO : bar
x-fargate-secrets :
KEY : arn:key:ssm:us-east-1:000000000000:parameter/path/to/my_parameter
labels :
aws.ecs.fargate.deploy : " 1 "
fargate task logs [--follow] [--start <time-expression>] [--end <time-expression>]
[--filter <filter-expression>] [--task <task-id>]
[--container-name] [--time] [--no-prefix]
Afficher les journaux des tâches
Suppose un groupe de journaux cloudwatch avec la convention suivante : fargate/task/<task>
où task
est spécifiée via --task
, ou fargate.yml, ou des options de variable d'environnement
Renvoyez soit un segment spécifique de journaux de tâches, soit des journaux de queue en temps réel à l'aide de l'option --follow. Les journaux sont précédés du nom de leur flux de journaux, au format fargate/<container-name>/<task-id>.
--container-name
vous permet de spécifier le conteneur dans la définition de la tâche pour lequel obtenir les journaux (par défaut app
)
Follow continuera à s'exécuter et renverra les journaux jusqu'à ce qu'il soit interrompu par Control-C. Si --follow
est passé, --end
ne peut pas être spécifié.
Les journaux peuvent être renvoyés pour des tâches spécifiques en transmettant un ID de tâche via l'indicateur --task
. Transmettez --task
avec un ID de tâche plusieurs fois afin de récupérer les journaux de plusieurs tâches spécifiques.
Une fenêtre spécifique de journaux peut être demandée en passant les options --start
et --end
avec une expression temporelle. L'expression temporelle peut être une durée ou un horodatage :
Vous pouvez filtrer les journaux pour un terme spécifique en passant une expression de filtre via l'indicateur --filter
. Transmettez un seul terme pour rechercher ce terme, transmettez plusieurs termes pour rechercher des messages de journal incluant tous les termes.
--time
inclut l'horodatage du journal dans la sortie
--no-prefix
exclut le préfixe du flux de journaux de la sortie
Drapeau | Court | Défaut | Description |
---|---|---|---|
--règle | -r | Règle d'événements CloudWatch |
La commande events
fournit des sous-commandes pour travailler avec CloudWatch Events (tâches planifiées, etc.)
fargate events target --revision <revision>
« Déploie » (amène le prochain appel de règle d'événement à exécuter la nouvelle version) une révision de définition de tâche sur une règle d'événement CloudWatch en mettant à jour EcsParameters.TaskDefinitionArn
de la cible de règle.
Un système CI/CD typique pourrait faire quelque chose comme :
REVISION=$(fargate task register -i 123456789.dkr.ecr.us-east-1.amazonaws.com/my-app:${VERSION}-${CIRCLE_BUILD_NUM} -e FOO=bar)
fargate events target -r ${REVISION}