

# Compilación e instalación de la AWS CLI desde el origen
<a name="getting-started-source-install"></a>

En este tema, se describe cómo instalar o actualizar desde el origen la última versión de la AWS Command Line Interface (AWS CLI) en sistemas operativos compatibles. 

Para obtener información sobre los lanzamientos más recientes de AWS CLI, consulte el [registro de cambios de la versión 2 de la AWS CLI](https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst) en GitHub.

**importante**  
Las versiones 1 y 2 de la AWS CLI utilizan el mismo nombre de comando de `aws`. Si ha instalado previamente la AWS CLI versión 1, consulte [Guía de migración para la versión 2 de la AWS CLI](cliv2-migration.md).

**Topics**
+ [¿Por qué compilar desde el origen?](#source-getting-started-install-why)
+ [Pasos rápidos](#source-getting-started-install-quicksteps)
+ [Paso 1: configurar todos los requisitos](#source-getting-started-install-reqs)
+ [Paso 2: configurar la instalación de origen de la AWS CLI](#source-getting-started-install-config)
+ [Paso 3: compilar la AWS CLI](#source-getting-started-install-build)
+ [Paso 4: instalar la AWS CLI](#source-getting-started-install-instructions)
+ [Paso 5: verificar la instalación de AWS CLI](#source-getting-started-install-verify)
+ [Ejemplos de flujo de trabajo](#source-getting-started-install-workflows)
+ [Solución de errores de instalación y desinstalación de AWS CLI](#source-install-tshoot)
+ [Siguientes pasos](#source-install-next-steps)

## ¿Por qué compilar desde el origen?
<a name="source-getting-started-install-why"></a>

La AWS CLI está [disponible como instaladores prediseñados](getting-started-install.md) para la mayoría de las plataformas y entornos, además de como una imagen de Docker. 

Por lo general, estos instaladores ofrecen cobertura de la mayoría de los casos de uso. Las instrucciones de instalación desde el origen sirven para ayudar en los casos de uso que nuestros instaladores no cubren. A continuación, se indican algunos casos de uso:
+ Los instaladores prediseñados no son compatibles con su entorno. Por ejemplo, los instaladores prediseñados no son compatibles con ARM de 32 bits.
+ Los instaladores prediseñados tienen dependencias de las que carece su entorno. Por ejemplo, Alpine Linux usa [https://musl.libc.org/](https://musl.libc.org/), pero los instaladores actuales requieren `glibc`, por lo que los instaladores prediseñados no funcionan inmediatamente. 
+ Los instaladores prediseñados requieren recursos a los que su entorno restringe el acceso. Por ejemplo, es posible que los sistemas con seguridad reforzada no concedan permisos a la memoria compartida. Esto es necesario para el instalador de `aws` congelado. 
+ Los instaladores prediseñados suelen ser un obstáculo para los mantenedores en los administradores de paquetes, ya que es preferible tener un control total del proceso de compilación del código y los paquetes. Compilar desde el origen permite a los mantenedores de la distribución disponer de un proceso más ágil para mantener la AWS CLI actualizada. Capacitar a los mantenedores permite que los clientes tengan versiones más actualizadas de la AWS CLI cuando la instalan desde un administrador de paquetes de terceros como `brew`, `yum` y `apt`.
+ Los clientes que aplican parches a la funcionalidad de la AWS CLI necesitan compilar e instalar la AWS CLI desde el origen. Esto es especialmente importante para los miembros de la comunidad que desean probar los cambios que han realizado en el origen antes de enviarlos al repositorio de GitHub de la AWS CLI.

## Pasos rápidos
<a name="source-getting-started-install-quicksteps"></a>

**nota**  
Se asume que todo el código de ejemplo se ejecuta desde la raíz del directorio de origen.

Para compilar e instalar la AWS CLI desde el origen, siga los pasos de esta sección. La AWS CLI utiliza [GNU Autotools](https://www.gnu.org/software/automake/faq/autotools-faq.html) para realizar la instalación desde el origen. En el caso más simple, la AWS CLI se puede instalar desde el origen ejecutando los comandos de ejemplo predeterminados desde la raíz del repositorio de GitHub de la AWS CLI.



1. [Configure todos los requisitos de su entorno.](#source-getting-started-install-reqs) Esto incluye la posibilidad de ejecutar archivos generados por [GNU Autotools](https://www.gnu.org/software/automake/faq/autotools-faq.html) y Python 3.8 o versiones posteriores si está instalado.

1. En su terminal, vaya al nivel superior de la carpeta de origen de la AWS CLI y ejecute el comando `./configure`. Este comando comprueba el sistema en busca de todas las dependencias necesarias y genera un`Makefile` para compilar e instalar la AWS CLI en función de las configuraciones detectadas y especificadas. 

------
#### [ Linux and macOS ]

   El siguiente comando `./configure` de ejemplo establece la configuración de compilación de la AWS CLI utilizando la configuración predeterminada.

   ```
   $ ./configure
   ```

------
#### [ Windows PowerShell ]

   Antes de ejecutar cualquier comando que llame a MSYS2, debe conservar su directorio de trabajo actual:

   ```
   PS C:\> $env:CHERE_INVOKING = 'yes'
   ```

   A continuación, utilice el siguiente comando `./configure` de ejemplo para establecer la configuración de compilación de la AWS CLI. Para ello, se utiliza la ruta local al ejecutable de Python, se instala en C:\$1Program Files\$1AWSCLI y se descargan todas las dependencias.

   ```
   PS C:\> C:\msys64\usr\bin\bash  -lc " PYTHON='C:\path\to\python.exe' ./configure --prefix='C:\Program Files\AWSCLI' --with-download-deps "
   ```

------

   Para obtener más información, las opciones de configuración disponibles y la información de configuración predeterminada, consulte la sección [Paso 2: configurar la instalación de origen de la AWS CLI](#source-getting-started-install-config).

1. Ejecute el comando `make`. Este comando compila la AWS CLI acuerdo con los ajustes de configuración. 

   El siguiente comando `make` de ejemplo se compila con las opciones predeterminadas utilizando la configuración existente de `./configure`.

------
#### [ Linux and macOS ]

   ```
   $ make
   ```

------
#### [ Windows PowerShell ]

   ```
   PS C:\> C:\msys64\usr\bin\bash -lc "make" 
   ```

------

   Para obtener más información y las opciones de compilación disponibles, consulte la sección [Paso 3: compilar la AWS CLI](#source-getting-started-install-build).

1. Ejecute el comando `make install`. Este comando instala la AWS CLI compilada en la ubicación configurada del sistema. 

   El siguiente comando `make install` de ejemplo instala la AWS CLI compilada y se crean los symlinks en las ubicaciones configuradas utilizando la configuración predeterminada del comando.

------
#### [ Linux and macOS ]

   ```
   $ make install
   ```

------
#### [ Windows PowerShell ]

   ```
   PS C:\> C:\msys64\usr\bin\bash -lc "make install" 
   ```

   Tras la instalación, añada la ruta a la AWS CLI de la siguiente manera:

   ```
   PS C:\> $Env:PATH +=";C:\Program Files\AWSCLI\bin\"
   ```

------

   Para obtener más información y conocer las opciones de instalación disponibles, consulte la sección [Paso 4: instalar la AWS CLI](#source-getting-started-install-instructions).

1. Confirme que la AWS CLI se ha instalado correctamente utilizando el siguiente comando:

   ```
   $ aws --version
   aws-cli/2.27.41 Python/3.11.6 Windows/10 exe/AMD64 prompt/off
   ```

   Para conocer los pasos de solución de problemas de los errores de instalación, consulte la sección [Solución de errores de instalación y desinstalación de AWS CLI](#source-install-tshoot).

## Paso 1: configurar todos los requisitos
<a name="source-getting-started-install-reqs"></a>

Para compilar la AWS CLI desde el origen, debe hacer lo siguiente de antemano:

**nota**  
Se asume que todo el código de ejemplo se ejecuta desde la raíz del directorio de origen.

1. Descargue el origen de la AWS CLI bifurcando el repositorio de GitHub de la AWS CLI o descargando el archivo tar de origen. Las instrucciones son una de las siguientes:
   + Bifurque y clone el [repositorio de la AWS CLI](https://github.com/aws/aws-cli) desde *GitHub*. Para obtener más información, consulte [Fork a repo](https://docs.github.com/en/get-started/quickstart/fork-a-repo) (Bifurcar un repositorio) en *GitHub Docs* (Documentación de GitHub).
   + Descargue el último tarball de origen en [https://awscli.amazonaws.com/awscli.tar.gz](https://awscli.amazonaws.com/awscli.tar.gz) y extraiga el contenido con los siguientes comandos:

     ```
     $ curl "https://awscli.amazonaws.com/awscli.tar.gz" -o "awscli.tar.gz"
     $ tar -xzf awscli.tar.gz
     ```
**nota**  
Para descargar una versión específica, utilice el siguiente formato de enlace: [https://awscli.amazonaws.com/awscli-*versionnumber*.tar.gz](https://awscli.amazonaws.com/awscli.tar.gz)   
Por ejemplo, para la versión 2.10.0, el enlace es el siguiente: [https://awscli.amazonaws.com/awscli-*2.10.0*.tar.gz](https://awscli.amazonaws.com/awscli.tar.gz)  
Las versiones de origen están disponibles a partir de la versión **2.10.0** de la AWS CLI.

     **(Opcional) Verificación de la integridad del archivo zip descargado mediante los siguientes pasos:**

     1. Puede seguir los pasos indicados a continuación para verificar las firmas con la herramienta `GnuPG`.

        Los archivos AWS CLI del paquete del instalador de la `.zip` están firmados criptográficamente mediante firmas PGP. Si hay algún tipo de daño o alteración en los archivos, esta verificación produce un error, por lo que no debería continuar con la instalación.

     1. Descargue e instale el comando `gpg` usando su administrador de paquetes. Para obtener más información acerca de `GnuPG`, consulte el [sitio web de GnuPG](https://www.gnupg.org/). 

     1. Para crear el archivo de clave pública, cree un archivo de texto y pegue el siguiente texto en él:

        ```
        -----BEGIN PGP PUBLIC KEY BLOCK-----
        
        mQINBF2Cr7UBEADJZHcgusOJl7ENSyumXh85z0TRV0xJorM2B/JL0kHOyigQluUG
        ZMLhENaG0bYatdrKP+3H91lvK050pXwnO/R7fB/FSTouki4ciIx5OuLlnJZIxSzx
        PqGl0mkxImLNbGWoi6Lto0LYxqHN2iQtzlwTVmq9733zd3XfcXrZ3+LblHAgEt5G
        TfNxEKJ8soPLyWmwDH6HWCnjZ/aIQRBTIQ05uVeEoYxSh6wOai7ss/KveoSNBbYz
        gbdzoqI2Y8cgH2nbfgp3DSasaLZEdCSsIsK1u05CinE7k2qZ7KgKAUIcT/cR/grk
        C6VwsnDU0OUCideXcQ8WeHutqvgZH1JgKDbznoIzeQHJD238GEu+eKhRHcz8/jeG
        94zkcgJOz3KbZGYMiTh277Fvj9zzvZsbMBCedV1BTg3TqgvdX4bdkhf5cH+7NtWO
        lrFj6UwAsGukBTAOxC0l/dnSmZhJ7Z1KmEWilro/gOrjtOxqRQutlIqG22TaqoPG
        fYVN+en3Zwbt97kcgZDwqbuykNt64oZWc4XKCa3mprEGC3IbJTBFqglXmZ7l9ywG
        EEUJYOlb2XrSuPWml39beWdKM8kzr1OjnlOm6+lpTRCBfo0wa9F8YZRhHPAkwKkX
        XDeOGpWRj4ohOx0d2GWkyV5xyN14p2tQOCdOODmz80yUTgRpPVQUtOEhXQARAQAB
        tCFBV1MgQ0xJIFRlYW0gPGF3cy1jbGlAYW1hem9uLmNvbT6JAlQEEwEIAD4CGwMF
        CwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQT7Xbd/1cEYuAURraimMQrMRnJHXAUC
        aGveYQUJDMpiLAAKCRCmMQrMRnJHXKBYD/9Ab0qQdGiO5hObchG8xh8Rpb4Mjyf6
        0JrVo6m8GNjNj6BHkSc8fuTQJ/FaEhaQxj3pjZ3GXPrXjIIVChmICLlFuRXYzrXc
        Pw0lniybypsZEVai5kO0tCNBCCFuMN9RsmmRG8mf7lC4FSTbUDmxG/QlYK+0IV/l
        uJkzxWa+rySkdpm0JdqumjegNRgObdXHAQDWlubWQHWyZyIQ2B4U7AxqSpcdJp6I
        S4Zds4wVLd1WE5pquYQ8vS2cNlDm4QNg8wTj58e3lKN47hXHMIb6CHxRnb947oJa
        pg189LLPR5koh+EorNkA1wu5mAJtJvy5YMsppy2y/kIjp3lyY6AmPT1posgGk70Z
        CmToEZ5rbd7ARExtlh76A0cabMDFlEHDIK8RNUOSRr7L64+KxOUegKBfQHb9dADY
        qqiKqpCbKgvtWlds909Ms74JBgr2KwZCSY1HaOxnIr4CY43QRqAq5YHOay/mU+6w
        hhmdF18vpyK0vfkvvGresWtSXbag7Hkt3XjaEw76BzxQH21EBDqU8WJVjHgU6ru+
        DJTs+SxgJbaT3hb/vyjlw0lK+hFfhWKRwgOXH8vqducF95NRSUxtS4fpqxWVaw3Q
        V2OWSjbne99A5EPEySzryFTKbMGwaTlAwMCwYevt4YT6eb7NmFhTx0Fis4TalUs+
        j+c7Kg92pDx2uQ==
        =OBAt
        -----END PGP PUBLIC KEY BLOCK-----
        ```

        Como referencia, a continuación se indican los detalles de la clave pública.

        ```
        Key ID:           A6310ACC4672
        Type:             RSA
        Size:             4096/4096
        Created:          2019-09-18
        Expires:          2026-07-07
        User ID:          AWS CLI Team <aws-cli@amazon.com>
        Key fingerprint:  FB5D B77F D5C1 18B8 0511  ADA8 A631 0ACC 4672 475C
        ```

     1. Importe la clave pública de la AWS CLI con el siguiente comando, sustituyendo *public-key-file-name* por el nombre del archivo de la clave pública que ha creado.

        ```
        $ gpg --import public-key-file-name
        gpg: /home/username/.gnupg/trustdb.gpg: trustdb created
        gpg: key A6310ACC4672475C: public key "AWS CLI Team <aws-cli@amazon.com>" imported
        gpg: Total number processed: 1
        gpg:               imported: 1
        ```

     1. Descargue el archivo de firma de la AWS CLI para el paquete que ha descargado en [https://awscli.amazonaws.com/awscli.tar.gz.sig](https://awscli.amazonaws.com/awscli.tar.gz.sig). Tiene la misma ruta y el mismo nombre que el archivo tarball al que corresponde, pero con la extensión `.sig`. Guárdelo en la misma ruta que el archivo tarball. O utilice el siguiente bloque de comandos:

        ```
        $ curl awscliv2.sig https://awscli.amazonaws.com/ -o awscli.tar.gz.sig
        ```

     1. Verifique la firma pasando los nombres de archivo `.sig` y `.zip` como parámetros al comando `gpg`.

        ```
        $ gpg --verify awscliv2.sig awscli.tar.gz
        ```

        El resultado debería parecerse al siguiente:

        ```
        gpg: Signature made Mon Nov  4 19:00:01 2019 PST
        gpg:                using RSA key FB5D B77F D5C1 18B8 0511 ADA8 A631 0ACC 4672 475C
        gpg: Good signature from "AWS CLI Team <aws-cli@amazon.com>" [unknown]
        gpg: WARNING: This key is not certified with a trusted signature!
        gpg:          There is no indication that the signature belongs to the owner.
        Primary key fingerprint: FB5D B77F D5C1 18B8 0511  ADA8 A631 0ACC 4672 475C
        ```
**importante**  
Se espera la advertencia en la salida y ello no indica un problema. Esto se produce porque no existe una cadena de confianza entre su clave PGP personal (si es su caso) y la clave PGP de la AWS CLI. Para obtener más información, consulta [ Red de confianza](https://wikipedia.org/wiki/Web_of_trust).

1. Dispone de un entorno que puede ejecutar archivos generados por [GNU Autotools](https://www.gnu.org/software/automake/faq/autotools-faq.html), como`configure` y `Makefile`. Estos archivos suelen ser portables en las plataformas POSIX.

------
#### [ Linux and macOS ]

   Si Autotools aún no está instalado en su entorno o necesita actualizarlo, siga las instrucciones de instalación que se encuentran en [How do I install the Autotools (as user)?](https://www.gnu.org/software/automake/faq/autotools-faq.html#How-do-I-install-the-Autotools-_0028as-user_0029_003f) (¿Cómo instalo Autotools [como usuario]?) o [Basic Installation](https://www.gnu.org/savannah-checkouts/gnu/automake/manual/automake.html#Basic-Installation) (Instalación básica) en *GNU Documentation* (Documentación de GNU).

------
#### [ Windows PowerShell ]

**aviso**  
Le sugerimos que si se encuentra en un entorno Windows, utilice los instaladores prediseñados. Para obtener las instrucciones de instalación de los instaladores prediseñados, consulte [Instalación o actualización de la versión más reciente de AWS CLI](getting-started-install.md)

   Dado que Windows no incluye un intérprete de comandos compatible con POSIX, debe instalar software adicional para instalar la AWS CLI desde el origen. [MSYS2](https://www.msys2.org/) incluye una colección de herramientas y bibliotecas para ayudar a compilar e instalar software de Windows, especialmente para los scripts basados en POSIX que utiliza Autotools.

   1. Instale MSYS2. Para obtener información acerca de la instalación y el uso de MSYS2, consulte las [instrucciones de instalación y uso](https://www.msys2.org/) en *MSYS2 Documentation* (Documentación de MSYS2). 

   1. Abra el terminal de MSYS2 e instale Autotools mediante el siguiente comando.

      ```
      $ pacman -S autotools
      ```

**nota**  
En los ejemplos de código de configuración, compilación e instalación de esta guía para Windows, se asume que se utiliza la ruta de instalación predeterminada de MSYS2 `C:\msys64\usr\bin\bash`. Al llamar a MSYS2 desde PowerShell, utilizará el siguiente formato, con el comando bash entre comillas:  

   ```
   PS C:\> C:\msys64\usr\bin\bash  -lc "command example" 
   ```
El siguiente comando de ejemplo llama al comando `./configure`.  

   ```
   PS C:\> C:\msys64\usr\bin\bash  -lc "./configure" 
   ```

------

1. Se ha instalado un intérprete de Python 3.8 o una versión posterior. La versión mínima requerida de Python tiene los mismos plazos que se indican en la [política de soporte oficial de Python para los SDK y las herramientas de AWS](https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/). Los intérpretes solo se admiten 6 meses después de la fecha de fin de soporte.

1. **(Opcional)** Instale todas las dependencias de compilación y ejecución de la biblioteca de Python de la AWS CLI. El comando `./configure` le informa si le falta alguna dependencia y cómo instalarla.

   Puede instalar y utilizar estas dependencias automáticamente mediante la configuración; consulte [Descarga de dependencias](#source-getting-started-install-config-dependencies) para obtener más información.

## Paso 2: configurar la instalación de origen de la AWS CLI
<a name="source-getting-started-install-config"></a>

La configuración para compilar e instalar la AWS CLI se especifica mediante el script `configure`. Para obtener la documentación de todas las opciones de configuración, ejecute el script `configure` con la opción `--help`:

------
#### [ Linux and macOS ]

```
$ ./configure --help
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "./configure --help" 
```

------

**Topics**
+ [Ubicación de instalación](#source-getting-started-install-config-location)
+ [Intérprete de Python](#source-getting-started-install-config-interpreter)
+ [Descarga de dependencias](#source-getting-started-install-config-dependencies)
+ [Tipo de instalación](#source-getting-started-install-config-type)

### Ubicación de instalación
<a name="source-getting-started-install-config-location"></a>

La instalación de origen de la AWS CLI utiliza dos directorios configurables para instalar la AWS CLI:
+ `libdir`: directorio principal donde se instalará la AWS CLI. La ruta de acceso a la instalación de la AWS CLI es `<libdir-value>/aws-cli`. El valor predeterminado de `libdir` para Linux y macOS es `/usr/local/lib`, que crea el directorio de instalación predeterminado `/usr/local/lib/aws-cli`. 
+ `bindir`: directorio donde están instalados los ejecutables de la AWS CLI. La ubicación predeterminada es `/usr/local/bin`. 

Las siguientes opciones de `configure` controlan los directorios utilizados:
+ `--prefix`: establece el prefijo del directorio que se utilizará para la instalación. El valor predeterminado para Linux y macOS es `/usr/local`. 
+ `--libdir`: establece el `libdir` que se utilizará para instalar la AWS CLI. El valor predeterminado es `<prefix-value>/lib`. Si no se especifican `--libdir` ni `--prefix`, el valor predeterminado para Linux y macOS es `/usr/local/lib/`. 
+ `--bindir`: establece el `bindir` que se utilizará para instalar los ejecutables AWS CLI, `aws` y `aws_completer`. El valor predeterminado es `<prefix-value>/bin`. Si no se especifican `bindir` ni `--prefix`, el valor predeterminado para Linux y macOS es `/usr/local/bin/`. 

------
#### [ Linux and macOS ]

En el siguiente comando de ejemplo, se utiliza la opción `--prefix` para realizar una instalación de la AWS CLIpor parte del usuario local. Este comando instala la AWS CLI en `$HOME/.local/lib/aws-cli` y los ejecutables en `$HOME/.local/bin`:

```
$ ./configure --prefix=$HOME/.local
```

En el siguiente comando de ejemplo, se utiliza la opción `--libdir` para instalar la AWS CLI como aplicación complementaria en el directorio `/opt`. Este comando instala la AWS CLI en `/opt/aws-cli` y los ejecutables en su ubicación predeterminada de `/usr/local/bin`.

```
$ ./configure --libdir=/opt
```

------
#### [ Windows PowerShell ]

En el siguiente comando de ejemplo, se utiliza la opción `--prefix` para realizar una instalación de la AWS CLIpor parte del usuario local. Este comando instala la AWS CLI en `$HOME/.local/lib/aws-cli` y los ejecutables en `$HOME/.local/bin`:

```
$ C:\msys64\usr\bin\bash -lc "./configure --prefix='C:\Program Files\AWSCLI'" 
```

En el siguiente comando de ejemplo, se utiliza la opción `--libdir` para instalar la AWS CLI como aplicación complementaria en el directorio `/opt`. Este comando instala la AWS CLI en `C:\Program Files\AWSCLI\opt\aws-cli`.

------

### Intérprete de Python
<a name="source-getting-started-install-config-interpreter"></a>

**nota**  
Se recomienda encarecidamente especificar el intérprete de Python al realizar la instalación para Windows.

El script `./configure` selecciona automáticamente un intérprete instalado de Python 3.8 o una versión posterior para usarlo para compilar y ejecutar la AWS CLI utilizando la macro de Autoconf [https://www.gnu.org/software/automake/manual/html_node/Python.html](https://www.gnu.org/software/automake/manual/html_node/Python.html).

El intérprete de Python que se utilice se puede configurar explícitamente mediante la variable de entorno `PYTHON` al ejecutar el script `configure`:

------
#### [ Linux and macOS ]

```
$ PYTHON=/path/to/python ./configure
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "PYTHON='C:\path\to\python' ./configure"
```

------

### Descarga de dependencias
<a name="source-getting-started-install-config-dependencies"></a>

De forma predeterminada, se requiere que todas las dependencias de compilación y ejecución de la AWS CLI estén instaladas ya en el sistema. Esto incluye cualquier dependencia de la biblioteca de Python. Todas las dependencias se comprueban cuando se ejecuta el script `configure` y, si al sistema le falta alguna dependencia de Python, se produce un error en el script `configure`. 

El siguiente ejemplo de código genera un error cuando faltan dependencias en el sistema:

------
#### [ Linux and macOS ]

```
$ ./configure 
checking for a Python interpreter with version >= 3.8... python
checking for python... /Users/username/.envs/env3.11/bin/python
checking for python version... 3.11
checking for python platform... darwin
checking for GNU default python prefix... ${prefix}
checking for GNU default python exec_prefix... ${exec_prefix}
checking for python script directory (pythondir)... ${PYTHON_PREFIX}/lib/python3.11/site-packages
checking for python extension module directory (pyexecdir)... ${PYTHON_EXEC_PREFIX}/lib/python3.11/site-packages
checking for --with-install-type... system-sandbox
checking for --with-download-deps... Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 125, in <module>
    main()
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 121, in main
    parsed_args.func(parsed_args)
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 49, in validate
    validate_env(parsed_args.artifact)
  File "/Users/username/aws-code/aws-cli/./backends/build_system/validate_env.py", line 68, in validate_env
    raise UnmetDependenciesException(unmet_deps, in_venv)
validate_env.UnmetDependenciesException: Environment requires following Python dependencies:

awscrt (required: ('>=0.12.4', '<0.17.0')) (version installed: None)

We recommend using --with-download-deps flag to automatically create a virtualenv and download the dependencies.

If you want to manage the dependencies yourself instead, run the following pip command:
/Users/username/.envs/env3.11/bin/python -m pip install --prefer-binary 'awscrt>=0.12.4,<0.17.0'

configure: error: "Python dependencies not met."
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "./configure" 
checking for a Python interpreter with version >= 3.8... python
checking for python... /Users/username/.envs/env3.11/bin/python
checking for python version... 3.11
checking for python platform... darwin
checking for GNU default python prefix... ${prefix}
checking for GNU default python exec_prefix... ${exec_prefix}
checking for python script directory (pythondir)... ${PYTHON_PREFIX}/lib/python3.11/site-packages
checking for python extension module directory (pyexecdir)... ${PYTHON_EXEC_PREFIX}/lib/python3.11/site-packages
checking for --with-install-type... system-sandbox
checking for --with-download-deps... Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 125, in <module>
    main()
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 121, in main
    parsed_args.func(parsed_args)
  File "/Users/username/aws-code/aws-cli/./backends/build_system/__main__.py", line 49, in validate
    validate_env(parsed_args.artifact)
  File "/Users/username/aws-code/aws-cli/./backends/build_system/validate_env.py", line 68, in validate_env
    raise UnmetDependenciesException(unmet_deps, in_venv)
validate_env.UnmetDependenciesException: Environment requires following Python dependencies:

awscrt (required: ('>=0.12.4', '<0.17.0')) (version installed: None)

We recommend using --with-download-deps flag to automatically create a virtualenv and download the dependencies.

If you want to manage the dependencies yourself instead, run the following pip command:
/Users/username/.envs/env3.11/bin/python -m pip install --prefer-binary 'awscrt>=0.12.4,<0.17.0'

configure: error: "Python dependencies not met."
```

------

Para instalar automáticamente las dependencias de Python necesarias, utilice la opción `--with-download-deps`. Al usar este indicador, el proceso de compilación hace lo siguiente:
+ Omite la comprobación de dependencias de la biblioteca de Python. 
+ Configura los ajustes para descargar todas las dependencias de Python necesarias y usar **solo** las dependencias descargadas para compilar la AWS CLI durante la compilación `make`.

En el siguiente ejemplo del comando de configuración, se usa la opción `--with-download-deps` para descargar y usar las dependencias de Python:

------
#### [ Linux and macOS ]

```
$ ./configure --with-download-deps
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "./configure --with-download-deps"
```

------

### Tipo de instalación
<a name="source-getting-started-install-config-type"></a>

El proceso de instalación de origen admite los siguientes tipos de instalación:
+ `system-sandbox`: **(predeterminado)** Crea un entorno virtual aislado de Python, instala la AWS CLI en el entorno virtual y utiliza symlinks al ejecutable `aws` y `aws_completer` en el entorno virtual. Esta instalación de la AWS CLI depende directamente del intérprete de Python seleccionado para su tiempo de ejecución.

  Se trata de un mecanismo de instalación ligero para instalar la AWS CLI en un sistema y sigue las prácticas recomendadas de Python al utilizar un entorno aislado en la instalación en un entorno virtual. Esta instalación está destinada a clientes que desean instalar la AWS CLI desde el origen de la forma más sencilla posible con la instalación acoplada a su instalación de Python.
+ `portable-exe`: congela la AWS CLI en un ejecutable independiente que se puede distribuir a entornos de arquitecturas similares. Es el mismo proceso que se utiliza para generar los ejecutables oficiales prediseñados de la AWS CLI. La `portable-exe` se congela en una copia del intérprete de Python elegido en el paso `configure` para usarlo para el tiempo de ejecución de la AWS CLI. Esto permite moverlo a otras máquinas que es posible que no tengan un intérprete de Python. 

  Este tipo de compilaciones son útiles porque puede asegurarse de que la instalación de la AWS CLI no esté acoplada a la versión de Python instalada en el entorno y puede distribuir una compilación a otro sistema que tal vez no tenga instalado Python. Esto le permite controlar las dependencias y la seguridad de los ejecutables de la AWS CLI que utiliza.

Para configurar el tipo de instalación, utilice la opción `--with-install-type` y especifique un valor de `portable-exe` o `system-sandbox`. 

En el siguiente comando `./configure` de ejemplo, se especifica un valor de `portable-exe`:

------
#### [ Linux and macOS ]

```
$ ./configure --with-install-type=portable-exe
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "./configure --with-install-type=portable-exe"
```

------

## Paso 3: compilar la AWS CLI
<a name="source-getting-started-install-build"></a>

Utilice el comando `make` para compilar la AWS CLI con sus ajustes de configuración:

------
#### [ Linux and macOS ]

```
$ make
```

------
#### [ Windows PowerShell ]

```
PS C:\> C:\msys64\usr\bin\bash -lc "make"
```

------

**nota**  
Se crea un entorno virtual en el directorio de compilación mediante el módulo [https://docs.python.org/3/library/venv.html](https://docs.python.org/3/library/venv.html) de Python. El entorno virtual se inicia con una [versión de pip que se suministra en la biblioteca estándar de Python](https://docs.python.org/3/library/ensurepip.html). 
Se copian las dependencias de la biblioteca de Python. Dependiendo de si el indicador `--with-download-deps` está especificado en el comando `configure`, este paso realiza una de las siguientes acciones:  
**Se especifica** `--with-download-deps`. Las dependencias de Python se instalan con pip. Esto incluye `wheel`, `setuptools` y todas las dependencias en tiempo de ejecución de AWS CLI. Si está compilando el `portable-exe`, se instala `pyinstaller`. Todos estos requisitos se especifican en los archivos de bloqueo generados desde [https://github.com/jazzband/pip-tools](https://github.com/jazzband/pip-tools). 
**No** se especifica `--with-download-deps`. Las bibliotecas de Python del paquete del sitio del intérprete de Python más cualquier script (por ejemplo, `pyinstaller`) se copian en el entorno virtual que se utiliza para la compilación.
Se ejecuta `pip install` directamente en el código base de la AWS CLI para realizar una compilación e instalación sin conexión de la AWS CLI dentro del árbol en el entorno virtual de compilación. Esta instalación usa los indicadores pip [--no-build-isolation](https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-no-build-isolation), [--use-feature=in-tree-build](https://pip.pypa.io/en/stable/cli/pip_install/#local-project-installs), [--no-cache-dir](https://pip.pypa.io/en/stable/cli/pip_install/#caching) y [https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-no-index](https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-no-index).
**(Opcional)** Si la `--install-type` se establece en `portable-exe` en el comando `configure`, compila un ejecutable independiente mediante [https://www.pyinstaller.org/](https://www.pyinstaller.org/). 

## Paso 4: instalar la AWS CLI
<a name="source-getting-started-install-instructions"></a>

El comando `make install` instala la AWS CLI compilada en la ubicación configurada del sistema. 

------
#### [ Linux and macOS ]

El siguiente comando de ejemplo instala la AWS CLI utilizando sus ajustes de configuración y compilación:

```
$ make install
```

------
#### [ Windows PowerShell ]

El siguiente comando de ejemplo instala la AWS CLI utilizando sus ajustes de configuración y compilación y, a continuación, añade una variable de entorno con la ruta de la AWS CLI:

```
PS C:\> C:\msys64\usr\bin\bash -lc " make install "
PS C:\> $Env:PATH +=";C:\Program Files\AWSCLI\bin\"
```

------

La regla `make install` admite la variable [https://www.gnu.org/software/make/manual/html_node/DESTDIR.html#DESTDIR](https://www.gnu.org/software/make/manual/html_node/DESTDIR.html#DESTDIR). Cuando se especifica, esta variable se usa como prefijo en la ruta especificada a la ruta de instalación ya configurada al instalar la AWS CLI. De forma predeterminada, no se establece ningún valor para esta variable. 

------
#### [ Linux and macOS ]

En el siguiente código de ejemplo, se utiliza un indicador `--prefix=/usr/local` para configurar una ubicación de instalación y, a continuación, se modifica ese destino mediante `DESTDIR=/tmp/stage` para el comando `make install`. Estos comandos hacen que se instale la AWS CLI en `/tmp/stage/usr/local/lib/aws-cli` y sus ejecutables se colocan en `/tmp/stage/usr/local/bin`.

```
$ ./configure --prefix=/usr/local
$ make
$ make DESTDIR=/tmp/stage install
```

------
#### [ Windows PowerShell ]

En el siguiente código de ejemplo, se utiliza un indicador `--prefix=\awscli` para configurar una ubicación de instalación y, a continuación, se modifica ese destino mediante `DESTDIR=C:\Program Files` para el comando `make install`. Estos comandos hacen que la AWS CLI se instale en `C:\Program Files\awscli`.

```
$ ./configure --prefix=\awscli
$ make
$ make DESTDIR='C:\Program Files' install
```

------

**nota**  
Se mueve uno de los siguientes elementos al directorio de instalación configurado:  
Si el tipo de instalación es `system-sandbox`, se mueve el entorno virtual compilado. 
Si el tipo de instalación es un `portable-exe`, se mueve el ejecutable independiente compilado. 
Crea symlinks tanto para los ejecutables `aws` y `aws_completer` como para los ejecutables del directorio bin configurado. 

## Paso 5: verificar la instalación de AWS CLI
<a name="source-getting-started-install-verify"></a>

Confirme que la AWS CLI se ha instalado correctamente utilizando el siguiente comando:

```
$ aws --version
aws-cli/2.27.41 Python/3.11.6 Windows/10 exe/AMD64 prompt/off
```

Si no se reconoce el comando `aws`, es posible que deba reiniciar el terminal para que se actualicen los nuevos symlink. Si se encuentra con más problemas después de instalar o desinstalar la AWS CLI, consulte en [Solución de errores para la AWS CLI](cli-chap-troubleshooting.md) los pasos para la solución de problemas comunes.

## Ejemplos de flujo de trabajo
<a name="source-getting-started-install-workflows"></a>

En esta sección, se proporcionan algunos ejemplos básicos de flujos de trabajo básicos para la instalación desde el origen.

### Instalación básica de Linux y macOS
<a name="source-getting-started-install-workflows-basic"></a>

A continuación, se ofrece un flujo de trabajo de instalación básico de ejemplo en el que la AWS CLI se instala en la ubicación predeterminada de `/usr/local/lib/aws-cli`. 

```
$ cd path/to/cli/respository/
$ ./configure
$ make
$ make install
```

### Instalación automatizada de Windows
<a name="source-getting-started-install-workflows-win"></a>

**nota**  
Debe ejecutar PowerShell como administrador para utilizar este flujo de trabajo.

MSYS2 se puede utilizar de forma automatizada en una configuración de CI; consulte [Using MSYS2 in CI](https://www.msys2.org/docs/ci/) (Uso de MSYS2 en CI) en *MSYS2 Documentation* (Documentación de MSYS2). 

------
#### [ Downloaded Tarball ]

Descargue el archivo `awscli.tar.gz`, extráigalo e instale la AWS CLI. Al utilizar los siguientes comandos, sustituya las siguientes rutas:
+ `C:\msys64\usr\bin\bash` por la ubicación de su ruta de MSYS2.
+ `.\awscli-2.x.x\` por el nombre de la carpeta `awscli.tar.gz` extraída.
+ `PYTHON='C:\path\to\python.exe'` por su ruta local de Python.

En el siguiente código de ejemplo, se automatiza la compilación e instalación de la AWS CLI desde PowerShell mediante MSYS2 y se especifica qué instalación local de Python se debe utilizar:

```
PS C:\> curl "https://awscli.amazonaws.com/awscli.tar.gz" -o "awscliv2.zip"  #  Download the awscli.tar.gz file in the current working directory
PS C:\> tar -xvzf .\awscli.tar.gz #  Extract awscli.tar.gz file
PS C:\> cd .\awscli-2.x.x\ #  Navigate to the root of the extracted files
PS C:\> $env:CHERE_INVOKING = 'yes' #  Preserve the current working directory
PS C:\> C:\msys64\usr\bin\bash  -lc " PYTHON='C:\path\to\python.exe' ./configure --prefix='C:\Program Files\AWSCLI' --with-download-deps " 
PS C:\> C:\msys64\usr\bin\bash  -lc "make"
PS C:\> C:\msys64\usr\bin\bash  -lc "make install"
PS C:\> $Env:PATH +=";C:\Program Files\AWSCLI\bin\"
PS C:\> aws --version
aws-cli/2.27.41 Python/3.11.6 Windows/10 source-sandbox/AMD64
```

------
#### [ GitHub Repository ]

Descargue el archivo `awscli.tar.gz`, extráigalo e instale la AWS CLI. Al utilizar los siguientes comandos, sustituya las siguientes rutas:
+ `C:\msys64\usr\bin\bash` por la ubicación de su ruta de MSYS2.
+ `C:path\to\cli\repository\` por la ruta a su [repositorio de la AWS CLI](https://github.com/aws/aws-cli) clonado desde *GitHub*. Para obtener más información, consulte [Fork a repo](https://docs.github.com/en/get-started/quickstart/fork-a-repo) (Bifurcar un repositorio) en *GitHub Docs* (Documentación de GitHub).
+ `PYTHON='C:\path\to\python.exe'` por su ruta local de Python.

En el siguiente código de ejemplo, se automatiza la compilación e instalación de la AWS CLI desde PowerShell mediante MSYS2 y se especifica qué instalación local de Python se debe utilizar:

```
PS C:\> cd C:path\to\cli\repository\
PS C:\> $env:CHERE_INVOKING = 'yes' #  Preserve the current working directory
PS C:\> C:\msys64\usr\bin\bash  -lc " PYTHON='C:\path\to\python.exe' ./configure --prefix='C:\Program Files\AWSCLI' --with-download-deps " 
PS C:\> C:\msys64\usr\bin\bash  -lc "make"
PS C:\> C:\msys64\usr\bin\bash  -lc "make install"
PS C:\> $Env:PATH +=";C:\Program Files\AWSCLI\bin\"
PS C:\> aws --version
```

------

### Contenedor de Alpine Linux
<a name="source-getting-started-install-workflows-alpine"></a>

A continuación, se muestra un Dockerfile de ejemplo que se puede utilizar para conseguir una instalación funcional de la AWS CLI en un contenedor de Alpine Linux como [alternativa a los binarios prediseñados para Alpine](https://github.com/aws/aws-cli/issues/4685). Al utilizar este ejemplo, sustituya *AWSCLI\$1VERSION* por el número de versión de la AWS CLI deseado:

```
 1. FROM python:3.8-alpine AS builder
 2. 
 3. ENV AWSCLI_VERSION=2.10.1
 4. 
 5. RUN apk add --no-cache \
 6.     curl \
 7.     make \
 8.     cmake \
 9.     gcc \
10.     g++ \
11.     libc-dev \
12.     libffi-dev \
13.     openssl-dev \
14.     && curl https://awscli.amazonaws.com/awscli-${AWSCLI_VERSION}.tar.gz | tar -xz \
15.     && cd awscli-${AWSCLI_VERSION} \
16.     && ./configure --prefix=/opt/aws-cli/ --with-download-deps \
17.     && make \
18.     && make install
19. 
20. FROM python:3.8-alpine
21. 
22. RUN apk --no-cache add groff
23. 
24. COPY --from=builder /opt/aws-cli/ /opt/aws-cli/
25. 
26. ENTRYPOINT ["/opt/aws-cli/bin/aws"]
```

Se compila esta imagen y se invoca la AWS CLI desde un contenedor similar al que se compila en Amazon Linux 2:

```
$ docker build --tag awscli-alpine .
$ docker run --rm -it awscli-alpine --version
aws-cli/2.2.1 Python/3.8.11 Linux/5.10.25-linuxkit source-sandbox/x86_64.alpine.3 prompt/off
```

El tamaño final de esta imagen es más pequeño que el tamaño de la imagen de Docker oficial de la AWS CLI. Para obtener información sobre la imagen de Docker oficial, consulte [Ejecución de las imágenes oficiales de Amazon ECR Public o Docker para la AWS CLI](getting-started-docker.md).

## Solución de errores de instalación y desinstalación de AWS CLI
<a name="source-install-tshoot"></a>

Para ver los pasos de solución de problemas relacionados con los errores de instalación, consulte [Solución de errores para la AWS CLI](cli-chap-troubleshooting.md) para conocer los pasos de solución de problemas comunes. Para conocer los pasos más relevantes de la solución de problemas, consulte [Errores de comando no encontrado](cli-chap-troubleshooting.md#tshoot-install-not-found), [El comando "`aws --version`" devuelve una versión diferente a la instalada](cli-chap-troubleshooting.md#tshoot-install-wrong-version) y [El comando "`aws --version`" devuelve una versión después de desinstalar la AWS CLI](cli-chap-troubleshooting.md#tshoot-uninstall-1).

Para cualquier problema que no esté incluido en las guías de solución de problemas, busque los problemas con la etiqueta `source-distribution` en el [Repositorio de la AWS CLI](https://github.com/aws/aws-cli/labels/source-distribution) de *GitHub*. Si no existe ningún problema que se refiera a sus errores, [cree un nuevo problema](https://github.com/aws/aws-cli/issues/new?assignees=&labels=source-distribution%2Cneeds-triage&template=source-distribution.yml&title=%28short+issue+description%29) para recibir ayuda de los mantenedores de la AWS CLI.

## Siguientes pasos
<a name="source-install-next-steps"></a>

Después de instalar la AWS CLI, debe realizar un [Configuración de AWS CLI](getting-started-quickstart.md).