Me sorprendió descubrir que no existe una imagen oficial de Docker para el desarrollo con la CLI de AWS. El usuario "amazon" en Docker Hub contiene solo estas imágenes para trabajar específicamente con ECS y Elastic Beanstalk, y todavía no parece haber ninguna imagen oficial de Amazon Docker en la nueva Docker Store.
Cuando busqué "aws cli" en Docker Hub, la imagen más popular (con más de 1 millón de descargas) fue esta , creada por Mesosphere. Es lo suficientemente bueno, con un Dockerfile muy simple basado en la imagen súper pequeña de Alpine Linux. Luego de una mayor investigación, encontré el repositorio aws-codebuild-docker-images
en esta organización, con un archivo Docker ubuntu-base
. Esta imagen se ve muy bien, entonces, ¿por qué no se envió a Docker Hub/Store? De hecho, ¿por qué no se ha enviado ninguna de las imágenes de ese repositorio? La imagen de Mesosphere aws-cli
funcionará bien, pero su simplicidad en comparación con ubuntu-base
me hizo preocuparme de que no se haya optimizado correctamente; De manera similar, la imagen ubuntu-base
se basa en Ubuntu 14.04.5, que es antiguo y voluminoso en comparación con Alpine Linux.
TL;
Creo que debería haber una imagen Docker oficial aws-cli
mantenida por Amazon y enviada a Docker Hub/Store. Idealmente, debería ser compatible con todas las principales distribuciones modernas de Linux, incluido Alpine Linux. Uno debería poder ejecutar el siguiente comando y hacer que todo funcione:
docker run -it amazon/aws-cli
Este problema ahora se está rastreando en el n.º 3553. Deberías darle me gusta a ese para mostrar tu apoyo y dejar comentarios en ese hilo. Este problema está cerrado.
Las imágenes a las que vincula son propiedad del equipo de CodeBuild para su uso en su servicio. Si desea que los publiquen en Docker Hub, le recomiendo que se comunique con ellos en su foro de servicio/a través de soporte.
En general, no estoy seguro de qué valor tiene tener una imagen acoplable que sea solo la CLI. Puedo ver el valor de algo que es difícil/complicado de instalar y ejecutar un mvp, pero la CLI no es tan complicada: instale python, instale pip, instale cli. La mayoría de las distribuciones incluso tienen un paquete preconstruido (aunque corre el riesgo de estar desactualizado).
Una imagen de Docker de la AWS CLI es útil en escenarios de implementación de Kubernetes.
También es valioso en entornos dockerizados de CI/CD (como la canalización de Jenkins). En lugar de instalar aws-cli en cada compilación, es más fácil usar una imagen de Docker que se pueda almacenar en caché.
Sí, wow, olvidé por completo que abrí este número...
Me doy cuenta de que puede parecer trivial crear una imagen de Docker para cada pequeño programa CLI que existe, ya que apt get
desde un Dockerfile debería ser suficiente para que cualquier usuario sensato se ponga en marcha. El punto es eliminar pasos adicionales. Sí, podría crear un Dockerfile FROM
la imagen base de Debian, apt get
Python, y luego obtener todas las demás herramientas que necesito que dependan de Python... o simplemente podría comenzar FROM
la imagen de Python y tendrá una cosa menos que descargar, una barrera menos para usar Python, especialmente para los escenarios mencionados por @xplorld y @alexandrusavin. No planteé tanto este problema porque es un obstáculo terrible que no podría superar sin la ayuda de Amazon, sino porque parecía un "por qué no" trivial para que Amazon lo implementara y agregara algo de valor a su AWS y Docker. -Usando clientes.
Esto también es útil para aquellos que solo quieren validar plantillas de formación en la nube en una canalización de CI.
También sería útil para el desarrollo local y mantenerse al día con las últimas versiones de la CLI. Varios desarrolladores se han retrasado más de lo necesario para obtener la versión correcta de python, la versión correcta de pip y luego la versión correcta de la CLI. Ser capaz de ejecutar docker run --rm awscli:latest ...
sería muy útil.
Todos, este problema ahora se está rastreando en el n.º 3553. Deberías darle me gusta a ese para mostrar tu apoyo y dejar comentarios en ese hilo. Este problema está cerrado.
Docker será útil.
Definitivamente, la imagen oficial de Docker será útil
instalar python, instalar pip, instalar cli.
Luego ejecute aws
y obtenga command not found
. Muy simple.
Por ahora estoy usando un Dockerfile como en este repositorio :
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 algo trivial, pero definitivamente sería mejor tener una imagen oficial del aws-cli
.
En general, no estoy seguro de qué valor tiene tener una imagen acoplable que sea solo la CLI. Puedo ver el valor de algo que es difícil/complicado de instalar y ejecutar un mvp, pero la CLI no es tan complicada: instale python, instale pip, instale cli.
No puedo creer, este es un comentario de un empleado de AWS. En realidad es triste.
Estoy en un escenario similar en el que quiero ejecutar un Cronjob K8S que realiza copias de seguridad en S3, tener una imagen oficial de awscli _seguro que sería útil en este momento_
Estamos utilizando el número 3553 para realizar un seguimiento de la solicitud de funciones para esta solicitud.
Las imágenes a las que vincula son propiedad del equipo de CodeBuild para su uso en su servicio. Si desea que los publiquen en Docker Hub, le recomiendo que se comunique con ellos en su foro de servicio/a través de soporte.
En general, no estoy seguro de qué valor tiene tener una imagen acoplable que sea solo la CLI. Puedo ver el valor de algo que es difícil/complicado de instalar y ejecutar un mvp, pero la CLI no es tan complicada: instale python, instale pip, instale cli. La mayoría de las distribuciones incluso tienen un paquete preconstruido (aunque corre el riesgo de estar desactualizado).
Personalmente, organizo todo lo que puedo en contenedores para ayudar a mantener mi estación de trabajo libre de múltiples paquetes. Paquetes que algún día pueden contradecir a otros al actualizarse.
Hola gente de Github
También es importante tener en cuenta que cuando utiliza cualquier sistema de CI/CD que le factura la duración de la tarea de implementación (por ejemplo, $xx,xx por hora al mes, etc.), entonces no puede permitirse perder tiempo instalando una y otra vez. nuevamente las herramientas que necesita después de extraer una imagen que no tiene todo lo que necesita.
En mi caso, veo que se extrae una imagen de python, luego se instala el paquete zip, y ahora necesito instalar awscli y eso lleva bastante tiempo instalarlo. Es simplemente una pérdida de tiempo que podríamos prescindir.
Tener una imagen docker con todas las herramientas preinstaladas no tendrá precio.
Ahora hay una imagen acoplable creada automáticamente en cada versión de awscli aquí
⚠️ Descargo de responsabilidad: soy el autor
Gracias b4nst. Pero elegí uno creado y mantenido por Atlassian para Bitbucket Pipeline. Está en DockerHub como atlassian/pipelines-awscli (https://hub.docker.com/r/atlassian/pipelines-awscli). Y estoy usando esto con su canalización.
@b4nst , vincule el repositorio de docker hub con su github para que podamos ver el código fuente
Ya había un enlace a la página de docker hub . El código está alojado aquí .
El elefante en la habitación aquí es que cuando las personas usan CI/CD y manejan códigos confidenciales que son parte de un software corporativo, tienden a querer saber quién y qué está manejando su código. Entonces, incluso con las buenas intenciones, las personas tienden a desconfiar cuando se trata de algo que una gran empresa no respalda, a menos que vean el código fuente. Personalmente, creo que no hay nada malo con la imagen acoplable de @b4nst . Revisé el código y está bien. Simplemente sucedió que el de Atlassian tiene algunas cosas más que se necesitan durante nuestros procesos de implementación. Por ejemplo, tiene git, less entre otras cosas. De esa manera, la misma imagen puede permitirnos clonar cosas de cualquier repositorio de git.
Totalmente de acuerdo con eso, la mejor solución es que AWS envíe su propia imagen acoplable actualizada (si confía en ellos para la CLI, confía en ellos para la imagen). Pero mientras tanto, creo que el código abierto es el mal menor. Incluso si está respaldado por una gran empresa, podría estar dañado (no confiaría en Microsoft o Google para un awscli si no puedo leer el código...)
Hice una panadería de imágenes con Deployment continuo a Dockerhub abdennour/aws .
Una de las imágenes es la imagen de AWS .
Si desea actualizar a las últimas versiones, solo necesita actualizar .env y abrir PR.
Incluso las imágenes de AWS para amazonlinux que indican en la documentación que amazonlinux tiene el cli instalado de forma predeterminada... no lo hacen.
Amazon es un monopolio y lo saben. ¿A ellos no les tiene que importar?
+1
Terminé aquí mientras buscaba uno y luego encontré una imagen oficial, así que la dejaré aquí para cualquiera que encuentre este hilo en el futuro.
@Xaeonn Correcto, esa es la nueva imagen oficial de AWS CLI Docker. Un desarrollador de Amazon acaba de anunciar esto anoche en el n.° 3553, donde ahora se está rastreando este problema, como comenté anteriormente.
instalar python, instalar pip, instalar cli.
Luego ejecute
aws
y obtengacommand not found
. Muy simple.
:sonrisa: :risa: :risa: clásico :100: , siempre me alegra el día
Comentario más útil
También es valioso en entornos dockerizados de CI/CD (como la canalización de Jenkins). En lugar de instalar aws-cli en cada compilación, es más fácil usar una imagen de Docker que se pueda almacenar en caché.