Execute a AWS CLI partir das imagens oficiais do Amazon ECR Public ou Docker - AWS Command Line Interface

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Execute a AWS CLI partir das imagens oficiais do Amazon ECR Public ou Docker

Este tópico descreve como executar, controlar a versão e configurar a AWS CLI versão 2 no Docker usando a imagem oficial do Amazon Elastic Container Registry Public (Amazon ECR Public) ou do Docker Hub. Para obter mais informações sobre como usar o Docker, consulte a documentação do Docker.

As imagens oficiais fornecem isolamento, portabilidade e segurança que oferecem suporte e manutenção AWS diretos. Isso permite que você use a AWS CLI versão 2 em um ambiente baseado em contêiner sem precisar gerenciar a instalação sozinho.

Pré-requisitos

É necessário ter o Docker instalado. Para obter instruções de instalação, consulte o site do Docker.

Para verificar a instalação do Docker, execute o seguinte comando e confirme se há uma saída.

$ docker --version Docker version 19.03.1

Decidir entre o Amazon ECR Public e o Docker Hub

Recomendamos usar o Amazon ECR Public em vez do Docker Hub para AWS CLI imagens. O Docker Hub tem um limite de taxa mais rígido para consumidores públicos, o que pode causar problemas de controle de utilização. Além disso, o Amazon ECR Public replica imagens em mais de uma região para fornecer sólida disponibilidade e lidar com problemas de interrupção da região.

Para obter mais informações sobre os limites de taxa do Docker Hub, consulte Understanding Docker Hub Rate Limiting (Noções básicas sobre a limitação de taxa do Docker Hub) no site do Docker.

Execute as imagens oficiais da AWS CLI versão 2

Na primeira vez que você usar o comando docker run, a imagem mais recente será baixada no computador. Cada uso subsequente do comando docker run é executado de sua cópia local.

Para executar as imagens do Docker AWS CLI versão 2, use o docker run comando.

Amazon ECR Public

A imagem oficial da AWS CLI versão 2 do Amazon ECR Public está hospedada no Amazon ECR Public no aws-cli/aws-cli repositório.

$ docker run --rm -it public.ecr.aws/aws-cli/aws-cli command
Docker Hub

A imagem oficial AWS CLI do Docker da versão 2 está hospedada no Docker Hub no amazon/aws-cli repositório.

$ docker run --rm -it amazon/aws-cli command

É assim que o comando funciona:

  • docker run --rm -it repository/name: o equivalente ao executável aws. Sempre que você executar esse comando, o Docker ativará um contêiner da imagem baixada e executará o comando aws. Por padrão, a imagem usa a versão mais recente da AWS CLI versão 2.

    Por exemplo, para chamar o comando aws --version no Docker, execute o seguinte.

    Amazon ECR Public
    $ docker run --rm -it public.ecr.aws/aws-cli/aws-cli --version aws-cli/2.15.30 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10
    Docker Hub
    $ docker run --rm -it amazon/aws-cli --version aws-cli/2.15.30 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10
  • --rm: especifica a limpeza do contêiner após a saída do comando.

  • -it: especifica a abertura de um pseudo-TTY com stdin. Isso permite que você forneça entrada para a AWS CLI versão 2 enquanto ela está sendo executada em um contêiner, por exemplo, usando os aws help comandos aws configure e. Ao escolher se deseja omitir -it, considere o seguinte:

    • Se você estiver executando scripts, não será necessário usar -it.

    • Se você estiver enfrentando erros em seus scripts, omitir -it de sua chamada do Docker poderá resolver o problema.

    • Se você estiver tentando canalizar a saída, -it poderá causar erros e omitir -it de sua chamada do Docker poderá resolver esse problema. Se quiser manter o sinalizador -it, mas ainda desejar canalizar a saída, desabilitar a paginação do lado do cliente que a AWS CLI usa por padrão deve resolver o problema.

Para obter mais informações sobre o comando docker run, consulte o Docker reference guide.

Observações sobre interfaces e compatibilidade com versões anteriores das imagens oficiais

  • A única ferramenta compatível na imagem é a AWS CLI. Somente o executável aws deve ser executado diretamente. Por exemplo, embora less groff estejam explicitamente instalados na imagem, eles não devem ser executados diretamente fora de um AWS CLI comando.

  • O diretório de trabalho /aws é controlado pelo usuário. A imagem não será gravada nesse diretório, a menos que seja instruída pelo usuário na execução de um AWS CLI comando.

  • Não há garantias de compatibilidade com versões anteriores quando se utiliza a etiqueta mais recente. Para garantir a compatibilidade com versões anteriores, é necessário fixar uma tag <major.minor.patch> específica, pois essas tags são imutáveis. Elas só serão enviadas uma vez.

Usar versões e tags específicas

A imagem oficial da AWS CLI versão 2 tem várias versões que você pode usar, começando pela versão2.0.6. Para executar uma versão específica da AWS CLI versão 2, anexe a tag apropriada ao seu docker run comando. Na primeira vez que você usar o comando docker run com uma tag, a imagem mais recente com essa tag será baixada no computador. Cada uso subsequente do comando docker run com essa etiqueta é executado de sua cópia local.

É possível usar dois tipos de etiqueta:

  • latest— Define a versão mais recente da AWS CLI versão 2 para a imagem. Recomendamos usar a etiqueta latest quando quiser a versão mais recente da AWS CLI versão 2. No entanto, não há garantias de compatibilidade com versões anteriores ao depender dessa etiqueta. A etiqueta latest é usada por padrão no comando docker run. Para usar explicitamente a etiqueta latest, anexe a etiqueta ao nome da imagem do contêiner.

    Amazon ECR Public
    $ docker run --rm -it public.ecr.aws/aws-cli/aws-cli:latest command
    Docker Hub
    $ docker run --rm -it amazon/aws-cli:latest command
  • <major.minor.patch>— Define uma versão específica da AWS CLI versão 2 para a imagem. Se você planeja usar uma imagem oficial na produção, recomendamos usar uma versão específica da AWS CLI versão 2 para garantir a compatibilidade com versões anteriores. Por exemplo, para executar a versão 2.0.6, anexe a versão ao nome da imagem do contêiner.

    Amazon ECR Public
    $ docker run --rm -it public.ecr.aws/aws-cli/aws-cli:2.0.6 command
    Docker Hub
    $ docker run --rm -it amazon/aws-cli:2.0.6 command

Atualizar para a imagem oficial mais recente

Como a imagem mais recente é baixada no computador somente na primeira vez que você usa o comando docker run, é necessário extrair manualmente uma imagem atualizada. Para atualizar manualmente para a versão mais recente, recomendamos extrair a imagem marcada com a etiqueta latest. Ao extrair a imagem, você baixa a versão mais recente no computador.

Amazon ECR Public
$ docker pull public.ecr.aws/aws-cli/aws-cli:latest
Docker Hub
$ docker pull amazon/aws-cli:latest

Compartilhar arquivos de host, credenciais, variáveis de ambiente e configuração

Como a AWS CLI versão 2 é executada em um contêiner, por padrão, a CLI não pode acessar o sistema de arquivos do host, o que inclui configuração e credenciais. Para compartilhar o sistema de arquivos de host, as credenciais e a configuração com o contêiner, monte o diretório ~/.aws do sistema de host no contêiner em /root/.aws com o sinalizador -v para o comando docker run. Isso permite que a AWS CLI versão 2 em execução no contêiner localize as informações do arquivo host.

Amazon ECR Public

Linux e macOS

$ docker run --rm -it -v ~/.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli command

Prompt de comando do Windows

$ docker run --rm -it -v %userprofile%\.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli command

Windows PowerShell

C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli command
Docker Hub

Linux e macOS

$ docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli command

Prompt de comando do Windows

$ docker run --rm -it -v %userprofile%\.aws:/root/.aws amazon/aws-cli command

Windows PowerShell

C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws amazon/aws-cli command

Para obter mais informações sobre o sinalizador -v e a montagem, consulte o Docker reference guide.

nota

Para obter mais informações sobre os arquivos config e credentials, consulte Configurações do arquivo de configuração e credenciais.

Exemplo 1: Fornecer credenciais e configuração

Neste exemplo, estamos fornecendo a configuração e as credenciais de host ao executar o comando s3 ls para listar os buckets no Amazon Simple Storage Service (Amazon S3). Os exemplos abaixo usam o local padrão para AWS CLI credenciais e arquivos de configuração. Para usar um local diferente, altere o caminho do arquivo.

Amazon ECR Public

Linux e macOS

$ docker run --rm -it -v ~/.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli s3 ls 2020-03-25 00:30:48 aws-cli-docker-demo

Prompt de comando do Windows

$ docker run --rm -it -v %userprofile%\.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli s3 ls 2020-03-25 00:30:48 aws-cli-docker-demo

Windows PowerShell

C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli s3 ls
Docker Hub

Linux e macOS

$ docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli s3 ls 2020-03-25 00:30:48 aws-cli-docker-demo

Prompt de comando do Windows

$ docker run --rm -it -v %userprofile%\.aws:/root/.aws amazon/aws-cli s3 ls 2020-03-25 00:30:48 aws-cli-docker-demo

Windows PowerShell

C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws amazon/aws-cli s3 ls

Você pode chamar variáveis de ambiente do sistema específicas usando o sinalizador -e. Para usar uma variável de ambiente, chame-a pelo nome.

Amazon ECR Public

Linux e macOS

$ docker run --rm -it -v ~/.aws:/root/.aws -e ENVVAR_NAME public.ecr.aws/aws-cli/aws-cli s3 ls 2020-03-25 00:30:48 aws-cli-docker-demo

Prompt de comando do Windows

$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -e ENVVAR_NAME public.ecr.aws/aws-cli/aws-cli s3 ls 2020-03-25 00:30:48 aws-cli-docker-demo

Windows PowerShell

C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e ENVVAR_NAME public.ecr.aws/aws-cli/aws-cli s3 ls
Docker Hub

Linux e macOS

$ docker run --rm -it -v ~/.aws:/root/.aws -e ENVVAR_NAME amazon/aws-cli s3 ls 2020-03-25 00:30:48 aws-cli-docker-demo

Prompt de comando do Windows

$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -e ENVVAR_NAME amazon/aws-cli s3 ls 2020-03-25 00:30:48 aws-cli-docker-demo

Windows PowerShell

C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e ENVVAR_NAME amazon/aws-cli s3 ls

Exemplo 2: Baixar um arquivo do Amazon S3 no sistema de host

Para alguns comandos da AWS CLI versão 2, você pode ler arquivos do sistema host no contêiner ou gravar arquivos do contêiner no sistema host.

Neste exemplo, baixamos o objeto do S3 s3://aws-cli-docker-demo/hello no sistema de arquivos local, montando o diretório de trabalho atual no diretório /aws do contêiner. Ao baixar o objeto hello no diretório /aws do contêiner, o arquivo também é salvo no diretório de trabalho atual do sistema de host.

Amazon ECR Public

Linux e macOS

$ docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws public.ecr.aws/aws-cli/aws-cli s3 cp s3://aws-cli-docker-demo/hello . download: s3://aws-cli-docker-demo/hello to ./hello

Prompt de comando do Windows

$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws public.ecr.aws/aws-cli/aws-cli s3 cp s3://aws-cli-docker-demo/hello . download: s3://aws-cli-docker-demo/hello to ./hello

Windows PowerShell

C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws public.ecr.aws/aws-cli/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
Docker Hub

Linux e macOS

$ docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello . download: s3://aws-cli-docker-demo/hello to ./hello

Prompt de comando do Windows

$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello . download: s3://aws-cli-docker-demo/hello to ./hello

Windows PowerShell

C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello .

Para confirmar que o arquivo baixado existe no sistema de arquivos local, execute o seguinte.

Linux e macOS

$ cat hello Hello from Docker!

Windows PowerShell

$ type hello Hello from Docker!

Exemplo 3: Usar sua variável de ambiente AWS_PROFILE

Você pode chamar variáveis de ambiente do sistema específicas usando o sinalizador -e. Chame cada variável de ambiente que gostaria de usar. Neste exemplo, estamos fornecendo credenciais de host, a configuração e a variável de ambiente AWS_PROFILE ao executar o comando s3 ls para listar os buckets no Amazon Simple Storage Service (Amazon S3).

Amazon ECR Public

Linux e macOS

$ docker run --rm -it -v ~/.aws:/root/.aws -e AWS_PROFILE public.ecr.aws/aws-cli/aws-cli s3 ls 2020-03-25 00:30:48 aws-cli-docker-demo

Prompt de comando do Windows

$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -e AWS_PROFILE public.ecr.aws/aws-cli/aws-cli s3 ls 2020-03-25 00:30:48 aws-cli-docker-demo

Windows PowerShell

C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e AWS_PROFILE public.ecr.aws/aws-cli/aws-cli s3 ls
Docker Hub

Linux e macOS

$ docker run --rm -it -v ~/.aws:/root/.aws -e AWS_PROFILE amazon/aws-cli s3 ls 2020-03-25 00:30:48 aws-cli-docker-demo

Prompt de comando do Windows

$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -e AWS_PROFILE amazon/aws-cli s3 ls 2020-03-25 00:30:48 aws-cli-docker-demo

Windows PowerShell

C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e AWS_PROFILE amazon/aws-cli s3 ls

Reduzir o comando de execução do Docker

Para reduzir o comando docker run, sugerimos usar a capacidade do sistema operacional para criar um symbolic link (symlink) ou alias no Linux e no macOS ou doskey no Windows. Para definir o alias aws, é possível executar um dos comandos a seguir.

  • Para obter acesso básico a comandos aws, execute o seguinte.

    Amazon ECR Public

    Linux e macOS

    $ alias aws='docker run --rm -it public.ecr.aws/aws-cli/aws-cli'

    Prompt de comando do Windows

    C:\> doskey aws=docker run --rm -it public.ecr.aws/aws-cli/aws-cli $*

    Windows PowerShell

    C:\> Function AWSCLI {docker run --rm -it public.ecr.aws/aws-cli/aws-cli $args} Set-Alias -Name aws -Value AWSCLI
    Docker Hub

    Linux e macOS

    $ alias aws='docker run --rm -it amazon/aws-cli'

    Prompt de comando do Windows

    C:\> doskey aws=docker run --rm -it amazon/aws-cli $*

    Windows PowerShell

    C:\> Function AWSCLI {docker run --rm -it amazon/aws-cli $args} Set-Alias -Name aws -Value AWSCLI
  • Para obter acesso ao sistema de arquivos de host e às definições de configuração ao usar comandos aws, execute o indicado a seguir.

    Amazon ECR Public

    Linux e macOS

    $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws public.ecr.aws/aws-cli/aws-cli'

    Prompt de comando do Windows

    C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws public.ecr.aws/aws-cli/aws-cli $*

    Windows PowerShell

    C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws public.ecr.aws/aws-cli/aws-cli $args} Set-Alias -Name aws -Value AWSCLI
    Docker Hub

    Linux e macOS

    $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli'

    Prompt de comando do Windows

    C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws amazon/aws-cli $*

    Windows PowerShell

    C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws amazon/aws-cli $args} Set-Alias -Name aws -Value AWSCLI
  • Para atribuir uma versão específica para usar no alias aws, anexe a etiqueta de versão.

    Amazon ECR Public

    Linux e macOS

    $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws public.ecr.aws/aws-cli/aws-cli:2.0.6'

    Prompt de comando do Windows

    C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws public.ecr.aws/aws-cli/aws-cli:2.0.6 $*

    Windows PowerShell

    C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws public.ecr.aws/aws-cli/aws-cli:2.0.6 $args} Set-Alias -Name aws -Value AWSCLI
    Docker Hub

    Linux e macOS

    $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli:2.0.6'

    Prompt de comando do Windows

    C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws amazon/aws-cli:2.0.6 $*

    Windows PowerShell

    C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws amazon/aws-cli:2.0.6 $args} Set-Alias -Name aws -Value AWSCLI

Depois de definir seu alias, você pode executar a AWS CLI versão 2 de dentro de um contêiner como se estivesse instalado em seu sistema host.

$ aws --version aws-cli/2.15.30 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10