Aws-cli: Fournir une image Docker AWS CLI officielle

Créé le 26 avr. 2018  ·  28Commentaires  ·  Source: aws/aws-cli

J'ai été surpris de constater qu'il n'y a pas d'image Docker officielle pour le développement avec l'AWS CLI. L'utilisateur "amazon" sur Docker Hub ne contient que ces images pour travailler spécifiquement avec ECS et Elastic Beanstalk, et il ne semble pas encore y avoir d'images Amazon Docker officielles sur le nouveau Docker Store.

Lorsque j'ai recherché "aws cli" sur Docker Hub, l'image la plus populaire (avec plus de 1 million de téléchargements) était celle-ci , créée par Mesosphere. C'est assez bon, avec un Dockerfile très simple basé sur la super-petite image Alpine Linux. Après une enquête plus approfondie, j'ai trouvé le référentiel aws-codebuild-docker-images dans cette organisation, avec un ubuntu-base Dockerfile. Cette image a fière allure, alors pourquoi n'a-t-elle pas été poussée vers Docker Hub/Store ? D'ailleurs, pourquoi aucune des images de ce dépôt n'a-t-elle été poussée ? L'image de la mésosphère aws-cli fonctionnera bien, mais sa simplicité comparée à celle ubuntu-base m'a fait craindre qu'elle n'ait pas été correctement optimisée ; de même, l'image ubuntu-base est basée sur Ubuntu 14.04.5, qui est à la fois ancienne et volumineuse par rapport à Alpine Linux.

TL ;
Je pense qu'il devrait y avoir une image Docker officielle aws-cli maintenue par Amazon et transmise à Docker Hub/Store. Idéalement, il devrait prendre en charge toutes les principales distributions Linux modernes, y compris Alpine Linux. On devrait pouvoir exécuter la commande suivante et tout fonctionner :

docker run -it amazon/aws-cli

ÉDITER

Ce problème est désormais suivi au numéro 3553. Vous devriez aimer celui-ci pour montrer votre soutien et laisser des commentaires dans ce fil. Ce problème est clos.

duplicate guidance service-api

Commentaire le plus utile

Il est également utile dans les environnements dockerisés CI/CD (comme le pipeline Jenkins). Au lieu d'installer aws-cli sur chaque build, il est plus facile d'utiliser simplement une image Docker qui peut être mise en cache.

Tous les 28 commentaires

Les images auxquelles vous créez un lien appartiennent à l'équipe CodeBuild pour une utilisation dans leur service. Si vous souhaitez qu'ils les publient sur Docker Hub, je vous recommande de les contacter dans leur forum de service / via le support.

En général, je ne sais pas quelle valeur il y a à avoir une image docker qui n'est que la CLI. Je peux voir la valeur de quelque chose qui est difficile/compliqué à installer et faire fonctionner un mvp, mais la CLI n'est pas si compliquée : installez python, installez pip, installez cli. La plupart des distributions ont même un package prédéfini (bien que vous couriez le risque d'être obsolète).

Une image AWS CLI Docker est utile dans les scénarios de déploiement Kubernetes.

Il est également utile dans les environnements dockerisés CI/CD (comme le pipeline Jenkins). Au lieu d'installer aws-cli sur chaque build, il est plus facile d'utiliser simplement une image Docker qui peut être mise en cache.

Ouais j'avais un peu oublié que j'avais ouvert ce sujet...

Je me rends compte qu'il peut sembler trivial de créer une image Docker pour chaque petit programme CLI, car apt get partir d'un Dockerfile devrait suffire à tout utilisateur sensé pour être opérationnel. Le but est de supprimer des étapes supplémentaires. Oui, je pourrais créer un Dockerfile FROM l'image Debian de base, apt get Python, puis obtenir tous les autres outils dont j'ai besoin qui dépendent de Python... ou je pourrais simplement commencer FROM l'image Python et avoir une chose de moins à télécharger, un obstacle de moins à l'utilisation de Python, en particulier pour les scénarios mentionnés par @xplorld et @alexandrusavin. Je n'ai pas tellement soulevé ce problème parce qu'il s'agit d'un terrible obstacle que je ne pourrais pas surmonter sans l'aide d'Amazon, mais parce que cela semblait être un "pourquoi pas" trivial pour Amazon à mettre en œuvre et à ajouter de la valeur pour leur AWS-et-Docker -à l'aide de clients.

Ceci est également pratique pour ceux qui souhaitent simplement valider des modèles de formation cloud dans un pipeline CI

Cela serait également utile pour le développement local et le suivi des dernières versions de la CLI. Plusieurs développeurs ont été retardés plus longtemps que nécessaire pour obtenir la bonne version de python, la bonne version de pip, puis la bonne version de la CLI. Pouvoir exécuter docker run --rm awscli:latest ... serait très pratique.

Tout, ce problème est maintenant suivi au # 3553. Vous devriez aimer celui-ci pour montrer votre soutien et laisser des commentaires dans ce fil. Ce problème est clos.

Docker sera utile.

L'image Docker officielle sera certainement utile

installez python, installez pip, installez cli.

Ensuite, exécutez aws et obtenez command not found . Très simple.

Pour l'instant j'utilise un Dockerfile comme dans ce repo :

FROM python:alpine

ARG CLI_VERSION=1.16.86

RUN apk -uv add --no-cache groff jq less && \
    pip install --no-cache-dir awscli==$CLI_VERSION

WORKDIR /aws

CMD sh

C'est une chose triviale à faire, mais il serait certainement préférable d'avoir une image officielle du aws-cli .

En général, je ne sais pas quelle valeur il y a à avoir une image docker qui n'est que la CLI. Je peux voir la valeur de quelque chose qui est difficile/compliqué à installer et faire fonctionner un mvp, mais la CLI n'est pas si compliquée : installez python, installez pip, installez cli.

Je ne peux pas croire, c'est un commentaire d'un employé d'AWS. C'est vraiment triste.

Je suis dans un scénario similaire où je veux exécuter un Cronjob K8S qui effectue des sauvegardes sur S3, avoir une image awscli officielle _sure serait pratique en ce moment_

Nous utilisons le problème #3553 pour suivre la demande de fonctionnalité pour cette demande.

Les images auxquelles vous créez un lien appartiennent à l'équipe CodeBuild pour une utilisation dans leur service. Si vous souhaitez qu'ils les publient sur Docker Hub, je vous recommande de les contacter dans leur forum de service / via le support.

En général, je ne sais pas quelle valeur il y a à avoir une image docker qui n'est que la CLI. Je peux voir la valeur de quelque chose qui est difficile/compliqué à installer et faire fonctionner un mvp, mais la CLI n'est pas si compliquée : installez python, installez pip, installez cli. La plupart des distributions ont même un package prédéfini (bien que vous couriez le risque d'être obsolète).

Personnellement, je conteneurise autant que possible pour aider à garder mon poste de travail propre de plusieurs packages. Des paquets qui un jour peuvent en contredire d'autres lorsqu'ils sont mis à jour.

Bonjour les gens de Github

Il est également important de noter que lorsque vous utilisez un système CI/CD qui vous facture la durée de la tâche de déploiement (par exemple, xx,xx $ par heure par mois, etc.), vous ne pouvez pas vous permettre de passer du temps à installer encore et encore. encore une fois les outils dont vous avez besoin après avoir extrait une image qui n'a pas tout ce dont vous avez besoin.

Dans mon cas, je vois une image python en cours d'extraction, puis le package zip en cours d'installation, et maintenant j'ai besoin de l'awscli installé et celui-ci prend un certain temps à installer. C'est simplement un temps perdu dont on pourrait se passer.

Avoir une image docker avec tous les outils préinstallés n'aura pas de prix.

Il y a maintenant une image docker construite automatiquement sur chaque version awscli ici

⚠️ Avertissement : je suis l'auteur

Merci b4nst. Mais j'en ai choisi un qui est construit et maintenu par Atlassian pour le Bitbucket Pipeline. Il se trouve sur le DockerHub sous atlassian/pipelines-awscli (https://hub.docker.com/r/atlassian/pipelines-awscli). Et je l'utilise avec leur pipeline.

@b4nst veuillez lier le dépôt du hub docker avec votre github afin que nous puissions voir le code source

Il y avait déjà un lien vers la page du docker hub . Le code est hébergé ici

L'éléphant dans la pièce ici est que lorsque les gens utilisent CI/CD et manipulent des codes sensibles qui font partie d'un logiciel d'entreprise, ils ont tendance à vouloir savoir qui et quoi manipule leur code. Ainsi, même avec de bonnes intentions, les gens ont tendance à se méfier lorsqu'il s'agit de quelque chose qui n'est pas fourni par une grande entreprise à moins qu'ils ne voient le code source. Je pense personnellement qu'il n'y a rien de mal avec l'image docker de @ b4nst . J'ai vérifié le code et c'est bon. Il se trouve que celui d'Atlassian contient quelques éléments supplémentaires nécessaires au cours de nos processus de déploiement. Par exemple, il a git, less entre autres choses. De cette façon, la même image peut nous permettre de cloner des éléments à partir de n'importe quel référentiel git.

Totalement d'accord avec cela, la meilleure solution est qu'AWS expédie sa propre image docker à jour (si vous leur faites confiance pour le cli, vous leur faites confiance pour l'image). Mais en attendant, je pense que l'open source est le moindre mal. Même s'il est soutenu par une grande entreprise, il pourrait être corrompu (je ne ferais pas confiance à Microsoft ou Google pour un awscli si je ne peux pas lire le code...)

J'ai fait une boulangerie d'images avec Déploiement continu vers Dockerhub abdennour/aws .

L'une des images est l'image AWS .

Si vous souhaitez mettre à niveau vers les dernières versions, il vous suffit de mettre à jour .env et d'ouvrir PR.

Même les images AWS pour amazonlinux qui indiquent dans la documentation qu'amazonlinux a la cli installée par défaut... ne le font pas.

Amazon est un monopole et ils le savent. Ils n'ont pas à s'en soucier ?

+1

Je me suis retrouvé ici en en cherchant un et j'ai trouvé une image officielle par la suite, donc je vais le coller ici pour tous ceux qui trouveront ce fil à l'avenir.

https://hub.docker.com/r/amazon/aws-cli

@Xaeonn Correct, c'est la nouvelle image officielle AWS CLI Docker. Un développeur d'Amazon vient de l'annoncer hier soir dans # 3553, où ce problème est actuellement suivi, comme je l'ai commenté ci-dessus.

installez python, installez pip, installez cli.

Ensuite, exécutez aws et obtenez command not found . Très simple.

:smile: :rire: :rire: classique :100: , fait toujours ma journée

Cette page vous a été utile?
0 / 5 - 0 notes