web-dev-qa-db-fra.com

AWS CLI: les images de liste ECR, les plus récentes

À l'aide d'AWS CLI et de jq si nécessaire, j'essaie d'obtenir la balise de la plus récente image dans un référentiel particulier .

Appelons le repo foo, et disons que la dernière image est étiquetée bar. Quelle requête dois-je utiliser pour renvoyer bar?

Je suis allé aussi loin que

aws ecr list-images --repository-name foo

puis réalisé que la documentation des images de liste ne fait aucune référence à la date comme champ interrogeable. Coller ce qui précède dans un terminal me donne des paires de clés avec juste le tag et le résumé, pas de date.

Existe-t-il encore un moyen d'obtenir la "dernière" image? Puis-je supposer que ce sera toujours le premier ou le dernier dans la sortie renvoyée?

9
Alex

Vous pouvez utiliser describe-images à la place.

aws ecr describe-images --repository-name foo 

renvoie imagePushedAt qui est une propriété d'horodatage que vous pouvez utiliser pour filtrer.

Je n'ai pas d'exemples dans mon compte pour tester mais quelque chose comme le suivant devrait fonctionner

aws ecr describe-images --repository-name foo \
--query 'sort_by(imageDetails,& imagePushedAt)[*]'

Si vous voulez une autre saveur de l'utilisation de la méthode de tri, vous pouvez consulter ce post

21
Frédéric Henri

Pour ajouter à la réponse de Frédéric, si vous voulez la dernière, vous pouvez utiliser [-1]:

aws ecr describe-images --repository-name foo \
--query 'sort_by(imageDetails,& imagePushedAt)[-1].imageTags[0]'

En supposant que vous utilisez une balise singulière sur vos images ... sinon vous devrez peut-être utiliser imageTags[*] et faites un peu plus de travail pour saisir la balise que vous voulez.

5
Brett Green

Pour obtenir uniquement la dernière image sans ajout de caractère spécial requis pour la réponse ci-dessus.

aws ecr describe-images --repository-name foo --query 'sort_by(imageDetails,& imagePushedAt)[-1].imageTags[0]' --output text
1
Vinay Gowda

Sans avoir à trier les résultats, vous pouvez les filtrer en spécifiant l'imageTag = latest sur l'image-id, comme ceci:

aws ecr describe-images --repository-name foo --image-ids imageTag=latest --output text

Cela ne retournera qu'un seul résultat avec l'image la plus récente, qui est celle étiquetée comme latest

0
mjlescano