Aws-cli: Stellen Sie das offizielle AWS CLI-Docker-Image bereit

Erstellt am 26. Apr. 2018  ·  28Kommentare  ·  Quelle: aws/aws-cli

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

BEARBEITEN

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.

duplicate guidance service-api

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.

Alle 28 Kommentare

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.

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

@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 Sie command not found . Sehr einfach.

:smile: :lachen: :lachen: klassisch :100: , versüßt mir immer den Tag

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen