Ich war überrascht, als ich feststellte, dass es kein offizielles Docker-Image für die Entwicklung mit der AWS CLI gibt. Der „amazon“-Benutzer auf Docker Hub enthält nur diese Images, um speziell mit ECS und Elastic Beanstalk zu arbeiten, und es scheint noch keine offiziellen Amazon Docker-Images im neuen Docker Store zu geben.
Als ich auf Docker Hub nach „aws cli“ suchte, war das beliebteste Image (mit mehr als 1 Million Downloads) dieses von Mesosphere erstellte. Es ist gut genug, mit einem sehr einfachen Dockerfile, das auf dem superkleinen Alpine Linux-Image basiert. Bei weiteren Nachforschungen fand ich das Repo aws-codebuild-docker-images
in dieser Organisation mit einer ubuntu-base
Dockerfile. Dieses Bild sieht gut aus, warum wurde es also nicht an Docker Hub/Store gepusht? Warum wurde übrigens keines der Bilder in diesem Repo gepusht? Das Mesosphere aws-cli
Bild wird gut funktionieren, aber seine Einfachheit im Vergleich zu diesem ubuntu-base
machte mich besorgt, dass es nicht richtig optimiert wurde; Ebenso basiert das ubuntu-base
-Image auf Ubuntu 14.04.5, das im Vergleich zu Alpine Linux sowohl alt als auch sperrig ist.
TL;
Ich glaube, es sollte ein offizielles aws-cli
Docker-Image geben, das von Amazon gepflegt und an Docker Hub/Store gepusht wird. Idealerweise sollte es alle wichtigen modernen Linux-Distributionen unterstützen, einschließlich Alpine Linux. Man sollte in der Lage sein, den folgenden Befehl auszuführen und alles funktioniert einfach:
docker run -it amazon/aws-cli
Dieses Problem wird jetzt unter #3553 verfolgt. Sie sollten diesen Thread mögen, um Ihre Unterstützung zu zeigen und Kommentare in diesem Thread zu hinterlassen. Dieses Problem ist geschlossen.
Diese Bilder, auf die Sie verlinken, sind Eigentum des CodeBuild-Teams zur Verwendung in seinem Dienst. Wenn Sie möchten, dass sie sie im Docker-Hub veröffentlichen, würde ich empfehlen, sie in ihrem Service-Forum / über den Support zu kontaktieren.
Im Allgemeinen bin ich mir nicht sicher, welchen Wert es hat, ein Docker-Image zu haben, das nur die CLI ist. Ich kann den Wert für etwas sehen, das schwierig / kompliziert zu installieren ist, und ein MVP zum Laufen bringen, aber die CLI ist nicht so kompliziert: Python installieren, pip installieren, cli installieren. Die meisten Distributionen haben sogar ein vorgefertigtes Paket (obwohl Sie Gefahr laufen, veraltet zu sein).
Ein AWS CLI Docker-Image ist in Kubernetes-Bereitstellungsszenarien nützlich.
Es ist auch in CI/CD-gedockten Umgebungen (wie der Jenkins-Pipeline) wertvoll. Anstatt aws-cli bei jedem Build zu installieren, ist es einfacher, einfach ein Docker-Image zu verwenden, das zwischengespeichert werden kann.
Ja, wow, ich habe irgendwie total vergessen, dass ich dieses Thema eröffnet habe ...
Mir ist klar, dass es trivial erscheinen mag, ein Docker-Image für jedes kleine CLI-Programm da draußen zu erstellen, da apt get
ing aus einer Docker-Datei für jeden vernünftigen Benutzer ausreichen sollte, um es zum Laufen zu bringen. Der Punkt ist, zusätzliche Schritte zu entfernen. Ja, ich könnte ein Dockerfile FROM
das Basis-Debian-Image apt get
Python erstellen und dann alle anderen Tools bekommen, die ich brauche, die von Python abhängen ... oder ich könnte einfach anfangen FROM
das Python-Image und haben eine Sache weniger zum Herunterladen, eine Barriere weniger für die Verwendung von Python, insbesondere für die von @xplorld und @alexandrusavin erwähnten Szenarien. Ich habe dieses Problem nicht so sehr angesprochen, weil dies eine schreckliche Hürde ist, die ich ohne die Hilfe von Amazon nicht überwinden könnte, sondern weil es wie ein triviales „Warum nicht“ für Amazon erschien, AWS und Docker zu implementieren und einen Mehrwert zu schaffen -Kunden nutzen.
Dies ist auch praktisch für diejenigen, die nur Wolkenbildungsvorlagen in einer CI-Pipeline validieren möchten
Es wäre auch nützlich für die lokale Entwicklung und um mit den neuesten Versionen der CLI Schritt zu halten. Wir hatten mehrere Entwickler, die länger als nötig verzögert wurden, um die richtige Version von Python, die richtige Version von Pip und dann die richtige Version der CLI zu erhalten. Es wäre sehr praktisch, docker run --rm awscli:latest ...
ausführen zu können.
Alle, dieses Problem wird jetzt unter #3553 verfolgt. Sie sollten diesen Thread mögen, um Ihre Unterstützung zu zeigen und Kommentare in diesem Thread zu hinterlassen. Dieses Problem ist geschlossen.
Docker wird nützlich sein.
Definitiv ein offizielles Docker-Image wird nützlich sein
Python installieren, Pip installieren, CLI installieren.
Führen Sie dann aws
aus und erhalten Sie command not found
. Sehr einfach.
Im Moment verwende ich ein Dockerfile wie in diesem 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
Es ist eine triviale Sache, aber es wäre definitiv besser, ein offizielles Bild der aws-cli
zu haben.
Im Allgemeinen bin ich mir nicht sicher, welchen Wert es hat, ein Docker-Image zu haben, das nur die CLI ist. Ich kann den Wert für etwas sehen, das schwierig / kompliziert zu installieren ist, und ein MVP zum Laufen bringen, aber die CLI ist nicht so kompliziert: Python installieren, pip installieren, cli installieren.
Ich kann nicht glauben, das ist ein Kommentar eines AWS-Mitarbeiters. Es ist eigentlich traurig.
Ich befinde mich in einem ähnlichen Szenario, in dem ich einen K8S Cronjob ausführen möchte, der Backups auf S3 durchführt, wobei ein offizielles awscli-Image _sicherlich gerade jetzt praktisch wäre_
Wir verwenden Issue #3553, um die Funktionsanfrage für diese Anfrage zu verfolgen.
Diese Bilder, auf die Sie verlinken, sind Eigentum des CodeBuild-Teams zur Verwendung in seinem Dienst. Wenn Sie möchten, dass sie sie im Docker-Hub veröffentlichen, würde ich empfehlen, sie in ihrem Service-Forum / über den Support zu kontaktieren.
Im Allgemeinen bin ich mir nicht sicher, welchen Wert es hat, ein Docker-Image zu haben, das nur die CLI ist. Ich kann den Wert für etwas sehen, das schwierig / kompliziert zu installieren ist, und ein MVP zum Laufen bringen, aber die CLI ist nicht so kompliziert: Python installieren, pip installieren, cli installieren. Die meisten Distributionen haben sogar ein vorgefertigtes Paket (obwohl Sie Gefahr laufen, veraltet zu sein).
Persönlich verpacke ich so viel wie möglich, um meine Workstation von mehreren Paketen sauber zu halten. Pakete, die eines Tages anderen widersprechen können, wenn sie aktualisiert werden.
Hallo Leute von Github
Es ist auch wichtig zu beachten, dass Sie es sich nicht leisten können, immer wieder Zeit für die Installation aufzuwenden, wenn Sie ein CI/CD-System verwenden, das Ihnen die Dauer der Bereitstellungsaufgabe in Rechnung stellt (z. B. xx,xx USD pro Stunde pro Monat usw.). wieder die Werkzeuge, die Sie benötigen, nachdem Sie ein Bild gezogen haben, das nicht alles hat, was Sie brauchen.
In meinem Fall sehe ich, wie ein Python-Image gezogen wird, dann wird das Zip-Paket installiert, und jetzt muss das awscli installiert werden, und die Installation dauert eine ganze Weile. Es ist einfach eine verschwendete Zeit, auf die wir verzichten könnten.
Ein Docker-Image mit allen vorinstallierten Tools ist unbezahlbar.
Hier gibt es jetzt ein Docker-Image, das automatisch in jeder awscli -Version erstellt wird
⚠️ Haftungsausschluss: Ich bin der Autor
Danke b4nst. Aber ich habe eine ausgewählt, die von Atlassian für die Bitbucket-Pipeline erstellt und gewartet wird. Es befindet sich auf dem DockerHub als atlassian/pipelines-awscli (https://hub.docker.com/r/atlassian/pipelines-awscli). Und ich verwende dies mit ihrer Pipeline.
@b4nst Bitte verknüpfen Sie das Docker-Hub-Repo mit Ihrem Github, damit wir den Quellcode sehen können
Es gab bereits einen Link zur Docker-Hub-Seite . Der Code wird hier gehostet
Der Elefant im Raum hier ist, dass Menschen, die CI/CD verwenden und mit sensiblen Codes umgehen, die Teil einer Unternehmenssoftware sind, dazu neigen, zu wissen, wer und was ihren Code handhabt. Selbst mit den guten Absichten neigen die Leute dazu, vorsichtig zu werden, wenn es um etwas geht, das von einem großen Unternehmen nicht zurückgemeldet wird, es sei denn, sie sehen den Quellcode. Ich persönlich denke, dass am Docker-Image von @b4nst nichts auszusetzen ist. Ich habe den Code überprüft und es ist in Ordnung. Es ist einfach passiert, dass das von Atlassian ein paar Dinge mehr enthält, die während unserer Bereitstellungsprozesse benötigt werden. Zum Beispiel hat es unter anderem git, less. Auf diese Weise können wir mit demselben Image Sachen aus jedem Git-Repository klonen.
Stimmen Sie dem vollkommen zu, die beste Lösung ist, dass AWS sein eigenes aktuelles Docker-Image versendet (wenn Sie ihnen für das CLI vertrauen, vertrauen Sie ihnen für das Image). Aber mittlerweile halte ich Open Source für das kleinere Übel. Selbst wenn es von einem großen Unternehmen unterstützt wird, könnte es beschädigt sein (ich würde Microsoft oder Google für ein awscli nicht vertrauen, wenn ich den Code nicht lesen kann ...)
Ich habe eine Bäckerei von Bildern mit kontinuierlicher Bereitstellung für Dockerhub abdennour/aws erstellt .
Eines der Bilder ist AWS image .
Wenn Sie auf die neuesten Versionen aktualisieren möchten, müssen Sie nur .env aktualisieren und PR öffnen.
Sogar die AWS-Images für amazonlinux, die in der Dokumentation angeben, dass amazonlinux die CLI standardmäßig installiert hat ... tun dies nicht.
Amazon ist ein Monopol und sie wissen es. Es muss ihnen egal sein?
+1
Ich bin hier gelandet, als ich nach einem gesucht habe, und habe danach ein offizielles Bild gefunden, also werde ich es hier für alle einkleben, die diesen Thread in Zukunft finden.
@Xaeonn Richtig, das ist das neue offizielle AWS CLI Docker-Image. Ein Amazon-Entwickler hat dies gerade letzte Nacht in #3553 angekündigt, wo dieses Problem jetzt verfolgt wird, wie ich oben kommentiert habe.
Python installieren, Pip installieren, CLI installieren.
Führen Sie dann
aws
aus und erhalten Siecommand not found
. Sehr einfach.
:smile: :lachen: :lachen: klassisch :100: , versüßt mir immer den Tag
Hilfreichster Kommentar
Es ist auch in CI/CD-gedockten Umgebungen (wie der Jenkins-Pipeline) wertvoll. Anstatt aws-cli bei jedem Build zu installieren, ist es einfacher, einfach ein Docker-Image zu verwenden, das zwischengespeichert werden kann.