Uso de la imagen de Docker oficial de la versión 2 de la AWS CLI - AWS Command Line Interface

Python 2.7, 3.4 y 3.5 están obsoletas para la versión 1 de AWS CLI. Para obtener más información, consulte la sección de la versión 1 de AWS CLI de Acerca de las versiones de AWS CLI.

Uso de la imagen de Docker oficial de la versión 2 de la AWS CLI

En este tema se describe cómo ejecutar, controlar versiones y configurar la versión 2 de la AWS CLI en Docker. Para obtener más información sobre cómo usar Docker, consulte la documentación de Docker.

Las imágenes oficiales de Docker proporcionan aislamiento, portabilidad y seguridad que AWS apoya y mantiene directamente. Esto le permite utilizar la versión 2 de la AWS CLI en un entorno basado en contenedores sin tener que administrar la instalación usted mismo.

nota

La versión 2 de la AWS CLI es la única herramienta que se admite en la imagen oficial de Docker de AWS.

Prerequisites

Debe tener instalado Docker. Para obtener instrucciones de instalación, consulte el sitio web de Docker.

Para verificar la instalación de Docker, ejecute el siguiente comando y confirme que hay un resultado.

$ docker --version Docker version 19.03.1

Ejecución de la imagen de Docker oficial de la versión 2 de la AWS CLI

La imagen oficial de Docker de la versión 2 de la AWS CLI está alojada en DockerHub en el repositorio amazon/aws-cli. La primera vez que utilice el comando docker run, la imagen más reciente de Docker se descarga en su equipo. Cada uso posterior del comando docker run se ejecuta desde la copia local.

Para ejecutar la imagen de Docker de la versión 2 de la AWS CLI, utilice el comando docker run.

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

El comando funciona de la siguiente manera:

  • docker run --rm -it amazon/aws-cli: el equivalente de la aws ejecutable. Cada vez que ejecuta este comando, Docker hace girar un contenedor de la imagen amazon/aws-cli descargada y ejecuta el comando aws. De forma predeterminada, la imagen Docker utiliza la versión más reciente de la versión 2 de la AWS CLI.

    Por ejemplo, para llamar al comando aws --version en Docker, ejecute lo siguiente.

    $ docker run --rm -it amazon/aws-cli --version aws-cli/2.1.29 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.0.0dev10
  • --rm: especifica que se limpie el contenedor después de que el comando salga.

  • -it: especifica que se abra un pseudoTTY con stdin. Esto le permite proporcionar datos a la versión 2 de la AWS CLI mientras se está ejecutando en un contenedor, por ejemplo, mediante el uso de los comandos aws configure y aws help. Si está ejecutando scripts, -it no es necesario. Si experimenta errores con los scripts, omita -it de su llamada Docker.

Para obtener más información sobre el comando docker run, consulte la guía de referencia de Docker.

Uso de versiones y etiquetas específicas

La imagen oficial de Docker de la versión 2 de la AWS CLI tiene varias versiones que puede usar, comenzando con la versión 2.0.6. Para ejecutar una versión específica de la versión 2 de la AWS CLI, agregue la etiqueta adecuada al comando docker run. La primera vez que utiliza el comando docker run con una etiqueta, la imagen más reciente de Docker para esa etiqueta se descarga en el equipo. Cada uso posterior del comando docker run con esa etiqueta se ejecuta desde la copia local.

Puede utilizar dos tipos de etiquetas:

  • latest: define la última versión de la versión 2 de la AWS CLI para la imagen de Docker. Le recomendamos que utilice la etiqueta latest cuando desee la versión más reciente de la versión 2 de la AWS CLI. Sin embargo, no hay garantías de compatibilidad con versiones anteriores al usar esta etiqueta. La etiqueta latest se utiliza de forma predeterminada en el comando docker run. Para utilizar explícitamente la etiqueta latest, agregue la etiqueta al nombre de la imagen del contenedor.

    $ docker run --rm -it amazon/aws-cli:latest command
  • <major.minor.patch>: define una versión específica de la versión 2 de la AWS CLI para la imagen de Docker. Si planea utilizar la imagen Docker en producción, le recomendamos que use una versión específica de la versión 2 de la AWS CLI para garantizar la compatibilidad con versiones anteriores. Por ejemplo, para ejecutar la versión 2.0.6, agregue la versión al nombre de la imagen del contenedor.

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

Actualización a la imagen de Docker más reciente

Dado que la imagen más reciente de Docker se descarga en el equipo solo la primera vez que utiliza el docker run comando, debe extraer manualmente una imagen actualizada. Para actualizar manualmente a la versión más reciente, le recomendamos que extraiga la imagen etiquetada latest. Al extraer la imagen de Docker se descarga la versión más reciente en el equipo.

$ docker pull amazon/aws-cli:latest

Comparta llos archivos anfitrión, credenciales, variables del entorno y configuración

Dado que la versión 2 de la AWS CLI se ejecuta en un contenedor, la CLI no puede acceder de forma predeterminada al sistema de archivos anfitrión, que incluye la configuración y las credenciales. Para compartir el sistema de archivos anfitrión, las credenciales y la configuración en el contenedor, monte el directorio ~/.aws del sistema host en el contenedor en /root/.aws con la etiqueta -v del comando docker run. Esto permite que la versión 2 de la AWS CLI, que se está ejecutando en el contenedor, localice la información del archivo anfitrión.

Linux and macOS
$ docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli command
Windows Command Prompt
$ 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 obtener más información acerca la etiqueta -v y el montaje, consulte la guía de referencia de Docker.

Ejemplo 1: proporcionar credenciales y configuración

En este ejemplo, proporcionamos las credenciales de anfitrión y la configuración al ejecutar el comando s3 ls para mostrar los buckets en Amazon Simple Storage Service (Amazon S3). Los siguientes ejemplos utilizan la ubicación predeterminada para los archivos de credenciales y de configuración de la AWS CLI, para utilizar una ubicación diferente, cambie la ruta del archivo.

Linux and macOS
$ docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli s3 ls 2020-03-25 00:30:48 aws-cli-docker-demo
Windows Command Prompt
$ 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

Puede llamar a variables de entorno específicas del sistema utilizando el marcador -e. Para utilizar una variable de entorno, llámelo por su nombre.

Linux and 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
Windows Command Prompt
$ 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

Ejemplo 2: Descarga de un archivo Amazon S3 en el sistema de anfitrión

Para algunos comandos de la AWS CLI versión 2, puede leer archivos del sistema de host en el contenedor o escribir archivos desde el contenedor en el sistema de host.

En este ejemplo, descargamos el objeto S3 s3://aws-cli-docker-demo/hello a su sistema de archivos local montando el directorio de trabajo actual en el directorio /aws del contenedor. Al descargar el objeto hello en el directorio /aws del contenedor, el archivo también se guarda en el directorio de trabajo actual del sistema de host.

Linux and 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
Windows Command Prompt
$ 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 /aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello .

Para confirmar que el archivo descargado existe en el sistema de archivos local, ejecute lo siguiente.

Linux and macOS
$ cat hello Hello from Docker!
Windows
$ type hello Hello from Docker!

Ejemplo 3: Uso de la variable de entorno AWS_PROFILE

Puede llamar a variables de entorno específicas del sistema utilizando el marcador -e. Llame a cada variable de entorno que desee utilizar. En este ejemplo, proporcionamos las credenciales de anfitrión, la configuración y la variable de entorno AWS_PROFILE cuando se ejecuta el comando s3 ls para mostrar los buckets en Amazon Simple Storage Service (Amazon S3).

Linux and 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
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

Acortamiento del comando Docker

Para acortar el comando aws de Docker, le sugerimos que utilice la capacidad de su sistema operativo para crear un symbolic link (enlace simbólico) o alias en Linux y macOS, o doskey en Windows. Para establecer el alias de aws, puede ejecutar uno de los siguientes comandos:

  • Para obtener acceso básico a los comandos de aws, ejecute lo siguiente.

    Linux and macOS
    $ alias aws='docker run --rm -it amazon/aws-cli'
    Windows Command Prompt
    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 acceder al sistema de archivos anfitrión y a las opciones de configuración cuando se utilizan comandos de aws, ejecute lo siguiente.

    Linux and macOS
    $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli'
    Windows Command Prompt
    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 /aws amazon/aws-cli $args} Set-Alias -Name aws -Value AWSCLI
  • Para asignar una versión específica para usarla en su alias de aws, agregue la etiqueta de versión.

    Linux and macOS
    $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli:2.0.6'
    Windows Command Prompt
    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 /aws amazon/aws-cli:2.0.6 $args} Set-Alias -Name aws -Value AWSCLI

Después de configurar el alias, puede ejecutar la versión 2 de la AWS CLI desde un contenedor Docker como si estuviera instalado en su sistema host.

$ aws --version aws-cli/2.1.29 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.0.0dev10