Aws-cli: Fornecer imagem oficial do Docker da AWS CLI

Criado em 26 abr. 2018  ·  28Comentários  ·  Fonte: aws/aws-cli

Fiquei surpreso ao descobrir que não há uma imagem oficial do Docker para desenvolvimento com a AWS CLI. O usuário "amazon" no Docker Hub contém apenas essas imagens para trabalhar especificamente com o ECS e o Elastic Beanstalk, e ainda não parece haver nenhuma imagem oficial do Amazon Docker na nova Docker Store.

Quando pesquisei "aws cli" no Docker Hub, a imagem mais popular (com mais de 1 milhão de downloads) foi essa , criada pela Mesosphere. É bom o suficiente, com um Dockerfile muito simples baseado na imagem super-minúscula do Alpine Linux. Após uma investigação mais aprofundada, encontrei o repositório aws-codebuild-docker-images nesta organização, com um Dockerfile ubuntu-base . Esta imagem parece ótima, então por que ela não foi enviada para o Docker Hub/Store? Por falar nisso, por que nenhuma das imagens nesse repositório foi enviada? A imagem Mesosphere aws-cli funcionará bem, mas sua simplicidade em comparação com aquela ubuntu-base me deixou preocupado com o fato de ela não ter sido otimizada adequadamente; da mesma forma, a imagem ubuntu-base é baseada no Ubuntu 14.04.5, que é antigo e volumoso comparado ao Alpine Linux.

TL;
Acredito que deveria haver uma imagem oficial do Docker aws-cli mantida pela Amazon e enviada para o Docker Hub/Store. Idealmente, ele deve suportar todas as principais distribuições modernas do Linux, incluindo o Alpine Linux. Deve-se ser capaz de executar o seguinte comando e fazer tudo funcionar:

docker run -it amazon/aws-cli

EDITAR

Este problema agora está sendo rastreado em #3553. Você deve gostar desse para mostrar seu apoio e deixar comentários nesse tópico. Este problema está encerrado.

duplicate guidance service-api

Comentários muito úteis

Também é valioso em ambientes dockerizados de CI/CD (como pipeline Jenkins). Em vez de instalar o aws-cli em cada compilação, é mais fácil usar apenas uma imagem do Docker que pode ser armazenada em cache.

Todos 28 comentários

Essas imagens vinculadas são de propriedade da equipe do CodeBuild para uso em seu serviço. Se você quiser que eles os publiquem no docker hub, recomendo entrar em contato com eles no fórum de serviço/via suporte.

Em geral, não tenho certeza de qual valor há em ter uma imagem do docker que seja apenas a CLI. Eu posso ver o valor para algo que é difícil/complicado de instalar e fazer um mvp rodar, mas a CLI não é tão complicada assim: instalar python, instalar pip, instalar cli. A maioria das distribuições ainda tem um pacote pré-construído (embora você corra o risco de ficar desatualizado).

Uma imagem do AWS CLI Docker é útil em cenários de implantação do Kubernetes.

Também é valioso em ambientes dockerizados de CI/CD (como pipeline Jenkins). Em vez de instalar o aws-cli em cada compilação, é mais fácil usar apenas uma imagem do Docker que pode ser armazenada em cache.

Sim, uau, eu meio que esqueci totalmente que abri esta edição ...

Percebo que pode parecer trivial criar uma imagem do Docker para cada pequeno programa CLI existente, pois apt get ing de um Dockerfile deve ser suficiente para qualquer usuário sensato começar a funcionar. O objetivo é remover etapas adicionais. Sim, eu poderia criar um Dockerfile FROM a imagem base do debian, apt get Python, e então obter todas as outras ferramentas que eu preciso que dependem do Python... ou eu poderia apenas iniciar FROM a imagem do Python e ter uma coisa a menos para baixar, uma barreira a menos para usar o Python, especialmente para os cenários mencionados por @xplorld e @alexandrusavin. Eu não levantei tanto esse problema porque este é um obstáculo terrível que eu não poderia superar sem a ajuda da Amazon, mas porque parecia um "por que não" trivial para a Amazon implementar e agregar algum valor ao seu AWS-and-Docker -usando clientes.

Isso também é útil para quem deseja apenas validar modelos de formação de nuvem em um pipeline de CI

Também seria útil para desenvolvimento local e acompanhar as versões mais recentes da CLI. Tivemos vários desenvolvedores atrasados ​​por mais tempo do que o necessário para obter a versão correta do python, a versão correta do pip e, em seguida, a versão correta da CLI. Ser capaz de executar docker run --rm awscli:latest ... seria muito útil.

Tudo, este problema agora está sendo rastreado em #3553. Você deve gostar desse para mostrar seu apoio e deixar comentários nesse tópico. Este problema está encerrado.

Docker será útil.

Definitivamente, a imagem oficial do Docker será útil

instale python, instale pip, instale cli.

Então corra aws e ganhe command not found . Muito simples.

Por enquanto estou usando um Dockerfile como neste repositório:

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

É uma coisa trivial de se fazer, mas definitivamente seria melhor ter uma imagem oficial do aws-cli .

Em geral, não tenho certeza de qual valor há em ter uma imagem do docker que seja apenas a CLI. Eu posso ver o valor para algo que é difícil/complicado de instalar e fazer um mvp rodar, mas a CLI não é tão complicada assim: instalar python, instalar pip, instalar cli.

Eu não posso acreditar, este é um comentário do funcionário da AWS. É realmente triste.

Estou em um cenário semelhante em que quero executar um K8S Cronjob que executa backups para o S3, tendo uma imagem oficial awscli _com certeza seria útil agora_

Estamos usando o problema nº 3553 para rastrear a solicitação de recurso para essa solicitação.

Essas imagens vinculadas são de propriedade da equipe do CodeBuild para uso em seu serviço. Se você quiser que eles os publiquem no docker hub, recomendo entrar em contato com eles no fórum de serviço/via suporte.

Em geral, não tenho certeza de qual valor há em ter uma imagem do docker que seja apenas a CLI. Eu posso ver o valor para algo que é difícil/complicado de instalar e fazer um mvp rodar, mas a CLI não é tão complicada assim: instalar python, instalar pip, instalar cli. A maioria das distribuições ainda tem um pacote pré-construído (embora você corra o risco de ficar desatualizado).

Pessoalmente, conteinerizo o máximo que posso para ajudar a manter minha estação de trabalho livre de vários pacotes. Pacotes que um dia podem contradizer outros quando atualizados.

Olá pessoal do Github

É importante observar também que, quando você estiver usando qualquer sistema de CI/CD que esteja cobrando a duração da tarefa de implantação (por exemplo, US$ xx,xx por hora por mês, etc.), não poderá gastar tempo instalando repetidamente novamente as ferramentas que você precisa depois de puxar uma imagem que não tem tudo que você precisa.

No meu caso, estou vendo uma imagem python sendo puxada, depois o pacote zip sendo instalado e agora preciso do awscli instalado e esse demora um pouco para instalar. É simplesmente um tempo perdido que poderíamos prescindir.

Ter uma imagem docker com todas as ferramentas pré-instaladas não tem preço.

Agora existe uma imagem docker criada automaticamente em cada versão do awscli aqui

⚠️ Isenção de responsabilidade: eu sou o autor

Obrigado b4nst. Mas eu escolhi um que é construído e mantido pela Atlassian para o Bitbucket Pipeline. Está no DockerHub como atlassian/pipelines-awscli (https://hub.docker.com/r/atlassian/pipelines-awscli). E estou usando isso com o pipeline deles.

@b4nst , vincule o repositório do hub do docker ao seu github para que possamos ver o código-fonte

Já havia um link para a página do hub do docker . O código está hospedado aqui

O elefante na sala aqui é que quando as pessoas estão usando CI/CD e manipulando códigos sensíveis que fazem parte de um software corporativo, elas tendem a querer saber quem e o que está manipulando seu código. Portanto, mesmo com boas intenções, as pessoas tendem a ficar cautelosas quando se trata de algo que não é de uma grande empresa, a menos que vejam o código-fonte. Pessoalmente, acho que não há nada de errado com a imagem do docker do @b4nst . Verifiquei o código e está normal. Acontece que o da Atlassian tem mais algumas coisas que são necessárias durante nossos processos de implantação. Por exemplo, tem git, menos entre outras coisas. Dessa forma, a mesma imagem é capaz de nos permitir clonar coisas de qualquer repositório git.

Concordo totalmente com isso, a melhor solução é a AWS enviar sua própria imagem docker atualizada (se você confia neles para o cli, você confia neles para a imagem). Mas, enquanto isso, acho que o código aberto é o mal menor. Mesmo que seja apoiado por uma grande empresa, ele pode estar corrompido (eu não confiaria na Microsoft ou no Google para um awscli se não conseguir ler o código ...)

Eu fiz uma padaria de imagens com implantação contínua no Dockerhub abdennour/aws .

Uma das imagens é a imagem da AWS .

Se você deseja atualizar para as versões mais recentes, basta atualizar o .env e abrir o PR.

Mesmo as imagens da AWS para amazonlinux que afirmam na documentação que o amazonlinux tem o cli instalado por padrão... não.

A Amazon é um monopólio e eles sabem disso. Eles não precisam se importar?

+1

Acabei aqui enquanto procurava por um e encontrei uma imagem oficial depois, então vou colocá-la aqui para quem encontrar este tópico no futuro.

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

@Xaeonn Correto, essa é a nova imagem oficial do AWS CLI Docker. Um desenvolvedor da Amazon acabou de anunciar isso ontem à noite em #3553, onde esse problema está sendo rastreado, como comentei acima.

instale python, instale pip, instale cli.

Então corra aws e ganhe command not found . Muito simples.

:smile: :rindo: :rindo: clássico :100: , sempre faz meu dia

Esta página foi útil?
0 / 5 - 0 avaliações