À 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?
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
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.
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
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