

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Solución de problemas CodeDeploy
<a name="troubleshooting"></a>

Utilice los temas de esta sección para ayudar a resolver los problemas y errores que puedan surgir al CodeDeploy utilizarlos.

**nota**  
Puede identificar las causas de muchos errores de implementación revisando los archivos log creados durante el proceso de implementación. Para simplificar, recomendamos utilizar Amazon CloudWatch Logs para supervisar de forma centralizada los archivos de registro en lugar de verlos instancia por instancia. Para obtener información, consulte [Supervisión de las implementaciones con las herramientas de Amazon CloudWatch](monitoring-cloudwatch.md).

**Topics**
+ [Solución de problemas generales](troubleshooting-general.md)
+ [Resolución de problemas de implementación de EC2/en las instalaciones](troubleshooting-deployments.md)
+ [Resolución problemas de implementación de Amazon ECS](troubleshooting-ecs.md)
+ [Solución de problemas de implementación de AWS Lambda](troubleshooting-deployments-lambda.md)
+ [Solución de problemas de grupos de implementación](troubleshooting-deployment-groups.md)
+ [Solución de problemas de instancias](troubleshooting-ec2-instances.md)
+ [Solucione problemas con los GitHub tokens](troubleshooting-github-token-issues.md)
+ [Solución de problemas de Amazon EC2 Auto Scaling](troubleshooting-auto-scaling.md)
+ [Códigos de error de AWS CodeDeploy](error-codes.md)

# Solución de problemas generales
<a name="troubleshooting-general"></a>

**Topics**
+ [Lista de comprobación de solución de problemas generales](#troubleshooting-checklist)
+ [CodeDeploy los recursos de despliegue solo se admiten en algunas regiones AWS](#troubleshooting-supported-regions)
+ [Los procedimientos de esta guía no coinciden con los de la CodeDeploy consola](#troubleshooting-old-console)
+ [Los roles de IAM necesarios no están disponibles](#troubleshooting-iam-cloudformation)
+ [El uso de algunos editores de texto para crear AppSpec archivos y scripts de shell puede provocar errores en las implementaciones](#troubleshooting-text-editors)
+ [El uso de Finder en macOS para empaquetar una revisión de la aplicación puede producir un error en la implementación](#troubleshooting-bundle-with-finder)

## Lista de comprobación de solución de problemas generales
<a name="troubleshooting-checklist"></a>

Puede utilizar la siguiente lista de comprobación para solucionar un error en la implementación.

1. Consulte [Ver detalles CodeDeploy de la implementación](deployments-view-details.md) y [Visualización de los detalles de la instancia con CodeDeploy](instances-view-details.md) para determinar por qué se produjo un error en la implementación. Si no puede determinar la causa, revise los elementos de esta lista de comprobación.

1. Compruebe si ha configurado correctamente las instancias:
   + ¿Se ha lanzado la instancia con un par de claves de EC2 especificadas? Para obtener más información, consulte [Pares de claves EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2-key-pairs.html) en la *Guía del usuario de Amazon EC2*.
   + ¿Se ha asociado a la instancia el perfil de instancia de IAM correcto? Para obtener más información, consulte [Configurar una instancia de Amazon EC2 con la que trabajar CodeDeploy](instances-ec2-configure.md) y [Paso 4: Crear un perfil de instancia de IAM para las instancias de Amazon EC2](getting-started-create-iam-instance-profile.md).
   + ¿Se ha etiquetado la instancia? Para obtener más información, consulte [Trabajo con etiquetas en la consola](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#Using_Tags_Console) en la *Guía del usuario de Amazon EC2*.
   + ¿El CodeDeploy agente está instalado, actualizado y en ejecución en la instancia? Para obtener más información, consulte [Gestión de las operaciones CodeDeploy de los agentes](codedeploy-agent-operations.md). Para comprobar qué versión del agente está instalada, consulte [Determine la versión del CodeDeploy agente](codedeploy-agent-operations-version.md).

1. Compruebe la configuración de la aplicación y del grupo de implementaciones:
   + Para comprobar la configuración de la aplicación, consulte [Vea los detalles de la solicitud con CodeDeploy](applications-view-details.md).
   + Para comprobar la configuración del grupo de implementaciones, consulte [Vea los detalles del grupo de implementación con CodeDeploy](deployment-groups-view-details.md).

1. Confirme que la revisión de la aplicación está configurada correctamente:
   + Compruebe el formato del AppSpec archivo. Para obtener más información, consulte [Añadir un archivo de especificaciones de la aplicación a una revisión de CodeDeploy](application-revisions-appspec-file.md) y [CodeDeploy AppSpec referencia de archivo](reference-appspec-file.md).
   + Compruebe su depósito o GitHub repositorio de Amazon S3 para comprobar que la revisión de la aplicación se encuentra en la ubicación esperada.
   + Revise los detalles de la revisión de su CodeDeploy aplicación para asegurarse de que está registrada correctamente. Para obtener información, consulte [Vea los detalles de la revisión de la aplicación con CodeDeploy](application-revisions-view-details.md).
   + Si realiza la implementación desde Amazon S3, compruebe su bucket de Amazon S3 para comprobar que se le han CodeDeploy concedido los permisos para descargar la revisión de la aplicación. Para obtener información sobre las políticas de buckets, consulte [Requisitos previos para una implementación](deployments-create-prerequisites.md).
   + Si realiza la implementación desde GitHub, compruebe su GitHub repositorio para comprobar que se le han CodeDeploy concedido los permisos para descargar la revisión de la aplicación. Para obtener más información, consulte [Cree una implementación con CodeDeploy](deployments-create.md) y [GitHub autenticación con aplicaciones en CodeDeploy](integrations-partners-github.md#behaviors-authentication).

1. Compruebe si el rol de servicio está configurado correctamente. Para obtener información, consulte [Paso 2: Crear un rol de servicio para CodeDeploy](getting-started-create-service-role.md).

1. Confirme que ha seguido los pasos de [Empezar con CodeDeploy](getting-started-codedeploy.md) para: 
   + Aprovisionar a un usuario con los permisos necesarios.
   + Instalar o actualizar y configurar la AWS CLI.
   + Crear un perfil de instancia y un rol de servicio de IAM.

   Para obtener más información, consulte [Gestión de identidad y acceso para AWS CodeDeploy](security-iam.md).

1. Confirma que estás usando AWS CLI la versión 1.6.1 o posterior. Para comprobar la versión que tiene instalada, llame a **aws --version**.

Si sigue sin poder solucionar el error de la implementación, consulte los otros puntos de este tema.

## CodeDeploy los recursos de despliegue solo se admiten en algunas regiones AWS
<a name="troubleshooting-supported-regions"></a>

Si no ve las aplicaciones, los grupos de implementación, las instancias u otros recursos de implementación o no puede acceder a ellos desde la consola AWS CLI o la CodeDeploy consola, asegúrese de hacer referencia a una de las AWS regiones que aparecen en [Región y puntos finales](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region) en. *Referencia general de AWS*

Las instancias EC2 y los grupos de Amazon EC2 Auto Scaling que se utilizan CodeDeploy en las implementaciones deben lanzarse y crearse en una de estas regiones. AWS 

Si utiliza el AWS CLI, ejecute el **aws configure** comando desde. AWS CLI A continuación, puede ver y configurar su AWS región predeterminada.

Si utilizas la CodeDeploy consola, en la barra de navegación, en el selector de regiones, selecciona una de las AWS regiones compatibles.

**importante**  
Para utilizar servicios en la región de China (Pekín) o China (Ningxia), debe disponer de una cuenta y de credenciales para estas regiones. Las cuentas y credenciales de otras AWS regiones no funcionan en las regiones de Beijing y Ningxia, y viceversa.  
La información sobre algunos recursos para las regiones de China, como los nombres de los buckets del kit de CodeDeploy recursos y los procedimientos de instalación de los CodeDeploy agentes, no se incluye en esta edición de la *Guía del CodeDeploy usuario*.  
Para obtener más información:  
[CodeDeploy](http://docs.amazonaws.cn/en_us/aws/latest/userguide/codedeploy.html)en *[Primeros pasos AWS en la región de China (Beijing)](http://docs.amazonaws.cn/en_us/aws/latest/userguide/introduction.html)*
*CodeDeploy Guía del usuario para las regiones de China* ([versión en inglés](http://docs.amazonaws.cn/en_us/codedeploy/latest/userguide/welcome.html) \$1 [versión en chino](http://docs.amazonaws.cn/codedeploy/latest/userguide/welcome.html))

## Los procedimientos de esta guía no coinciden con los de la CodeDeploy consola
<a name="troubleshooting-old-console"></a>

 Los procedimientos de esta guía se han diseñado para reflejar el nuevo diseño de la consola. Si utiliza la versión anterior de la consola, muchos de los conceptos y procedimientos básicos de esta guía se siguen aplicando. Para obtener acceso a ayuda en la nueva consola, elija el icono de información. 

## Los roles de IAM necesarios no están disponibles
<a name="troubleshooting-iam-cloudformation"></a>

Si utiliza un perfil de instancia de IAM o un rol de servicio que se creó como parte de una AWS CloudFormation pila, si elimina la pila, también se eliminarán todos los roles de IAM. Esta puede ser la razón por la que la función de IAM ya no se muestra en la consola de IAM y ya CodeDeploy no funciona como se esperaba. Para solucionar este problema, debe volver a crear manualmente el rol de IAM eliminado.

## El uso de algunos editores de texto para crear AppSpec archivos y scripts de shell puede provocar errores en las implementaciones
<a name="troubleshooting-text-editors"></a>

Algunos editores de texto introducen en los archivos caracteres no imprimibles que no se admiten. Si utiliza editores de texto para crear o modificar AppSpec archivos o archivos shell script para ejecutarlos en instancias de Amazon Linux, Ubuntu Server o RHEL, cualquier implementación que dependa de estos archivos podría fallar. Cuando CodeDeploy utiliza estos archivos durante una implementación, la presencia de estos caracteres puede provocar errores en la validación de los hard-to-troubleshoot AppSpec archivos y en la ejecución de los scripts. 

En la CodeDeploy consola, en la página de detalles del evento de la implementación, selecciona **Ver registros**. (O puede utilizar el comando AWS CLI para llamar al [get-deployment-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-deployment-instance.html)comando). Busque errores como `invalid character`, `command not found` o `file not found`.

Para solucionar este problema, le recomendamos lo siguiente:
+ No utilice editores de texto que introduzcan caracteres no imprimibles, como devoluciones de `^M` carruajes (caracteres) en AppSpec los archivos y en los archivos shell script. 
+ Utilice editores de texto que muestren caracteres que no se impriman, como devoluciones de carruajes en sus AppSpec archivos y archivos de autografía, de forma que pueda buscar y eliminar los que puedan estar introducidos. Para ver ejemplos de estos tipos de editores de texto, busque en Internet "el editor de texto muestra los retornos de carro".
+ Utilice editores de texto que se ejecuten en instancias de Amazon Linux, Ubuntu Server o RHEL para crear archivos de script de intérpretes de comandos que se ejecuten en instancias de Amazon Linux, Ubuntu Server o RHEL. Para ver ejemplos de estos tipos de editores de texto, busque en Internet "editor de script de intérpretes de comandos de Linux".
+ Si debe utilizar un editor de texto en Windows o macOS para crear archivos de script de intérpretes de comandos que se van a ejecutar en instancias de Amazon Linux, Ubuntu Server o RHEL, use un programa o una utilidad que convierta el texto en formato Windows o macOS en formato Unix. Para ver ejemplos de estos programas y utilidades, busque en Internet "de DOS a UNIX" o "de Mac a UNIX". Asegúrese de probar los archivos de intérpretes de comandos convertidos en los sistemas operativos de destino.

## El uso de Finder en macOS para empaquetar una revisión de la aplicación puede producir un error en la implementación
<a name="troubleshooting-bundle-with-finder"></a>

Las implementaciones podrían fallar si utilizas la aplicación de interfaz gráfica de usuario (GUI) Finder de un Mac para empaquetar (comprimir) un AppSpec archivo y los archivos y scripts relacionados en un archivo de revisión de aplicaciones (.zip). Esto se debe a que Finder crea una carpeta `__MACOSX` intermedia en el archivo .zip y coloca archivos de componentes en ella. CodeDeploy no puede encontrar los archivos de componentes y la implementación produce un error.

[Para solucionar este problema, le recomendamos que utilice el comando AWS CLI to call, que comprime los archivos de los componentes en la estructura esperada.](https://docs.aws.amazon.com/cli/latest/reference/deploy/push.html) Otra opción es usar Terminal en lugar de la GUI para comprimir los archivos de componentes. Terminal no crea una carpeta `__MACOSX` intermedia.

# Resolución de problemas de implementación de EC2/en las instalaciones
<a name="troubleshooting-deployments"></a>

**Topics**
+ [CodeDeploy error CommandPoller de falta de credenciales en el complemento](#troubleshooting-agent-commandpoller-error)
+ [Se produce un error en la implementación y aparece el mensaje «No se pudo validar el mensaje PKCS7 firmado»](#troubleshooting-deployments-agent-SHA-256)
+ [La implementación o la reimplementación de los mismos archivos en la misma instancia producen el error "The deployment failed because a specified file already exists at this location"](#troubleshooting-same-files-different-app-name)
+ [Las rutas de archivo largas provocan el error “No existe tal archivo o directorio”](#troubleshooting-long-file-paths)
+ [Los procesos de larga duración pueden producir un error en la implementación](#troubleshooting-long-running-processes)
+ [Solución de problemas de un evento AllowTraffic de ciclo de vida fallido sin que se haya registrado ningún error en los registros de implementación](#troubleshooting-deployments-allowtraffic-no-logs)
+ [Solución de problemas relacionados con un error o un evento del ciclo de vida de ApplicationStop la BeforeBlockTraffic implementación AfterBlockTraffic](#troubleshooting-deployments-lifecycle-event-failures)
+ [Solución de problemas de un evento fallido en el ciclo de vida de una DownloadBundle implementación con UnknownError: no abierto para lectura](#troubleshooting-deployments-downloadbundle)
+ [Solución de problemas cuando se omiten todos los eventos del ciclo de vida](#troubleshooting-skipped-lifecycle-events)
+ [De forma predeterminada, los PowerShell scripts de Windows no utilizan la versión de 64 bits de Windows PowerShell](#troubleshooting-deployments-powershell)

**nota**  
Las causas de muchos errores de implementación pueden identificarse revisando los archivos log creados durante el proceso de implementación. Para simplificar, recomendamos utilizar Amazon CloudWatch Logs para supervisar de forma centralizada los archivos de registro en lugar de verlos instancia por instancia. Para obtener más información, consulte [Ver CodeDeploy registros en la consola de CloudWatch registros](https://aws.amazon.com/blogs/devops/view-aws-codedeploy-logs-in-amazon-cloudwatch-console/).

**sugerencia**  
*Para obtener un manual que automatice muchas tareas de solución de problemas relacionadas con las implementaciones de EC2/on-premise, consulte la referencia del manual de automatización de [AWSSupport-TroubleshootCodeDeploy](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshootcodedeploy.html)Systems Manager AWS .*

## CodeDeploy error CommandPoller de falta de credenciales en el complemento
<a name="troubleshooting-agent-commandpoller-error"></a>

 Si aparece un error similar a `InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Missing credentials - please check if this instance was started with an IAM instance profile`, podría deberse a una de las siguientes causas: 
+  La instancia en la que va a implementar no tiene un perfil de instancia de IAM asociado. 
+  El perfil de instancia de IAM no tiene configurados los permisos correctos. 

 Un perfil de instancia de IAM otorga al CodeDeploy agente permiso para comunicarse con su revisión CodeDeploy y descargarla de Amazon S3. Para las instancias EC2, consulte [Gestión de identidad y acceso para AWS CodeDeploy](security-iam.md). En el caso de las instancias locales, consulte [Trabajar con instancias locales para CodeDeploy](instances-on-premises.md). 

## Se produce un error en la implementación y aparece el mensaje «No se pudo validar el mensaje PKCS7 firmado»
<a name="troubleshooting-deployments-agent-SHA-256"></a>

Este mensaje de error indica que la instancia ejecuta una versión del CodeDeploy agente que solo admite el algoritmo hash SHA-1. Support para el algoritmo hash SHA-2 se introdujo en la versión 1.0.1.854 del CodeDeploy agente, publicada en noviembre de 2015. A partir del 17 de octubre de 2016, las implementaciones fallan si se instala una versión del CodeDeploy agente anterior a la 1.0.1.854. Para obtener más información, consulte Cómo [cambiar AWS a un algoritmo SHA256 hash para los certificados SSL](https://aws.amazon.com/security/security-bulletins/aws-to-switch-to-sha256-hash-algorithm-for-ssl-certificates/), [NOTA: Retirar los agentes CodeDeploy host anteriores a la versión](https://forums.aws.amazon.com/thread.jspa?threadID=223319) 1.0.1.85 y. [Actualice el CodeDeploy agente](codedeploy-agent-operations-update.md)

## La implementación o la reimplementación de los mismos archivos en la misma instancia producen el error "The deployment failed because a specified file already exists at this location"
<a name="troubleshooting-same-files-different-app-name"></a>

Si se CodeDeploy intenta implementar un archivo en una instancia, pero ya existe un archivo con el mismo nombre en la ubicación de destino especificada, es posible que se produzca un error en la implementación en esa instancia. Es posible que reciba el mensaje de error «Se ha producido un error en la implementación porque ya existe un archivo específico en esta ubicación:*location-name*.» Esto se debe a que durante cada implementación CodeDeploy elimina primero todos los archivos de la implementación anterior, que se enumeran en un archivo log de limpieza. Si hay archivos en las carpetas de instalación de destino que no aparecen en este archivo de limpieza, el CodeDeploy agente lo interpreta de forma predeterminada como un error y no se realiza el despliegue.

**nota**  
En las instancias de Amazon Linux, RHEL y Ubuntu Server, el archivo de limpieza se encuentra en `/opt/codedeploy-agent/deployment-root/deployment-instructions/`. En las instancias de Windows Server, la ubicación es `C:\ProgramData\Amazon\CodeDeploy\deployment-instructions\`.

La forma más sencilla de evitar este error es especificar una opción distinta del comportamiento de error predeterminado de la implementación. Para cada implementación, puede elegir si la implementación produce un error, si se sobrescriben los archivos no incluidos en el archivo de limpieza o si se conservan los archivos que ya están en la instancia.

La opción de sobrescritura resulta útil cuando, por ejemplo, coloca manualmente un archivo en una instancia después de la última implementación, pero después añade un archivo con el mismo nombre a la siguiente revisión de la aplicación.

Puede elegir la opción de conservación para los archivos que coloca en la instancia que desea que formen parte de la siguiente implementación sin tener que añadirlos al paquete de revisión de la aplicación. La opción de conservación también resulta útil si los archivos de la aplicación ya se encuentran en el entorno de producción y desea implementarlos CodeDeploy por primera vez. Para obtener más información, consulte [Creación de una implementación en una plataforma de informática de EC2/en las instalaciones (consola)](deployments-create-console.md) y [Comportamiento de la restauración con contenido existente](deployments-rollback-and-redeploy.md#deployments-rollback-and-redeploy-content-options).

### Solución de errores de implementación `The deployment failed because a specified file already exists at this location`
<a name="troubleshooting-same-files-different-app-name-failed-deployment"></a>

Si decide no especificar una opción para sobrescribir o conservar el contenido que CodeDeploy detecta en las ubicaciones de implementación de destino (o si no se especifica ninguna opción de implementación para el tratamiento del contenido existente en un comando del código), puede elegir solucionar el error.

Esta información se aplica únicamente si decide no conservar ni sobrescribir el contenido.

Si intenta volver a implementar archivos con los mismos nombres y ubicaciones, es más probable que la redistribución se realice correctamente si especifica el nombre de la aplicación y el grupo de implementación con el mismo ID de grupo de implementación subyacente que utilizó anteriormente. CodeDeploy utiliza el ID del grupo de despliegue subyacente para identificar los archivos que se van a eliminar antes de la redistribución. 

La implementación de nuevos archivos o la reimplementación de los mismos archivos en las mismas ubicaciones de las instancias pueden producir un error por estas razones:
+ Ha especificado un nombre de aplicación distinto para la reimplementación de la misma revisión en las mismas instancias. La nueva implementación produce un error porque aunque el nombre del grupo de implementaciones sea el mismo, el uso de un nombre de aplicación diferente significa que se está usando un ID de grupo de implementaciones subyacente distinto.
+ Ha eliminado y ha vuelto a crear un grupo de implementaciones para una aplicación y, a continuación, ha intentado volver a implementar la misma revisión en el grupo de implementaciones. La redistribución falla porque, aunque el nombre del grupo de implementación sea el mismo, CodeDeploy hace referencia a un ID de grupo de implementación subyacente diferente.
+ Eliminó un grupo de aplicaciones y despliegues y CodeDeploy, a continuación, creó un nuevo grupo de aplicaciones y despliegues con los mismos nombres que los que eliminó. A continuación, ha intentado implementar de nuevo una revisión que se había implementado en el grupo de implementaciones anterior en el nuevo grupo con el mismo nombre. Se produce un error en la redespliegue porque, aunque los nombres de la aplicación y del grupo de despliegues son los mismos, CodeDeploy siguen haciendo referencia al ID del grupo de despliegue que ha eliminado.
+ Ha implementado una revisión en un grupo de implementaciones y después ha implementado la misma revisión en otro grupo de implementaciones en las mismas instancias. La segunda implementación produce un error porque CodeDeploy hace referencia a un ID de grupo de implementaciones subyacente distinto.
+ Ha implementado una revisión en un grupo de implementaciones y después ha implementado otra revisión en otro grupo de implementaciones en las mismas instancias. Hay al menos un archivo con el mismo nombre y en la misma ubicación en la que el segundo grupo de implementaciones intenta realizar la implementación. La segunda implementación falla porque CodeDeploy no elimina el archivo existente antes de que comience la segunda implementación. Ambas implementaciones >hacen referencia a un grupo de implementaciones diferente. IDs
+ Ha implementado una revisión en CodeDeploy, pero hay al menos un archivo con el mismo nombre y en la misma ubicación. La implementación falla porque, de forma predeterminada, CodeDeploy no elimina el archivo existente antes de que comience la implementación. 

Para solucionar estas situaciones, proceda del modo siguiente:
+ Elimine los archivos de las ubicaciones e instancias en las que aplicaron anteriormente implementaciones e intente realizar de nuevo la implementación. 
+ En el AppSpec archivo de la revisión, ya sea en los eventos del ciclo de vida ApplicationStop o del BeforeInstall despliegue, especifique un script personalizado para eliminar los archivos en cualquier ubicación que coincida con los archivos que la revisión va a instalar.
+ Implemente o reimplemente los archivos en ubicaciones o instancias que no formaron parte de implementaciones anteriores.
+ Antes de eliminar una aplicación o un grupo de despliegues, implementa una revisión que contenga un AppSpec archivo que especifique que no hay ningún archivo que copiar en las instancias. Para la implementación, especifique el nombre de la aplicación y el nombre del grupo de implementación que utilizan la misma aplicación y el mismo grupo IDs de implementación subyacentes que los que va a eliminar. (Puede usar el [get-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-deployment-group.html)comando para recuperar el ID del grupo de despliegue). CodeDeployutiliza el ID y el AppSpec archivo del grupo de despliegue subyacentes para eliminar todos los archivos que instaló en la anterior implementación exitosa. 

## Las rutas de archivo largas provocan el error “No existe tal archivo o directorio”
<a name="troubleshooting-long-file-paths"></a>

En el caso de las implementaciones en instancias de Windows, si tiene una ruta de archivo de más de 260 caracteres en la sección de archivos del archivo appspec.yml, es posible que las implementaciones fallen y se produzca un error similar al siguiente:

`No such file or directory @ dir_s_mkdir - C:\your-long-file-path`

Este error se produce porque, de forma predeterminada, Windows no permite rutas de archivos de más de 260 caracteres, como se detalla en la [documentación de Microsoft](https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=powershell#enable-long-paths-in-windows-10-version-1607-and-later). 

Para las versiones 1.4.0 o posteriores del CodeDeploy agente, puede habilitar las rutas de archivo largas de dos maneras, según el proceso de instalación del agente:

Si el CodeDeploy agente aún no se ha instalado:

1. En el equipo en el que va a instalar el CodeDeploy agente, habilite la clave de registro de `LongPathsEnabled` Windows mediante este comando:

   ```
   New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem"
             -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
   ```

1. Instale el CodeDeploy agente. Para obtener más información, consulte [Instale el agente CodeDeploy](codedeploy-agent-operations-install.md).

Si el CodeDeploy agente ya se ha instalado:

1. En el equipo CodeDeploy agente, habilite la clave de registro de `LongPathsEnabled` Windows mediante este comando:

   ```
   New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" 
   -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
   ```

1.  Reinicie el CodeDeploy agente para que el cambio de clave de registro surta efecto. Para reiniciar el agente, utilice este comando:

   ```
   powershell.exe -Command Restart-Service -Name codedeployagent
   ```

## Los procesos de larga duración pueden producir un error en la implementación
<a name="troubleshooting-long-running-processes"></a>

En el caso de las implementaciones en instancias de Amazon Linux, Ubuntu Server y RHEL, si tiene un script de implementación que inicia un proceso de ejecución prolongada, es CodeDeploy posible que pase mucho tiempo esperando durante el evento del ciclo de vida de la implementación y, luego, no se realice la implementación. Esto se debe a que, si el proceso se ejecuta durante más tiempo que el tiempo previsto de ejecución de los procesos en primer y segundo plano de ese evento, CodeDeploy detiene la implementación aunque el proceso siga ejecutándose según lo previsto.

Suponga, por ejemplo, que la revisión de la aplicación contiene dos archivos en su raíz, `after-install.sh` y `sleep.sh`. Su AppSpec archivo contiene las siguientes instrucciones:

```
version: 0.0
os: linux
files:
  - source: ./sleep.sh
    destination: /tmp
hooks:
  AfterInstall:
    - location: after-install.sh
      timeout: 60
```

El `after-install.sh` archivo se ejecuta durante el evento del ciclo de vida de la AfterInstall aplicación. Este es su contenido:

```
#!/bin/bash
/tmp/sleep.sh
```

El archivo `sleep.sh` contiene lo siguiente, que suspende la ejecución del programa durante tres minutos (180 segundos), lo que simula un proceso de larga duración:

```
#!/bin/bash
sleep 180
```

Cuando `after-install.sh` llama`sleep.sh`, se `sleep.sh` inicia y se ejecuta durante tres minutos (180 segundos), es decir, dos minutos (120 segundos) después de la hora prevista `sleep.sh` ( CodeDeploy y, en relación con ello,`after-install.sh`) que dejará de ejecutarse. Transcurrido el tiempo de espera de un minuto (60 segundos), CodeDeploy se detiene y se produce un error en el momento del ciclo de vida de la AfterInstall aplicación, aunque `sleep.sh` sigue ejecutándose según lo previsto. Se muestra el siguiente error:

`Script at specified location: after-install.sh failed to complete in 60 seconds`.

No basta con añadir un signo de ampersand (`&`) en `after-install.sh` para ejecutar `sleep.sh` en segundo plano.

```
#!/bin/bash
# Do not do this.
/tmp/sleep.sh &
```

Si lo hace, puede dejar la implementación en un estado pendiente durante el tiempo de espera predeterminado de una hora para el evento del ciclo de vida de la implementación, después del cual CodeDeploy se detiene y falla la implementación en el evento del ciclo de vida de la AfterInstall aplicación, como antes.

En`after-install.sh`, llame de la `sleep.sh` siguiente manera, lo que le permitirá CodeDeploy continuar una vez que el proceso comience a ejecutarse:

```
#!/bin/bash
/tmp/sleep.sh > /dev/null 2> /dev/null < /dev/null &
```

En la llamada anterior, `sleep.sh` es el nombre del proceso que desea empezar a ejecutar en segundo plano, redirigiendo stdout, stderr y stdin a `/dev/null`.

## Solución de problemas de un evento AllowTraffic de ciclo de vida fallido sin que se haya registrado ningún error en los registros de implementación
<a name="troubleshooting-deployments-allowtraffic-no-logs"></a>

En algunos casos, una blue/green implementación falla durante el evento AllowTraffic del ciclo de vida, pero los registros de implementación no indican la causa del error.

Este error se debe normalmente a que las comprobaciones de estado se han configurado incorrectamente en Elastic Load Balancing para la instancia del Equilibrador de carga clásico, del Equilibrador de carga de aplicación o del Equilibrador de carga de red usada para administrar el tráfico del grupo de implementación.

Para resolver el problema, revise y corrija los errores en la configuración de la comprobación de estado del balanceador de carga.

Para los balanceadores de carga clásicos, consulte [Configurar comprobaciones de estado](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-healthchecks.html) en la *Guía del usuario de Classic Load Balancers* y [ConfigureHealthCheck](https://docs.aws.amazon.com/elasticloadbalancing/2012-06-01/APIReference/API_ConfigureHealthCheck.html)en la versión de *referencia de la API de Elastic Load Balancing, versión* 2012-06-01.

Para los equilibradores de carga de aplicación, consulte [Comprobaciones de estado de los grupos de destino](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html) en la *Guía del usuario de los equilibradores de carga de aplicación*.

Para los equilibradores de carga de red, consulte [Comprobaciones de estado de los grupos de destino](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/target-group-health-checks.html) en la *Guía del usuario de los equilibradores de carga de red*.

## Solución de problemas relacionados con un error o un evento del ciclo de vida de ApplicationStop la BeforeBlockTraffic implementación AfterBlockTraffic
<a name="troubleshooting-deployments-lifecycle-event-failures"></a>

Durante una implementación, el CodeDeploy agente ejecuta los scripts especificados para ApplicationStop y AfterBlockTraffic en el AppSpec archivo de la implementación anterior exitosa. BeforeBlockTraffic (Todos los demás scripts se ejecutan desde el AppSpec archivo de la implementación actual). Si alguno de estos scripts contiene un error y no se ejecuta correctamente, la implementación puede producir un error. 

Los posibles motivos de estos errores son los siguientes:
+ El CodeDeploy agente encuentra el `deployment-group-id_last_successful_install` archivo en la ubicación correcta, pero la ubicación que aparece en el `deployment-group-id_last_successful_install` archivo no existe. 

  **En las instancias de Amazon Linux, Ubuntu Server y RHEL**, este archivo debe existir en `/opt/codedeploy-agent/deployment-root/deployment-instructions`.

  **En las instancias de Windows Server**, este archivo se debe almacenar en la carpeta `C:\ProgramData\Amazon\CodeDeploy\deployment-instructions`.
+ En la ubicación que aparece en el `deployment-group-id_last_successful_install` archivo, el AppSpec archivo no es válido o los scripts no se ejecutan correctamente.
+ El script contiene un error que no se puede corregir, por lo que nunca se ejecuta correctamente.

Utilice la CodeDeploy consola para investigar por qué una implementación podría haber fallado durante alguno de estos eventos. En la página de detalles de la implementación, elija **View events (Ver eventos)**. En la página de detalles de la instancia, en la **ApplicationStop**AfterBlockTraffic****fila o, selecciona **Ver registros**. **BeforeBlockTraffic** O usa el AWS CLI para llamar al [get-deployment-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-deployment-instance.html)comando. 

Si la causa del error es un script de la última implementación correcta que nunca se ejecutó correctamente, cree una implementación y especifique que se deben ignorar AfterBlockTraffic los errores y. ApplicationStop BeforeBlockTraffic Hay dos formas de hacer esto:
+ Utilice la CodeDeploy consola para crear una implementación. En la página **Crear despliegue**, en **Fallo de un evento ApplicationStop del ciclo** de vida, selecciona **No fallar el despliegue en una instancia si este evento del ciclo de vida de la instancia falla**.
+ Use AWS CLI para llamar al **[create-deployment](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html)** comando e incluir la `--ignore-application-stop-failures` opción. 

Cuando vuelva a implementar la revisión de la aplicación, la implementación continuará aunque algunos de estos eventos de ciclo de vida produzcan un error. Si la nueva revisión incluye scripts fijos para los eventos de ciclo de vida, puede que las implementaciones futuras se realicen correctamente si aplica esta solución.

## Solución de problemas de un evento fallido en el ciclo de vida de una DownloadBundle implementación con UnknownError: no abierto para lectura
<a name="troubleshooting-deployments-downloadbundle"></a>

Si está intentando implementar una revisión de la aplicación desde Amazon S3 y la implementación falla durante el evento del ciclo de vida de la DownloadBundle implementación con el siguiente `UnknownError: not opened for reading` error:
+ Se ha producido un error interno del servicio de Amazon S3. Implemente de nuevo la revisión de la aplicación.
+ El perfil de instancia de IAM de su instancia de Amazon S3 no tiene permisos para obtener acceso a la revisión de la aplicación en Amazon S3. Para obtener información sobre las políticas de buckets de Amazon S3, consulte [Enviar una revisión CodeDeploy a Amazon S3 (solo para implementaciones de EC2/on-premise)](application-revisions-push.md) y [Requisitos previos para una implementación](deployments-create-prerequisites.md).
+ Las instancias en las que despliega están asociadas a una AWS región (por ejemplo, EE.UU. Oeste (Oregón)), pero el bucket de Amazon S3 que contiene la revisión de la aplicación está asociado a otra AWS región (por ejemplo, EE.UU. Este (Norte de Virginia)). Asegúrese de que la revisión de la aplicación esté en un bucket de Amazon S3 asociado a la misma AWS región que las instancias.

En la página de detalles del evento de la implementación, en la fila **Download bundle (Descargar paquete)**, elija **View logs (Ver registros)**. O utilice el AWS CLI para llamar al [get-deployment-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-deployment-instance.html)comando. Si se produce un error, debería aparecer un error en el resultado con el código de error `UnknownError` y el mensaje de error `not opened for reading`.

Para determinar la causa de este error:

1. Habilite el registro en red en al menos una de las instancias y, a continuación, implemente de nuevo la revisión de la aplicación.

1. Examine el archivo de registro en red para encontrar el error. Los mensajes de error comunes para este problema incluyen la frase "access denied". 

1. Después de examinar los archivos de registro, le recomendamos que deshabilite el registro en red para reducir el tamaño de los archivos de registro y la cantidad de información confidencial que puede aparecer en la salida en texto sin formato en la instancia en el futuro.

Para obtener información sobre cómo encontrar el archivo de registro de cables y habilitar y deshabilitar el registro de cables, consulte `:log_aws_wire:` la [referencia de configuración del CodeDeploy agente](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-agent-configuration.html).

## Solución de problemas cuando se omiten todos los eventos del ciclo de vida
<a name="troubleshooting-skipped-lifecycle-events"></a>

 Si todos los eventos del ciclo de vida de una implementación de EC2 o en las instalaciones se omiten, es posible que reciba un error similar a `The overall deployment failed because too many individual instances failed deployment, too few healthy instances are available for deployment, or some instances in your deployment group are experiencing problems. (Error code: HEALTH_CONSTRAINTS)`. Estas son algunas posibles causas y soluciones: 
+ Es posible que el CodeDeploy agente no esté instalado o en ejecución en la instancia. Para determinar si el CodeDeploy agente se está ejecutando:
  + Para un servidor de Amazon Linux RHEL o Ubuntu, ejecute lo siguiente:

    ```
    systemctl status codedeploy-agent
    ```
  + Para Windows, ejecute lo siguiente:

    ```
    powershell.exe -Command Get-Service -Name CodeDeployagent
    ```

  Si el CodeDeploy agente no está instalado o en ejecución, consulte[Compruebe que el CodeDeploy agente se esté ejecutando](codedeploy-agent-operations-verify.md). 

  Es posible que tu instancia no pueda llegar al punto de conexión público CodeDeploy o al punto de conexión público de Amazon S3 mediante el puerto 443. Pruebe con una de las siguientes acciones: 
  + Asigne una dirección IP pública a la instancia y utilice su tabla de ruteo para permitir el acceso a Internet. Asegúrese de que el grupo de seguridad asociado con la instancia permite el acceso de salida a través del puerto 443 (HTTPS). Para obtener más información, consulte [Protocolo de comunicación y puerto para el CodeDeploy agente](codedeploy-agent.md#codedeploy-agent-outbound-port). 
  + Si una instancia se aprovisiona en una subred privada, utilice una gateway NAT en lugar de una gateway de Internet en la tabla de ruteo. Para obtener más información, consulte [Puerta de enlace NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html). 
+  CodeDeploy Es posible que el rol de servicio no tenga los permisos necesarios. Para configurar un rol de servicio de CodeDeploy, consulte [Paso 2: Crear un rol de servicio para CodeDeploy](getting-started-create-service-role.md). 
+ Si utiliza un proxy HTTP, asegúrese de que esté especificado en la `:proxy_uri:` configuración del archivo de configuración del CodeDeploy agente. Para obtener más información, consulte [Referencia de configuración del agente de CodeDeploy](reference-agent-configuration.md). 
+ Es posible que la firma de fecha y hora de la firma de su instancia de implementación no coincida con la firma de fecha y hora de la solicitud de implementación. Busque un error similar al que aparece `Cannot reach InstanceService: Aws::CodeDeployCommand::Errors::InvalidSignatureException - Signature expired` en el archivo de registro del CodeDeploy agente. Si ve este error, siga los pasos que se indican en [Solución de errores de despliegue «InvalidSignatureException — Firma caducada: [hora] es anterior a [hora]»](troubleshooting-ec2-instances.md#troubleshooting-instance-time-failures). Para obtener más información, consulte [Vea los datos de registro de las implementaciones locales CodeDeploy de EC2/](deployments-view-logs.md). 
+ Es posible que el CodeDeploy agente deje de ejecutarse porque una instancia se está quedando sin memoria o espacio en el disco duro. Intenta reducir el número de implementaciones archivadas en la instancia actualizando la `max_revisions` configuración del CodeDeploy agente. Si hace esto para una instancia de EC2 y el problema continúa, considere la posibilidad de utilizar una instancia más grande. Por ejemplo, si el tipo de instancia es `t2.small`, intente usar una `t2.medium`. Para obtener más información, consulte [Archivos instalados por el agente CodeDeploy](codedeploy-agent.md#codedeploy-agent-install-files), [Referencia de configuración del agente de CodeDeploy](reference-agent-configuration.md) y [Tipos de instancias](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html). 
+  Es posible que la instancia que va a implementar no tenga un perfil de instancia de IAM asociado o que tenga un perfil de instancia de IAM asociado que no tenga los permisos necesarios. 
  +  Si un perfil de instancia de IAM no está asociado a la instancia, cree uno con los permisos necesarios y, a continuación, asócielo a la instancia. 
  +  Si un perfil de instancia de IAM ya está asociado a la instancia, asegúrese de que dispone de los permisos necesarios. 

  Después de confirmar que el perfil de instancia asociado está configurado con los permisos necesarios, reinicie la instancia. Para obtener más información, consulte [Paso 4: Crear un perfil de instancia de IAM para las instancias de Amazon EC2](getting-started-create-iam-instance-profile.md) y [Roles de IAM para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-EC2.html) en la *Guía del usuario de Amazon EC2*. 

## De forma predeterminada, los PowerShell scripts de Windows no utilizan la versión de 64 bits de Windows PowerShell
<a name="troubleshooting-deployments-powershell"></a>

Si un PowerShell script de Windows que se ejecuta como parte de una implementación utiliza una funcionalidad de 64 bits (por ejemplo, porque consume más memoria de la que permite una aplicación de 32 bits o porque llama a bibliotecas que solo se ofrecen en una versión de 64 bits), es posible que el script se bloquee o no se ejecute según lo esperado. Esto se debe a que, de forma predeterminada, CodeDeploy utiliza la versión de 32 bits de Windows PowerShell para ejecutar los PowerShell scripts de Windows que forman parte de la revisión de una aplicación. 

Agregue un código como el siguiente al principio de cualquier script que deba ejecutarse con la versión de 64 bits de Windows PowerShell:

```
# Are you running in 32-bit mode?
#   (\SysWOW64\ = 32-bit mode)

if ($PSHOME -like "*SysWOW64*")
{
  Write-Warning "Restarting this script under 64-bit Windows PowerShell."

  # Restart this script under 64-bit Windows PowerShell.
  #   (\SysNative\ redirects to \System32\ for 64-bit mode)

  & (Join-Path ($PSHOME -replace "SysWOW64", "SysNative") powershell.exe) -File `
    (Join-Path $PSScriptRoot $MyInvocation.MyCommand) @args

  # Exit 32-bit script.

  Exit $LastExitCode
}

# Was restart successful?
Write-Warning "Hello from $PSHOME"
Write-Warning "  (\SysWOW64\ = 32-bit mode, \System32\ = 64-bit mode)"
Write-Warning "Original arguments (if any): $args"

# Your 64-bit script code follows here...
# ...
```

Si bien la información sobre la ruta de archivo de este código puede parecer contradictoria, Windows de 32 bits PowerShell utiliza una ruta como la siguiente:

 `c:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe`

Windows de 64 bits PowerShell usa una ruta como la siguiente:

 `c:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe`

# Resolución problemas de implementación de Amazon ECS
<a name="troubleshooting-ecs"></a>

**Topics**
+ [Se agota el tiempo de espera mientras se espera a que se establezca la tarea de reemplazo](#troubleshooting-ecs-timeout)
+ [Se agota el tiempo de espera mientras se espera a que continúe una notificación](#troubleshooting-ecs-timeout-notif)
+ [El rol de IAM no tiene permisos suficientes](#troubleshooting-ecs-iam)
+ [Se agotó el tiempo de espera de la implementación mientras se esperaba una llamada de estado](#troubleshooting-ecs-timeout-callback)
+ [La implementación falló porque una o más de las funciones de validación de eventos del ciclo de vida fallaron](#troubleshooting-ecs-lifecycle)
+ [No se pudo actualizar el ELB debido al siguiente error: el grupo objetivo del conjunto de tareas principal debe estar detrás del oyente](#troubleshooting-ecs-elb)
+ [Mi implementación a veces falla cuando uso el escalado automático](#troubleshooting-ecs-auto-scaling)
+ [Solo ALB admite el enrutamiento de tráfico gradual; utilice el enrutamiento de AllAtOnce tráfico en su lugar cuando create/update despliegue un grupo](#troubleshooting-ecs-lb)
+ [A pesar de que mi implementación se realizó correctamente, el conjunto de tareas de reemplazo no pasa las comprobaciones de estado de Elastic Load Balancing y mi aplicación no funciona](#troubleshooting-ecs-task-set-stability)
+ [¿Puedo asociar varios equilibradores de carga a un grupo de implementación?](#troubleshooting-ecs-lb-multi)
+ [¿Puedo realizar despliegues CodeDeploy azules o verdes sin un balanceador de carga?](#troubleshooting-ecs-lb-bg)
+ [¿Cómo puedo actualizar mi servicio de Amazon ECS con nueva información durante una implementación?](#troubleshooting-ecs-exec)

## Se agota el tiempo de espera mientras se espera a que se establezca la tarea de reemplazo
<a name="troubleshooting-ecs-timeout"></a>

**Problema**: aparece el siguiente mensaje de error al implementar la aplicación Amazon ECS mediante CodeDeploy:

`The deployment timed out while waiting for the replacement task set to become healthy. This time out period is 60 minutes.`

**Causa posible**: este error puede producirse si hay un error en el archivo de definición de tareas o en otros archivos relacionados con la implementación. Por ejemplo, si hay un error tipográfico en el campo `image` del archivo de definición de tareas, Amazon ECS intentará obtener la imagen del contenedor incorrecta y fallará continuamente, lo que provocará este error.

**Posibles soluciones y próximos pasos**:
+ Corrija los errores tipográficos y los problemas de configuración en el archivo de definición de tareas y en otros archivos.
+ Consulte el evento relacionado con el servicio de Amazon ECS y descubra por qué las tareas de reemplazo no funcionan correctamente. Para obtener más información sobre los eventos de Amazon ECS, consulte [Eventos de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_cwe_events.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.
+ Consulte la sección de [solución de problemas de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/troubleshooting.html) de la *Guía para desarrolladores de Amazon Elastic Container Service* para ver los errores relacionados con los mensajes del evento.

## Se agota el tiempo de espera mientras se espera a que continúe una notificación
<a name="troubleshooting-ecs-timeout-notif"></a>

**Problema**: aparece el siguiente mensaje de error al implementar la aplicación Amazon ECS mediante CodeDeploy:

 `The deployment timed out while waiting for a notification to continue. This time out period is n minutes.` 

**Causa posible**: este error puede producirse si especificó un tiempo de espera en el campo **Especifique cuándo redirigir el tráfico** al crear el grupo de implementación, pero la implementación no pudo finalizar antes de que expirara el tiempo de espera.

**Posibles soluciones y próximos pasos**:
+ En su grupo de implementación, establezca la opción **Especificar cuándo redirigir el tráfico** en un período de tiempo mayor y vuelva a realizar la implementación. Para obtener más información, consulte [Creación de un grupo de implementación para una implementación de Amazon ECS (consola)](deployment-groups-create-ecs.md).
+ En su grupo de implementación, cambie **Especificar cuándo redirigir el tráfico** a **Reenrutar el tráfico inmediatamente** y vuelva a implementar. Para obtener más información, consulte [Creación de un grupo de implementación para una implementación de Amazon ECS (consola)](deployment-groups-create-ecs.md).
+ Vuelva a implementar y, a continuación, ejecute el [https://docs.aws.amazon.com/cli/latest/reference/deploy/continue-deployment.html](https://docs.aws.amazon.com/cli/latest/reference/deploy/continue-deployment.html) AWS CLI comando con la `--deployment-wait-type` opción establecida en. `READY_WAIT` Asegúrese de ejecutar este comando *antes* de que venza el tiempo especificado en **Especificar cuándo redirigir el tráfico**.

## El rol de IAM no tiene permisos suficientes
<a name="troubleshooting-ecs-iam"></a>

**Problema**: aparece el siguiente mensaje de error al implementar la aplicación Amazon ECS mediante CodeDeploy:

 `The IAM role role-arn does not give you permission to perform operations in the following AWS service: AWSLambda.` 

**Causa posible**: este error puede producirse si especificó una función Lambda en la [`Hooks`sección del AppSpec archivo](reference-appspec-file-structure-hooks.md#appspec-hooks-ecs), pero no otorgó CodeDeploy permiso al servicio Lambda.

**Solución posible**: añadir el `lambda:InvokeFunction` permiso a la función de CodeDeploy servicio. Para añadir este permiso, añada al rol una de las siguientes políticas administradas por AWS: **AWSCodeDeployRoleForECS** o **AWSCodeDeployRoleForECSLimited**. Para obtener información sobre estas políticas y cómo añadirlas al rol CodeDeploy de servicio, consulte[Paso 2: Crear un rol de servicio para CodeDeploy](getting-started-create-service-role.md).

## Se agotó el tiempo de espera de la implementación mientras se esperaba una llamada de estado
<a name="troubleshooting-ecs-timeout-callback"></a>

**Problema**: aparece el siguiente mensaje de error al implementar la aplicación Amazon ECS mediante CodeDeploy:

 `The deployment timed out while waiting for a status callback. CodeDeploy expects a status callback within one hour after a deployment hook is invoked.` 

**Causa posible**: este error puede producirse si especificó una función Lambda en la [`Hooks`sección del AppSpec archivo, pero](reference-appspec-file-structure-hooks.md#appspec-hooks-ecs) la función Lambda no pudo llamar a la `PutLifecycleEventHookExecutionStatus` API necesaria para devolver un `Succeeded` estado o. `Failed` CodeDeploy

**Posibles soluciones y próximos pasos**:
+ Agregue el `codedeploy:putlifecycleEventHookExecutionStatus` permiso a la función de ejecución de Lambda utilizada por la función de Lambda que especificó en el archivo. AppSpec Este permiso otorga a la función Lambda la capacidad de devolver un estado igual `Succeeded` o `Failed` igual a. CodeDeploy Para obtener más información sobre el rol de ejecución de Lambda, consulte [Rol de ejecución de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) en la *Guía para desarrolladores de AWS Lambda *. 
+ Compruebe el código de la función Lambda y los registros de ejecución para asegurarse de que su función Lambda está llamando a la `PutLifecycleEventHookExecutionStatus` API para informar si la prueba de validación CodeDeploy del ciclo CodeDeploy de vida o. `Succeeded` `Failed` Para obtener información sobre la `putlifecycleEventHookExecutionStatus` API, consulte la referencia [PutLifecycleEventHookExecutionStatus](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_PutLifecycleEventHookExecutionStatus.html)de la *AWS CodeDeploy API*. Para obtener información sobre los registros de ejecución de Lambda, consulte Acceder a los [ CloudWatch registros de Amazon](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs.html) para. AWS Lambda

## La implementación falló porque una o más de las funciones de validación de eventos del ciclo de vida fallaron
<a name="troubleshooting-ecs-lifecycle"></a>

**Problema**: aparece el siguiente mensaje de error al implementar la aplicación Amazon ECS mediante CodeDeploy:

`The deployment failed because one or more of the lifecycle event validation functions failed.`

**Causa posible**: este error puede producirse si especificó una función Lambda en la [`Hooks`sección del AppSpec archivo](reference-appspec-file-structure-hooks.md#appspec-hooks-ecs), pero la función Lambda regresó `Failed` a CodeDeploy ella cuando se llamó. `PutLifecycleEventHookExecutionStatus` Este error indica CodeDeploy que la prueba de validación del ciclo de vida ha fallado.

**Posible paso siguiente**: compruebe los registros de ejecución de Lambda para ver por qué falla el código de la prueba de validación. Para obtener información sobre los registros de ejecución de Lambda, consulte Acceder a los [ CloudWatch registros de Amazon](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs.html) para. AWS Lambda

## No se pudo actualizar el ELB debido al siguiente error: el grupo objetivo del conjunto de tareas principal debe estar detrás del oyente
<a name="troubleshooting-ecs-elb"></a>

**Problema**: aparece el siguiente mensaje de error al implementar la aplicación Amazon ECS mediante CodeDeploy:

`The ELB could not be updated due to the following error: Primary taskset target group must be behind listener`

**Causa posible**: este error puede producirse si ha configurado un oyente de prueba opcional y está configurado con un grupo de destino incorrecto. Para obtener más información sobre el detector de pruebas en CodeDeploy, consulte [Antes de empezar una implementación de Amazon ECS](deployment-steps-ecs.md#deployment-steps-prerequisites-ecs) y[¿Qué sucede durante una implementación de Amazon ECS?](deployment-steps-ecs.md#deployment-steps-what-happens). Para obtener más información sobre los conjuntos de tareas, consulte [TaskSet](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TaskSet.html)la *referencia de la API de Amazon Elastic Container Service* y [describe-task-set](https://docs.aws.amazon.com/cli/latest/reference/ecs/describe-task-set.html)la sección Amazon ECS de la *referencia de AWS CLI comandos*.

**Posible solución**: asegúrese de que tanto el oyente de producción como el oyente de prueba de Elastic Load Balancing apunten al grupo de destino que actualmente atiende sus cargas de trabajo. Hay tres lugares para comprobarlo:
+ En Amazon EC2, en la configuración de **Oyentes y reglas** del equilibrador de carga. Para obtener más información, consulte [Oyentes para equilibradores de carga de aplicación](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html)en la *Guía de equilibradores de carga de aplicación* y [Oyentes para equilibradores de carga de red](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-listeners.html) en la *Guía de equilibradores de carga de red*.
+ En Amazon ECS, en su clúster, en la configuración de **Red** de su servicio. Para obtener más información, consulte [Consideraciones sobre el Equilibrador de carga de aplicación y el Equilibrador de carga de red](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#alb-considerations) en la *Guía del usuario de Amazon Elastic Container Service*
+ En CodeDeploy, en la configuración de su grupo de despliegues. Para obtener más información, consulte [Creación de un grupo de implementación para una implementación de Amazon ECS (consola)](deployment-groups-create-ecs.md).

## Mi implementación a veces falla cuando uso el escalado automático
<a name="troubleshooting-ecs-auto-scaling"></a>

**Problema**: Está utilizando Auto Scaling con CodeDeploy y observa que sus despliegues a veces fallan. Para obtener más información sobre los síntomas de este problema, consulte el tema que dice En el caso de [los servicios configurados para usar el autoescalado del servicio y el tipo de blue/green implementación, el autoescalado no se bloquea durante una implementación, pero la implementación puede fallar en algunas circunstancias](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-bluegreen.html#deployment-type-bluegreen-considerations) en la *Guía para desarrolladores de Amazon Elastic Container Service*.

**Causa posible**: este problema puede producirse si CodeDeploy los procesos de Auto Scaling entran en conflicto.

**Solución posible**: Suspenda y reanude los procesos de Auto Scaling durante el CodeDeploy despliegue mediante la `RegisterScalableTarget` API (o el `register-scalable-target` AWS CLI comando correspondiente). Para obtener más información, consulte [Suspender y reanudar el escalado para el escalado automático de aplicaciones](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-suspend-resume-scaling.html) en la *Guía del usuario de escalado automático de aplicaciones*.

**nota**  
CodeDeploy no puedo llamar `RegisterScaleableTarget` directamente. Para utilizar esta API, debe configurarla CodeDeploy para enviar una notificación o un evento a Amazon Simple Notification Service (o Amazon CloudWatch). A continuación, debe configurar Amazon SNS (o CloudWatch) para que llame a una función de Lambda y configurar la función de Lambda para que llame a la API. `RegisterScalableTarget` Se debe llamar a la API de `RegisterScalableTarget` con el parámetro `SuspendedState` establecido en `true` para suspender las operaciones de escalado automático, y en `false` para reanudarlas.  
La notificación o el evento que se CodeDeploy envía debe producirse cuando se inicia un despliegue (para activar la suspensión de las operaciones de Auto Scaling) o cuando un despliegue tiene éxito, falla o se detiene (para activar la reanudación de las operaciones de Auto Scaling).   
Para obtener información sobre cómo CodeDeploy configurar la generación de notificaciones o CloudWatch eventos de Amazon SNS, consulte[Supervisión de despliegues con Amazon Events CloudWatch](monitoring-cloudwatch-events.md). y. [Monitorización de implementaciones con notificaciones de eventos de Amazon SNS](monitoring-sns-event-notifications.md)

## Solo ALB admite el enrutamiento de tráfico gradual; utilice el enrutamiento de AllAtOnce tráfico en su lugar cuando create/update despliegue un grupo
<a name="troubleshooting-ecs-lb"></a>

**Problema**: aparece el siguiente mensaje de error al crear o actualizar un grupo de implementación en: CodeDeploy

 `Only ALB supports gradual traffic routing, use AllAtOnce Traffic routing instead when you create/update Deployment group.` 

**Causa posible**: este error puede producirse si utiliza un equilibrador de carga de red e intenta utilizar una configuración de implementación predefinida distinta de `CodeDeployDefault.ECSAllAtOnce`.

**Soluciones posibles**:
+ Cambie la configuración de implementación predefinida a `CodeDeployDefault.ECSAllAtOnce`. Esta es la única configuración de implementación admitida por los equilibradores de carga de red.

  Para obtener más información acerca de las configuraciones de implementación predefinidas, consulte [Configuraciones de implementación predefinidas para una plataforma de informática de Amazon ECS](deployment-configurations.md#deployment-configurations-predefined-ecs).
+ Cambie el equilibrador de carga a un equilibrador de carga de red. Los equilibradores de carga de aplicación admiten todas las configuraciones de implementación predefinidas. Para obtener más información acerca de cómo crear un equilibrador de carga de aplicación, consulte [Configure un balanceador de carga, grupos objetivo y agentes de escucha para las implementaciones de CodeDeploy Amazon ECS](deployment-groups-create-load-balancer-for-ecs.md).

## A pesar de que mi implementación se realizó correctamente, el conjunto de tareas de reemplazo no pasa las comprobaciones de estado de Elastic Load Balancing y mi aplicación no funciona
<a name="troubleshooting-ecs-task-set-stability"></a>

**Problema**: aunque CodeDeploy indica que mi implementación se ha realizado correctamente, el conjunto de tareas de reemplazo no supera las comprobaciones de estado de Elastic Load Balancing y mi aplicación no funciona.

**Causa posible**: este problema puede producirse si ha realizado una CodeDeploy all-at-once implementación y el conjunto de tareas de reemplazo (verde) contiene un código incorrecto que provoca que las comprobaciones de estado de Elastic Load Balancing no se realicen correctamente. Con la configuración de all-at-once despliegue, las comprobaciones de estado del balanceador de cargas comienzan a ejecutarse en el conjunto de tareas de reemplazo una *vez* que el tráfico se ha transferido a él (es decir, *después* de que se produzca el evento CodeDeploy del `AllowTraffic` ciclo de vida). Por este motivo, observará que las comprobaciones de estado no se superarán en el conjunto de tareas de reemplazo después de desviar el tráfico, pero no antes. Para obtener información sobre los eventos del ciclo de vida que se CodeDeploy generan, consulte[¿Qué sucede durante una implementación de Amazon ECS?](deployment-steps-ecs.md#deployment-steps-what-happens).

**Posibles soluciones**:
+ Cambie la configuración de despliegue all-at-once a canaria o lineal. En una configuración lineal o lineal, las comprobaciones de estado del balanceador de cargas comienzan a ejecutarse en el conjunto de tareas de reemplazo mientras se CodeDeploy instala la aplicación en el entorno de reemplazo y *antes* de que se desplace el tráfico (es decir, durante el evento `Install` del ciclo de vida y *antes* del `AllowTraffic` evento). Al permitir que las comprobaciones se ejecuten durante la instalación de la aplicación, pero antes de que se desvíe el tráfico, se detectará un código incorrecto de la aplicación y se producirán errores de implementación antes de que la aplicación esté disponible públicamente.

  Para obtener más información acerca de cómo configurar implementaciones de valor controlado o lineales, consulte [Cambie la configuración del grupo de implementación con CodeDeploy](deployment-groups-edit.md). 

  Para obtener información sobre los eventos CodeDeploy del ciclo de vida que se ejecutan durante una implementación de Amazon ECS, consulte[¿Qué sucede durante una implementación de Amazon ECS?](deployment-steps-ecs.md#deployment-steps-what-happens).
**nota**  
Las configuraciones de implementación lineal y de valor controlado solo son compatibles con los equilibradores de carga de aplicación.
+ Si desea conservar la configuración de all-at-once implementación, configure un detector de pruebas y compruebe el estado de la tarea de reemplazo establecida con el enlace de `BeforeAllowTraffic` ciclo de vida. Para obtener más información, consulte [Lista de enlaces de eventos de ciclo de vida para una implementación de Amazon ECS](reference-appspec-file-structure-hooks.md#reference-appspec-file-structure-hooks-list-ecs).

## ¿Puedo asociar varios equilibradores de carga a un grupo de implementación?
<a name="troubleshooting-ecs-lb-multi"></a>

No. Si desea utilizar varios balanceadores de carga de aplicaciones o balanceadores de carga de red, utilice las actualizaciones sucesivas de Amazon ECS en lugar de las implementaciones CodeDeploy azul/verde. Para obtener más información acerca de las actualizaciones continuas, consulte [Actualización continua](https://docs.aws.amazon.com/AmazonECS/latest/userguide/deployment-type-ecs.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*. Para obtener más información acerca del uso de varios equilibradores de carga con Amazon ECS, consulte [Registro de varios grupos de destino con un servicio](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/register-multiple-targetgroups.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.

## ¿Puedo realizar despliegues CodeDeploy azules o verdes sin un balanceador de carga?
<a name="troubleshooting-ecs-lb-bg"></a>

No, no puedes realizar despliegues CodeDeploy azules o verdes sin un balanceador de carga. Si no puede utilizar un equilibrador de carga, utilice en su lugar la característica de actualizaciones continuas de Amazon ECS. Para obtener más información acerca de las actualizaciones continuas de Amazon ECS, consulte [Actualización continua](https://docs.aws.amazon.com/AmazonECS/latest/userguide/deployment-type-ecs.html) en la *Guía para desarrolladores de Amazon Elastic Container Service*.

## ¿Cómo puedo actualizar mi servicio de Amazon ECS con nueva información durante una implementación?
<a name="troubleshooting-ecs-exec"></a>

Para CodeDeploy actualizar su servicio Amazon ECS con un parámetro nuevo mientras lleva a cabo una implementación, especifique el parámetro en la `resources` sección del AppSpec archivo. Solo se admiten algunos parámetros de Amazon ECS CodeDeploy, como el archivo de definición de tareas y los parámetros del nombre del contenedor. Para obtener una lista completa de los parámetros de Amazon ECS que CodeDeploy se pueden actualizar, consulte[AppSpec sección de «recursos» para las implementaciones de Amazon ECS](reference-appspec-file-structure-resources.md#reference-appspec-file-structure-resources-ecs).

**nota**  
Si necesita actualizar su servicio Amazon ECS con un parámetro que no es compatible con CodeDeploy, complete estas tareas:  
Llame a la API `UpdateService` de Amazon ECS con el parámetro que desee actualizar. Para obtener una lista completa de los parámetros que se pueden actualizar, consulte la *referencia [UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html)de la API de Amazon Elastic Container Service*. 
Para aplicar el cambio a las tareas, cree una nueva blue/green implementación de Amazon ECS. Para obtener más información, consulte [Creación de una implementación en una plataforma de informática de Amazon ECS (consola)](deployments-create-console-ecs.md).

# Solución de problemas de implementación de AWS Lambda
<a name="troubleshooting-deployments-lambda"></a>

**Topics**
+ [AWS Lambda las implementaciones fallan después de detener manualmente una implementación de Lambda que no tiene reversiones configuradas](#troubleshooting-manually-stopped-lambda-deployment)

## AWS Lambda las implementaciones fallan después de detener manualmente una implementación de Lambda que no tiene reversiones configuradas
<a name="troubleshooting-manually-stopped-lambda-deployment"></a>

En algunos casos, el alias de una función de Lambda especificada en una implementación podría hacer referencia a dos versiones diferentes del función. Como consecuencia, no se realizan correctamente los intentos posteriores de implementar la función de Lambda. Una implementación de Lambda puede entrar en este estado cuando no tiene configuradas las reversiones y se detiene manualmente. Para continuar, utilice la AWS Lambda consola para asegurarse de que la función no esté configurada para cambiar el tráfico entre dos versiones:

1. Inicie sesión en Consola de administración de AWS y abra la AWS Lambda consola en [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. En el panel izquierdo, elija **Functions (Funciones)**.

1. Seleccione el nombre de la función Lambda que se encuentra en la implementación. CodeDeploy 

1. **En **Alias**, elija el alias utilizado en la CodeDeploy implementación y, a continuación, elija Editar.**

1. En **Alias ponderado**, elija **none**. Esto garantiza que el alias no esté configurado para desviar un porcentaje (o peso) del tráfico a más de una versión. Anote la versión seleccionada en **Version (Versión)**.

1. Seleccione **Save**.

1. Abra la CodeDeploy consola e intente implementar la versión que se muestra en el menú desplegable en el paso 5.

# Solución de problemas de grupos de implementación
<a name="troubleshooting-deployment-groups"></a>

## Cuando se etiqueta una instancia como parte de un grupo de implementaciones, no se implementa automáticamente la aplicación en la nueva instancia
<a name="troubleshooting-adding-instance-to-group"></a>

CodeDeploy no despliega automáticamente la aplicación en una instancia recién etiquetada. Debe crear una nueva implementación en el grupo de implementaciones.

Se puede utilizar CodeDeploy para habilitar los despliegues automáticos en nuevas instancias de EC2 en los grupos de Amazon EC2 Auto Scaling. Para obtener más información, consulte [Integración CodeDeploy con Amazon EC2 Auto Scaling](integrations-aws-auto-scaling.md).

# Solución de problemas de instancias
<a name="troubleshooting-ec2-instances"></a>

**Topics**
+ [Las etiquetas deben estar configuradas correctamente](#troubleshooting-EC2-tags)
+ [AWS CodeDeploy el agente debe estar instalado y ejecutándose en las instancias](#troubleshooting-sds-agent)
+ [Las implementaciones no producen error hasta una hora después cuando se termina una instancia durante una implementación](#troubleshooting-one-hour-timeout)
+ [Análisis de archivos de registro para investigar los errores de implementación en instancias](#troubleshooting-deploy-failures)
+ [Cree un nuevo archivo de CodeDeploy registro si se ha eliminado accidentalmente](#troubleshooting-create-new-log-file)
+ [Solución de errores de despliegue «InvalidSignatureException — Firma caducada: [hora] es anterior a [hora]»](#troubleshooting-instance-time-failures)

## Las etiquetas deben estar configuradas correctamente
<a name="troubleshooting-EC2-tags"></a>

Utilice el comando [list-deployment-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-instances.html) para confirmar que las instancias utilizadas para una implementación están etiquetadas correctamente. Si falta una instancia de EC2 en la salida, utilice la consola de EC2 para confirmar que las etiquetas se han configurado en la instancia. Para obtener más información, consulte [Trabajo con etiquetas en la consola](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#Using_Tags_Console) en la *Guía del usuario de Amazon EC2*.

**nota**  
Si etiqueta una instancia y la utiliza inmediatamente CodeDeploy para implementar una aplicación en ella, es posible que la instancia no se incluya en la implementación. Esto se debe a que pueden pasar varios minutos antes de que CodeDeploy pueda leer las etiquetas. Le recomendamos que espere al menos cinco minutos entre el momento en que etiqueta una instancia y el momento en que intenta realizar una implementación en ella.

## AWS CodeDeploy el agente debe estar instalado y ejecutándose en las instancias
<a name="troubleshooting-sds-agent"></a>

Para comprobar que el CodeDeploy agente está instalado y ejecutándose en una instancia, consulte[Compruebe que el CodeDeploy agente se esté ejecutando](codedeploy-agent-operations-verify.md).

Para instalar, desinstalar o volver a instalar el CodeDeploy agente, consulte[Instale el agente CodeDeploy](codedeploy-agent-operations-install.md).

## Las implementaciones no producen error hasta una hora después cuando se termina una instancia durante una implementación
<a name="troubleshooting-one-hour-timeout"></a>

CodeDeploy proporciona un período de una hora para que cada evento del ciclo de vida de la implementación se ejecute hasta su finalización. Esto proporciona tiempo suficiente para los scripts de larga duración. 

Si los scripts no se ejecutan hasta completarse mientras se está produciendo un evento del ciclo de vida (por ejemplo, si se termina una instancia o se cierra el CodeDeploy agente), es posible que el estado de la implementación tarde hasta una hora en mostrarse como fallido. Esto es cierto incluso si el periodo de tiempo especificado en el script es inferior a una hora. Esto se debe a que, cuando se termina la instancia, el CodeDeploy agente se cierra y no puede procesar más scripts. 

Si se termina una instancia entre eventos de ciclo de vida o antes de que se inicie el primer paso de un evento de ciclo de vida, el tiempo de espera se agota en solo cinco minutos. 

## Análisis de archivos de registro para investigar los errores de implementación en instancias
<a name="troubleshooting-deploy-failures"></a>

Si el estado de una instancia en la implementación es distinto de `Succeeded`, puede examinar los datos del archivo log para poder identificar el problema. Para obtener información sobre cómo obtener acceso a los datos de registro de una implementación, consulte [Vea los datos de registro de las implementaciones locales CodeDeploy de EC2/](deployments-view-logs.md).

## Cree un nuevo archivo de CodeDeploy registro si se ha eliminado accidentalmente
<a name="troubleshooting-create-new-log-file"></a>

Si eliminas accidentalmente el archivo de registro de despliegue en una instancia, CodeDeploy no se crea un archivo de registro de reemplazo. Para crear un nuevo archivo de registro, inicie sesión en la instancia y, a continuación, ejecute estos comandos:

**Para una instancia de Amazon Linux, Ubuntu Server o RHEL**, ejecute estos comandos y en este orden, uno cada vez:

```
systemctl stop codedeploy-agent
```

```
systemctl start codedeploy-agent
```

**Para una instancia de Windows Server**:

```
powershell.exe -Command Restart-Service -Name codedeployagent
```

## Solución de errores de despliegue «InvalidSignatureException — Firma caducada: [hora] es anterior a [hora]»
<a name="troubleshooting-instance-time-failures"></a>

CodeDeploy requiere referencias horarias precisas para realizar sus operaciones. Si la fecha y la hora de la instancia no están configuradas correctamente, es posible que no coincidan con la fecha de firma de la solicitud de despliegue, que se CodeDeploy rechaza. 

Para evitar errores relacionados con la configuración de tiempo incorrecta, consulte los siguientes temas: 
+  [Establecer la hora en una instancia de Linux](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html)
+  [Establecimiento de la hora para una instancia de Windows](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/windows-set-time.html)

# Solucione problemas con los GitHub tokens
<a name="troubleshooting-github-token-issues"></a>

## Token no válido GitHub OAuth
<a name="troubleshooting-invalid-github-token"></a>

 CodeDeploy las aplicaciones creadas después de junio de 2017 utilizan GitHub OAuth fichas para cada AWS región. El uso de fichas vinculadas a AWS regiones específicas te permite controlar mejor qué CodeDeploy aplicaciones tienen acceso a un GitHub repositorio. 

 Si recibes un error de GitHub token, es posible que tengas un token antiguo que ahora no es válido. 

**Para corregir un GitHub OAuth token no válido**

1.  Para eliminar el token anterior, utilice uno de los siguientes métodos:
   + Para eliminar el token anterior mediante la API, utilice [ DeleteGitHubAccountToken](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_DeleteGitHubAccountToken.html).
   + Para eliminar el token antiguo mediante la AWS Command Line Interface:

     1. Vaya al ordenador en el que reside el token.

     1. Asegúrese de que AWS CLI está instalado en este equipo. Para obtener instrucciones, consulte [Instalación, actualización y desinstalación de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) en la *Guía del usuario de la AWS Command Line Interface *.

     1. Introduzca el siguiente comando en el equipo en el que reside el token:

        **aws delete-git-hub-account-token**

        Para obtener más información sobre la sintaxis del comando, consulte [delete-git-hub-account-token](https://docs.aws.amazon.com/cli/latest/reference/deploy/delete-git-hub-account-token.html).

1.  Agrega un OAuth token nuevo. Para obtener más información, consulte [Integración CodeDeploy con GitHub](integrations-partners-github.md). 

## Se ha superado el número máximo de GitHub OAuth fichas
<a name="troubleshooting-too-many-github-tokens"></a>

Al crear una CodeDeploy implementación, la cantidad máxima de GitHub tokens permitidos es 10. Si recibes un error acerca de las GitHub OAuth fichas, asegúrate de tener 10 fichas o menos. Si tiene más de 10 tokens, los primeros tokens que se han creado no son válidos. Por ejemplo, si tiene 11 tokens, el primer token que ha creado no es válido. Si tiene 12 tokens, los dos primeros tokens que ha creado no son válidos. Para obtener información sobre el uso de la CodeDeploy API para eliminar los tokens antiguos, consulte [ DeleteGitHubAccountToken](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_DeleteGitHubAccountToken.html). 

# Solución de problemas de Amazon EC2 Auto Scaling
<a name="troubleshooting-auto-scaling"></a>

**Topics**
+ [Solución de problemas generales de Amazon EC2 Auto Scaling](#troubleshooting-auto-scaling-general)
+ [«CodeDeployRole no le da permiso para realizar operaciones en el siguiente AWS servicio: AmazonAutoScaling» error](#troubleshooting-auto-scaling-permissions-error)
+ [Las instancias de un grupo de Amazon EC2 Auto Scaling se aprovisionan y se terminan constantemente antes de que pueda implementarse una revisión](#troubleshooting-auto-scaling-provision-termination-loop)
+ [La terminación o el reinicio de una instancia de Amazon EC2 Auto Scaling puede producir un error en las implementaciones](#troubleshooting-auto-scaling-reboot)
+ [Evite asociar varios grupos de implementación a un único grupo de Amazon EC2 Auto Scaling](#troubleshooting-multiple-depgroups)
+ [Las instancias de EC2 de un grupo de Amazon EC2 Auto Scaling no se pueden lanzar y aparece el error "Heartbeat Timeout"](#troubleshooting-auto-scaling-heartbeat)
+ [Los enlaces de ciclo de vida de Amazon EC2 Auto Scaling que no coincidan pueden provocar que las implementaciones automáticas en los grupos de Amazon EC2 Auto Scaling se detengan o fallen.](#troubleshooting-auto-scaling-hooks)
+ [Error “La implementación falló porque no se encontró ninguna instancia para su grupo de implementación”](#troubleshooting-deployment-failed-because-no-instances-found)

## Solución de problemas generales de Amazon EC2 Auto Scaling
<a name="troubleshooting-auto-scaling-general"></a>

Las implementaciones en instancias de EC2 en un grupo de Amazon EC2 Auto Scaling pueden fallar por las razones siguientes:
+ **Amazon EC2 Auto Scaling lanza y termina de forma continua las instancias de EC2.** Si CodeDeploy no puede implementar automáticamente la revisión de la aplicación, Amazon EC2 Auto Scaling lanza y termina las instancias de EC2 de forma continua. 

  Desasocie el grupo Amazon EC2 Auto Scaling del grupo de CodeDeploy implementación o cambie la configuración de su grupo de Amazon EC2 Auto Scaling para que el número deseado de instancias coincida con el número actual de instancias (evitando así que Amazon EC2 Auto Scaling lance más instancias de EC2). Para obtener más información, consulte [Cambie la configuración del grupo de implementación con CodeDeploy](deployment-groups-edit.md) o [Escalado manual para Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-manual-scaling.html).
+ **El agente no responde. CodeDeploy ** Es posible que el CodeDeploy agente no esté instalado si los scripts de inicialización (por ejemplo, los scripts de inicio en la nube) que se ejecutan inmediatamente después de lanzar o iniciar una instancia de EC2 tardan más de una hora en ejecutarse. CodeDeploy dispone de un tiempo de espera de una hora para que el CodeDeploy agente responda a las implementaciones pendientes. Para solucionar este problema, mueva los scripts de inicialización a la revisión de la aplicación de CodeDeploy.
+ **Una instancia de EC2 de un grupo de Amazon EC2 Auto Scaling se reinicia durante una implementación.** La implementación puede fallar si se reinicia una instancia de EC2 durante una implementación o si el CodeDeploy agente se cierra mientras se procesa un comando de implementación. Para obtener más información, consulte [La terminación o el reinicio de una instancia de Amazon EC2 Auto Scaling puede producir un error en las implementaciones](#troubleshooting-auto-scaling-reboot).
+ **Varias revisiones de aplicación se implementan simultáneamente en la misma instancia de EC2 en un grupo de Amazon EC2 Auto Scaling.** La implementación de varias revisiones de aplicación en la misma instancia de EC2 en un grupo de Amazon EC2 Auto Scaling al mismo tiempo puede producir un error si una de las implementaciones tiene scripts que se ejecutan durante más de unos minutos. No implemente varias revisiones de aplicación en las mismas instancias de EC2 en un grupo de Amazon EC2 Auto Scaling.
+ Una implementación produce un error en nuevas instancias de EC2 que se lanzan como parte de un grupo de Amazon EC2 Auto Scaling. En este caso, la ejecución de scripts en una implementación puede evitar el lanzamiento de instancias de EC2 en el grupo de Amazon EC2 Auto Scaling. (Puede parecer que otras instancias de EC2 del grupo de Amazon EC2 Auto Scaling se ejecutan normalmente). Para solucionar este problema, asegúrese de que todos los demás scripts se completan primero:
  + CodeDeploy el **agente no está incluido en la AMI**: si utiliza el **cfn-init** comando para instalar el CodeDeploy agente al lanzar una nueva instancia, coloque el script de instalación del agente al final de la `cfn-init` sección de la CloudFormation plantilla. 
  + CodeDeploy el **agente está incluido en la AMI**: configure la AMI para que el agente esté en un `Stopped` estado cuando se cree la instancia y, a continuación, incluya un script para iniciar el agente como último paso en la biblioteca de `cfn-init` scripts. 

## «CodeDeployRole no le da permiso para realizar operaciones en el siguiente AWS servicio: AmazonAutoScaling» error
<a name="troubleshooting-auto-scaling-permissions-error"></a>

 Las implementaciones que utilizan un grupo de escalado automático creado con una plantilla de lanzamiento requieren los siguientes permisos. Estos permisos se suman a los concedidos por la política `AWSCodeDeployRole` AWS gestionada. 
+  `EC2:RunInstances` 
+  `EC2:CreateTags` 
+  `iam:PassRole` 

 Si no tiene los permisos indicados, puede recibir este error. Para obtener más información, consulte [Tutorial: Se usa CodeDeploy para implementar una aplicación en un grupo de Auto Scaling](tutorials-auto-scaling-group.md), [Creación de una plantilla de lanzamiento para un grupo de escalado automático](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) y [Permisos](https://docs.aws.amazon.com/autoscaling/ec2/userguide/launch-templates.html#launch-templates-permissions) en la *Guía del usuario de Amazon EC2 Auto Scaling*.

## Las instancias de un grupo de Amazon EC2 Auto Scaling se aprovisionan y se terminan constantemente antes de que pueda implementarse una revisión
<a name="troubleshooting-auto-scaling-provision-termination-loop"></a>

En algunos casos, un error puede impedir que se realice la implementación en instancias recién aprovisionadas de un grupo de Amazon EC2 Auto Scaling. Los resultados son instancias en mal estado e implementaciones infructuosas. Como la implementación no se puede ejecutar o no se completa correctamente, las instancias se terminan en cuanto se crean. La configuración del grupo de Amazon EC2 Auto Scaling provoca que se aprovisione otro lote de instancias para intentar satisfacer los requisitos de hosts mínimos en buen estado. Este lote se termina también y así una y otra vez.

Entre las causas posibles se incluyen las siguientes:
+ Comprobaciones de estado de Amazon EC2 Auto Scaling no superadas.
+ Un error en la revisión de la aplicación.

Para solucionar este problema, siga estos pasos:

1. Cree manualmente una instancia de EC2 que no forme parte del grupo de Amazon EC2 Auto Scaling. Etiquete la instancia con una etiqueta de instancia EC2 única.

1. Añada la nueva instancia al grupo de implementaciones afectado. 

1. Implemente una nueva revisión de la aplicación sin errores en el grupo de implementaciones.

Esto hace que el grupo de Amazon EC2 Auto Scaling implemente la revisión de la aplicación en instancias futuras en el grupo de Amazon EC2 Auto Scaling. 

**nota**  
Tras confirmar que las implementaciones se han realizado correctamente, elimina la instancia que creaste para evitar que se sigan cobrando a tu AWS cuenta.

## La terminación o el reinicio de una instancia de Amazon EC2 Auto Scaling puede producir un error en las implementaciones
<a name="troubleshooting-auto-scaling-reboot"></a>

Si se lanza una instancia de EC2 a través de Amazon EC2 Auto Scaling y la instancia termina o se reinicia, las implementaciones en dicha instancia pueden producir un error por las razones siguientes:
+ Durante una implementación en curso, un evento de escalado o cualquier otro evento de terminación provoca que la instancia se desvincule del grupo de Amazon EC2 Auto Scaling y que termine. Como la implementación no se puede completar, produce un error.
+ La instancia se reinicia, pero tarda más de cinco minutos en iniciarse. CodeDeploy trata esto como un tiempo de espera. El servicio no puede realizar implementaciones actuales y futuras en la instancia.

Para solucionar este problema:
+ En general, asegúrese de que todas las implementaciones se completen antes de que la instancia termine o se reinicie. Asegúrese de que todas las implementaciones comienzan una vez iniciada o reiniciada la instancia. 
+ Las implementaciones pueden fallar si se especifica una imagen de máquina de Amazon (AMI) basada en Windows Server para una configuración de Amazon EC2 Auto Scaling y se utiliza el servicio EC2 Config para establecer el nombre de ordenador de la instancia. Para solucionar este problema, en la AMI base de Windows Server, en la pestaña **General** de **Propiedades del servicio EC2**, desactive la opción **Definir nombre del equipo**. Una vez desactivada esta casilla, este comportamiento se deshabilitará para todas las nuevas instancias de Amazon EC2 Auto Scaling de Windows Server lanzadas con esa AMI base de Windows Server. Para las instancias de Amazon EC2 Auto Scaling de Windows Server en las que este comportamiento está habilitado, no es necesario desactivar esta casilla. Simplemente vuelva a aplicar las implementaciones que han producido un error en esas instancias una vez reiniciadas.

## Evite asociar varios grupos de implementación a un único grupo de Amazon EC2 Auto Scaling
<a name="troubleshooting-multiple-depgroups"></a>

Como práctica recomendada, debe asociar solo un grupo de implementación a cada grupo de Amazon EC2 Auto Scaling. 

Esto se debe a que si Amazon EC2 Auto Scaling escala una instancia que tiene enlaces asociados con varios grupos de implementación, envía las notificaciones para todos los enlaces a la vez. Esto provoca que comiencen a aplicarse las distintas implementaciones en cada instancia al mismo tiempo. Cuando varias implementaciones envían comandos al CodeDeploy agente al mismo tiempo, es posible que se agote el tiempo de espera de cinco minutos entre un evento del ciclo de vida y el inicio del despliegue o el final del evento del ciclo de vida anterior. Si esto ocurre, la implementación no se realiza correctamente, incluso aunque el proceso de implementación se haya ejecutado según lo previsto. 

**nota**  
El tiempo de espera predeterminado de un script en un evento de ciclo de vida es de 30 minutos. Puede cambiar el tiempo de espera a un valor diferente en el archivo. AppSpec Para obtener más información, consulte [Agregue un AppSpec archivo para una implementación local de EC2/](application-revisions-appspec-file.md#add-appspec-file-server).

No es posible controlar el orden en el que se producen las implementaciones si se realizan varios intentos de implementación al mismo tiempo. 

Por último, si se produce un error de la implementación en cualquier instancia, Amazon EC2 Auto Scaling termina inmediatamente la instancia. Cuando se cierra la primera instancia, el resto de las implementaciones en ejecución empiezan a producir un error. Como el CodeDeploy agente CodeDeploy tiene un tiempo de espera de una hora para responder a las implementaciones pendientes, cada instancia puede tardar hasta 60 minutos en agotarse. 

Para obtener más información sobre Amazon EC2 Auto Scaling, [consulte Under the Hood CodeDeploy : and Auto Scaling integration](https://aws.amazon.com/blogs/devops/under-the-hood-aws-codedeploy-and-auto-scaling-integration/).

## Las instancias de EC2 de un grupo de Amazon EC2 Auto Scaling no se pueden lanzar y aparece el error "Heartbeat Timeout"
<a name="troubleshooting-auto-scaling-heartbeat"></a>

Es posible que un grupo de Amazon EC2 Auto Scaling no pueda lanzar nuevas instancias de EC2 y genere un mensaje similar al siguiente: 

`Launching a new EC2 instance <instance-Id>. Status Reason: Instance failed to complete user's Lifecycle Action: Lifecycle Action with token<token-Id> was abandoned: Heartbeat Timeout`. 

Este mensaje suele indicar una de las siguientes posibilidades: 
+ Se alcanzó el número máximo de implementaciones simultáneas asociadas a una AWS cuenta. Para obtener más información acerca de los límites de implementación, consulte [CodeDeploy cuotas](limits.md). 
+ El grupo de escalado automático intentó lanzar demasiadas instancias de EC2 demasiado rápido. Se limitaron las llamadas a la API a [RecordLifecycleActionHeartbeat](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_RecordLifecycleActionHeartbeat.html)o [CompleteLifecycleAction](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_CompleteLifecycleAction.html)para cada nueva instancia.
+ Se eliminó una aplicación antes de CodeDeploy que se actualizaran o eliminaran sus grupos de implementación asociados.

  Al eliminar una aplicación o un grupo de implementaciones, CodeDeploy intenta limpiar todos los ganchos de Amazon EC2 Auto Scaling asociados a él, pero es posible que queden algunos ganchos. Si ejecuta un comando para eliminar un grupo de implementaciones, los enlaces restantes se devuelven en la salida. Sin embargo, si ejecuta un comando para eliminar una aplicación, los enlaces restantes no aparecen en la salida.

  Por lo tanto, es recomendable que elimine todos los grupos de implementaciones asociados a una aplicación antes de eliminar la aplicación. Puede utilizar el resultado del comando para identificar los enlaces de ciclo de vida que deben eliminarse manualmente. 

Si aparece un mensaje de error "Heartbeat Timeout", puede determinar si los enlaces de ciclo de vida restantes son la causa del problema y resolverlo mediante el siguiente procedimiento:

1. Realice una de las siguientes acciones:
   + Ejecute el [delete-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/delete-deployment-group.html)comando para eliminar el grupo de despliegue asociado al grupo de Auto Scaling que está provocando el tiempo de espera de latidos.
   + Llame al [update-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/update-deployment-group.html)comando con una lista vacía no nula de nombres de grupos de Auto Scaling para separar todos los ganchos del ciclo de vida de CodeDeploy Auto Scaling administrados.

     Por ejemplo, introduzca el siguiente comando: AWS CLI 

     `aws deploy update-deployment-group --application-name my-example-app --current-deployment-group-name my-deployment-group --auto-scaling-groups`

     Como otro ejemplo, si utiliza la CodeDeploy API con Java, llame `UpdateDeploymentGroup` y `autoScalingGroups` configúrelo en`new ArrayList<String>()`. Esto se establece `autoScalingGroups` en una lista vacía y elimina la lista existente. No utilice `null`, que es la opción predeterminada, porque deja `autoScalingGroups` como está, lo cual no es lo que desea.

   Examine el resultado de la llamada. Si el resultado contiene una estructura `hooksNotCleanedUp` con una lista de enlaces de ciclo de vida de Amazon EC2 Auto Scaling, la causa más probable del error serán los enlaces de ciclo de vida restantes. 

1. Llame al [describe-lifecycle-hooks](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/describe-lifecycle-hooks.html)comando y especifique el nombre del grupo Amazon EC2 Auto Scaling asociado a las instancias de EC2 que no se pudieron lanzar. Busque alguna de las siguientes opciones en los resultados:
   + Nombres de enlace de ciclo de vida de Amazon EC2 Auto Scaling que corresponden a la estructura de `hooksNotCleanedUp` que identificó en el paso 1.
   + Nombres de enlace de ciclo de vida de Amazon EC2 Auto Scaling que contienen el nombre del grupo de implementación asociado al grupo de escalado automático que está fallando.
   + Nombres de enlaces del ciclo de vida de Amazon EC2 Auto Scaling que pueden haber provocado el tiempo de espera de la implementación. CodeDeploy 

1. Si un enlace pertenece a una de las categorías enumeradas en el paso 2, [delete-lifecycle-hook](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/delete-lifecycle-hook.html)ejecute el comando para eliminarlo. En la llamada, especifique el grupo de Amazon EC2 Auto Scaling y el enlace de ciclo de vida.
**importante**  
Elimine únicamente los enlaces que estén causando problemas, tal y como se describe en el paso 2. Si elimina los enlaces viables, es posible que las implementaciones fallen o CodeDeploy que no puedan implementar las revisiones de la aplicación en instancias de EC2 ampliadas.

1. Llame al [create-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html)comando [update-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/update-deployment-group.html)o con los nombres de grupo de Auto Scaling que desee. CodeDeployvuelve a instalar los ganchos de Auto Scaling con los nuevos. UUIDs

**nota**  
Si separa un grupo de Auto Scaling de un grupo de despliegues, cualquier CodeDeploy despliegue en curso en el grupo de Auto Scaling podría fallar y las nuevas instancias de EC2 que estén escaladas de forma horizontal por el grupo de Auto Scaling no recibirán las revisiones de su aplicación. CodeDeploy Para que Auto Scaling vuelva a funcionar CodeDeploy, tendrá que volver a conectar el grupo de Auto Scaling al grupo de despliegue y llamar a uno nuevo `CreateDeployment` para iniciar un despliegue en toda la flota.

## Los enlaces de ciclo de vida de Amazon EC2 Auto Scaling que no coincidan pueden provocar que las implementaciones automáticas en los grupos de Amazon EC2 Auto Scaling se detengan o fallen.
<a name="troubleshooting-auto-scaling-hooks"></a>

Amazon EC2 Auto Scaling CodeDeploy y utilizan enlaces de ciclo de vida para determinar qué revisiones de aplicaciones deben implementarse en qué instancias de EC2 una vez lanzadas en los grupos de Amazon EC2 Auto Scaling. Las implementaciones automáticas pueden detenerse o fallar si los enlaces del ciclo de vida y la información sobre estos enlaces no coincide exactamente en Amazon EC2 Auto Scaling y. CodeDeploy

Si las implementaciones en un grupo de Amazon EC2 Auto Scaling están fallando, compruebe si los nombres de los enlaces del ciclo de vida en Amazon EC2 Auto Scaling coinciden y coinciden. CodeDeploy Si no es así, utilice estas llamadas de comandos AWS CLI .

En primer lugar, obtenga la lista de enlaces de ciclo de vida para el grupo de Amazon EC2 Auto Scaling y el grupo de implementación:

1. Llame al [describe-lifecycle-hooks](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/describe-lifecycle-hooks.html)comando y especifique el nombre del grupo Amazon EC2 Auto Scaling asociado al grupo de implementación en. CodeDeploy En el resultado, en la lista `LifecycleHooks`, anote todos los valores de `LifecycleHookName`.

1. Llame al [get-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-deployment-group.html)comando y especifique el nombre del grupo de implementación asociado al grupo Amazon EC2 Auto Scaling. En el resultado, en la lista `autoScalingGroups`, busque todos los elementos cuyo valor de nombre coincida con el nombre del grupo de Amazon EC2 Auto Scaling y, a continuación, anote el valor de `hook` correspondiente.

Después, compare los dos conjuntos de nombres de enlaces de ciclo de vida. Si coinciden exactamente, carácter por carácter, entonces este no es el problema. Pruebe con otros pasos de solución de problemas de Amazon EC2 Auto Scaling que se describen en esta sección.

Sin embargo, si los dos conjuntos de nombres de enlaces de ciclo de vida no coinciden exactamente, carácter por carácter, pruebe lo siguiente:

1. Si hay nombres de enlaces de ciclo de vida en el resultado del comando **describe-lifecycle-hooks** que no están en el resultado del comando **get-deployment-group**, proceda del modo siguiente:

   1. Para cada nombre de enlace del ciclo de vida que aparezca en el resultado del **describe-lifecycle-hooks** comando, llame al [delete-lifecycle-hook](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/delete-lifecycle-hook.html)comando.

   1. Llame al [update-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/update-deployment-group.html)comando y especifique el nombre del grupo Amazon EC2 Auto Scaling original. CodeDeploy crea nuevos enlaces de ciclo de vida de reemplazo en el grupo Amazon EC2 Auto Scaling y asocia los enlaces del ciclo de vida al grupo de implementación. Las implementaciones automáticas se deben reanudar ahora cuando se añadan nuevas instancias al grupo de Amazon EC2 Auto Scaling 

1. Si hay nombres de enlaces de ciclo de vida en el resultado del comando **get-deployment-group** que no están en el resultado del comando **describe-lifecycle-hooks**, proceda del modo siguiente:

   1. Llame al [update-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/update-deployment-group.html)comando, pero no especifique el nombre del grupo Amazon EC2 Auto Scaling original.

   1. Vuelva a **update-deployment-group** ejecutar el comando, pero esta vez especifique el nombre del grupo Amazon EC2 Auto Scaling original. CodeDeploy vuelve a crear los enlaces del ciclo de vida que faltan en el grupo Amazon EC2 Auto Scaling. Las implementaciones automáticas se deben reanudar ahora cuando se añadan nuevas instancias al grupo de Amazon EC2 Auto Scaling

Una vez que los dos conjuntos de nombres de enlaces de ciclo de vida coincidan exactamente, carácter por carácter, las revisiones de la aplicación deberían implementarse de nuevo, pero solamente en las nuevas instancias cuando estas se añadan al grupo de Amazon EC2 Auto Scaling. Las implementaciones no se realizan automáticamente en instancias que ya están en el grupo de Amazon EC2 Auto Scaling.

## Error “La implementación falló porque no se encontró ninguna instancia para su grupo de implementación”
<a name="troubleshooting-deployment-failed-because-no-instances-found"></a>

Lea esta sección si ve el siguiente error: CodeDeploy 

`The deployment failed because no instances were found for your deployment group. Check your deployment group settings to make sure the tags for your EC2 instances or Auto Scaling groups correctly identify the instances you want to deploy to, and then try again.`

Las causas posibles de este error son:

1. La configuración de su grupo de implementación incluye etiquetas para instancias de EC2, instancias en las instalaciones o grupos de escalado automático que no son correctas. Para solucionar este problema, compruebe que las etiquetas son correctas y, a continuación, vuelva a implementar la aplicación.

1. Su flota se escaló horizontalmente una vez que se inició la implementación. En este escenario, verá instancias en buen estado en el estado `InService` en su flota, pero también verá el error anterior. Para solucionar este problema, vuelva a implementar la aplicación.

1. Su grupo de escalado automático no incluye ninguna instancia que se encuentre en el estado `InService`. En este escenario, al intentar realizar una implementación en toda la flota, la implementación falla y aparece el mensaje de error anterior porque es CodeDeploy necesario que al menos una instancia esté en ese estado. `InService` Hay muchos motivos por los que es posible que no tenga instancias en el estado `InService`. Algunas de ellas son las siguientes:
   + Programó (o configuró manualmente) el tamaño del grupo de escalado automático como `0`.
   + El escalado automático detectó instancias de EC2 defectuosas (por ejemplo, las instancias de EC2 tenían fallos de hardware), por lo que las canceló todas y no dejó ninguna en el estado `InService`.
   + Durante un evento de escalado de `0` a`1`, CodeDeploy implementó una revisión que anteriormente se había realizado correctamente (denominada *última revisión correcta*) y que había dejado de estar en mal estado desde la última implementación. Esto provocó un error en la implementación en la instancia escalada horizontalmente, lo que, a su vez, provocó que el escalado automático cancelara la instancia y no dejara ninguna instancia en el estado `InService`.

     Si descubre que no tiene ninguna instancia en el estado `InService`, solucione el problema tal y como se describe en el siguiente procedimiento, [To troubleshoot the error if there are no instances in the InService state](#ToTroubleshootIfNoInServiceInstances).

**Para solucionar el error si no hay ninguna instancia en el estado InService**

1. En la consola de Amazon EC2, compruebe la configuración de **Capacidad deseada**. Si es cero, configúrelo en un número positivo. Espere a que la instancia esté en `InService`, lo que significa que la implementación se realizó correctamente. Ha solucionado el problema y puede omitir los pasos restantes de este procedimiento de solución de problemas. Para obtener información sobre cómo establecer la configuración de **Capacidad deseada**, consulte [Configuración de los límites de capacidad en su grupo de escalado automático](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-capacity-limits.html) en la *Guía del usuario de Amazon EC2 Auto Scaling*.

1. Si el escalado automático sigue intentando lanzar nuevas instancias de EC2 para cumplir con la capacidad deseada, pero no puede cumplir con el escalado horizontal, normalmente se debe a un fallo en el enlace de ciclo de vida del escalado automático. Solucione este problema de la siguiente manera:

   1. Para comprobar qué evento de enlace de ciclo de vida del escalado automático está fallando, consulte [Verificación de una actividad de escalado para un grupo de escalado automático](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-verify-scaling-activity.html) en la Guía del usuario de Amazon EC2 Auto Scaling.

   1. Si el nombre del enlace que falla es`CodeDeploy-managed-automatic-launch-deployment-hook-DEPLOYMENT_GROUP_NAME`, vaya a CodeDeploy, busque el grupo de despliegue y busque el despliegue fallido que se inició con Auto Scaling. A continuación, investigue por qué falló la implementación.

   1. Si entiende por qué falló la implementación (por ejemplo, si se producían CloudWatch alarmas) y puede solucionar el problema sin cambiar la revisión, hágalo ahora.

   1. Si, tras una investigación, determina que CodeDeploy la *última revisión correcta* ya no está en buen estado y que no hay ninguna instancia en buen estado en su grupo de Auto Scaling, se encuentra en un escenario de bloqueo de despliegue. Para resolver este problema, debe corregir la CodeDeploy revisión defectuosa eliminando temporalmente el enlace CodeDeploy de ciclo de vida del grupo Auto Scaling y, a continuación, reinstalando el enlace y volviendo a implementar una revisión nueva (buena). Para obtener instrucciones, consulte:
      + [To fix the deployment deadlock issue (CLI)](#ToFixDeployDeadlockCLI)
      + [To fix the deployment deadlock issue (console)](#ToFixDeployDeadlockConsole)

**Para solucionar el problema de bloqueo de la implementación (CLI)**

1. (Opcional) Bloquee CI/CD las canalizaciones que están causando el CodeDeploy error para que no se produzcan despliegues inesperados mientras soluciona el problema.

1. Toma nota de tu **DesiredCapacity**configuración actual de Auto Scaling:

   `aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name ASG_NAME`

   Puede que tenga que volver a escalar a este número al final de este procedimiento.

1. Establezca la **DesiredCapacity**configuración de Auto Scaling en`1`. Esto es opcional si la capacidad deseada era mayor que `1` al comienzo. Al reducirla a `1`, la instancia tardará menos tiempo en aprovisionarse e implementarse más adelante, lo que agiliza la resolución de problemas. Si la capacidad deseada del escalado automático estaba configurada originalmente en `0`, debe aumentarla a `1`. Esto es obligatorio. 

   como escalado automático set-desired-capacity -- auto-scaling-group-name *ASG\$1NAME* --desired-capacity 1 
**nota**  
En el resto de los pasos de este procedimiento se da por sentado que ha configurado su. **DesiredCapacity**`1`

   En este punto, el escalado automático intenta escalar a una instancia. Luego, debido a que el gancho CodeDeploy agregado aún está presente, CodeDeploy intenta desplegarla; la implementación falla; Auto Scaling cancela la instancia; y Auto Scaling intenta volver a lanzar una instancia para alcanzar la capacidad deseada de una, lo que nuevamente falla. Se encuentra en un ciclo de cancelación-relanzamiento.

1. Anule el registro del grupo de escalado automático del grupo de implementación:
**aviso**  
El siguiente comando lanzará una nueva instancia de EC2 sin software. Antes de ejecutar el comando, asegúrese de que una instancia `InService` de escalado automático que no ejecute ningún software sea aceptable. Por ejemplo, asegúrese de que el equilibrador de carga asociado a la instancia no envíe tráfico a este host sin software.
**importante**  
Utilice el CodeDeploy comando que se muestra a continuación para eliminar el gancho. No retire el gancho a través del servicio Auto Scaling, ya que la extracción no será reconocida por CodeDeploy. 

   `aws deploy update-deployment-group --application-name APPLICATION_NAME --current-deployment-group-name DEPLOYMENT_GROUP_NAME --auto-scaling-groups`

   Después de ejecutar este comando, ocurre lo siguiente:

   1. CodeDeploy anula el registro del grupo Auto Scaling del grupo de despliegue.

   1. CodeDeploy elimina el enlace del ciclo de vida de Auto Scaling del grupo Auto Scaling.

   1. Como el enlace que estaba provocando una implementación con error ya no está presente, el escalado automático cancela la instancia de EC2 existente e inmediatamente lanza una nueva para escalarla a la capacidad deseada. La nueva instancia debería pasar pronto al estado `InService`. La nueva instancia no incluye software.

1. Espere a que el estado de la instancia sea `InService`. Para verificar el estado, utilice el comando siguiente:

   `aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names ASG_NAME --query AutoScalingGroups[0].Instances[*].LifecycleState`

1. Vuelva a añadir el enlace a la instancia de EC2:
**importante**  
Utilice el CodeDeploy comando que se muestra a continuación para añadir el gancho. No utilice el servicio Auto Scaling para añadir el gancho, ya que la adición no será reconocida por CodeDeploy. 

   `aws deploy update-deployment-group --application-name APPLICATION_NAME --current-deployment-group-name DEPLOYMENT_GROUP_NAME --auto-scaling-groups ASG_NAME`

   Después de ejecutar este comando, ocurre lo siguiente:

   1. CodeDeploy vuelve a instalar el enlace del ciclo de vida de Auto Scaling en la instancia EC2

   1. CodeDeploy vuelve a registrar el grupo de Auto Scaling con el grupo de despliegue.

1. Cree una implementación en toda la flota con Amazon S3 o una GitHub revisión que sepa que está en buen estado y desea usar.

   Por ejemplo, si la revisión es un archivo .zip de un bucket de Amazon S3 llamado `my-revision-bucket` con una clave de objeto de `httpd_app.zip`, introduzca el siguiente comando:

   `aws deploy create-deployment --application-name APPLICATION_NAME --deployment-group-name DEPLOYMENT_GROUP_NAME --revision "revisionType=S3,s3Location={bucket=my-revision-bucket,bundleType=zip,key=httpd_app.zip}"`

   Como ahora hay una instancia `InService` en el grupo de escalado automático, esta implementación debería funcionar y ya no debería aparecer el error *La implementación falló porque no se encontró ninguna instancia para su grupo de implementación*.

1. Una vez que la implementación se haya realizado correctamente, escale el grupo de escalado automático de nuevo a la capacidad original, si lo escaló anteriormente:

   `aws autoscaling set-desired-capacity --auto-scaling-group-name ASG_NAME --desired-capacity ORIGINAL_CAPACITY`

**Para solucionar el problema de bloqueo de la implementación (consola)**

1. (Opcional) Bloquee CI/CD las canalizaciones que están causando el CodeDeploy error para que no se produzcan despliegues inesperados mientras soluciona el problema.

1. Vaya a la consola de Amazon EC2 y tome nota de la configuración de **Capacidad deseada** del escalado automático. Puede que tenga que volver a escalar a este número al final de este procedimiento. Para obtener información sobre cómo encontrar esta configuración, consulte [Establecer límites de capacidad en su grupo de escalado automático](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-capacity-limits.html).

1. Establezca el número deseado de instancias de EC2 en `1`:

   Esto es opcional si la capacidad deseada era mayor que `1` al comienzo. Al reducirla a `1`, la instancia tardará menos tiempo en aprovisionarse e implementarse más adelante, lo que agiliza la resolución de problemas. Si la **Capacidad deseada** del escalado automático estaba configurada originalmente en `0`, debe aumentarla a `1`. Esto es obligatorio. 
**nota**  
En el resto de los pasos de este procedimiento se supone que ha establecido **Capacidad deseada** en `1`.

   1. Abra la consola Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)y seleccione **Auto Scaling Groups** en el panel de navegación.

   1. Elija la región apropiada.

   1. Vaya al grupo de escalado automático problemático.

   1. En **Detalles del grupo**, seleccione **Editar**.

   1. Establezca **Capacidad deseada** en **1**.

   1. Elija **Actualizar**.

1. Anule el registro del grupo de escalado automático del grupo de implementación:
**aviso**  
Los siguientes pasos secundarios lanzarán una nueva instancia de EC2 sin software. Antes de ejecutar el comando, asegúrese de que una instancia `InService` de escalado automático que no ejecute ningún software sea aceptable. Por ejemplo, asegúrese de que el equilibrador de carga asociado a la instancia no envíe tráfico a este host sin software.

   1. Abra la CodeDeploy consola en. [https://console.aws.amazon.com/codedeploy/](https://console.aws.amazon.com/codedeploy/)

   1. Elija la región apropiada.

   1. En el panel de navegación, elija **Aplicaciones**.

   1. Elija el nombre de la CodeDeploy aplicación.

   1. Elija el nombre de su grupo CodeDeploy de implementación.

   1. Elija **Editar**.

   1. En **Configuración del entorno**, deseleccione los grupos de **Amazon EC2 Auto Scaling**.
**nota**  
La consola no le permite guardar la configuración si no hay ninguna configuración de entorno definida. Para evitar esta comprobación, añada temporalmente una etiqueta de `EC2` o `On-premises` que sepa que no se resolverá en ningún host. Para añadir una etiqueta, seleccione **Instancias de Amazon EC2** o **Instancia en las instalaciones** y añada una etiqueta **Clave** de **EC2** o **On-premises**. Puede dejar el **valor** de la etiqueta vacío.

   1. Seleccione **Save changes (Guardar cambios)**.

      Después de completar estos pasos secundarios, ocurre lo siguiente:

      1. CodeDeploy anula el registro del grupo Auto Scaling del grupo de despliegue.

      1. CodeDeploy elimina el enlace del ciclo de vida de Auto Scaling del grupo Auto Scaling.

      1. Como el enlace que estaba provocando una implementación con error ya no está presente, el escalado automático cancela la instancia de EC2 existente e inmediatamente lanza una nueva para escalarla a la capacidad deseada. La nueva instancia debería pasar pronto al estado `InService`. La nueva instancia no incluye software.

1. Espere a que el estado de la instancia sea `InService`. Para verificar su estado:

   1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

   1. En el panel de navegación, elija **Auto Scaling Groups (Grupos de )**.

   1. Elija el grupo de escalado automático.

   1. En el panel de contenido, elija la pestaña **Administración de instancias**.

   1. En **Instancias**, asegúrese de que la columna **Ciclo** de vida se indique **InService**junto a la instancia.

1. Vuelva a registrar el grupo de Auto Scaling con el grupo de CodeDeploy despliegue mediante el mismo método que utilizó para eliminarlo:

   1. Abra la CodeDeploy consola en. [https://console.aws.amazon.com/codedeploy/](https://console.aws.amazon.com/codedeploy/)

   1. Elija la región apropiada.

   1. En el panel de navegación, elija **Aplicaciones**.

   1. Elija el nombre de la CodeDeploy aplicación.

   1. Elija el nombre de su grupo CodeDeploy de implementación.

   1. Elija **Edit (Edición de)**.

   1. En **Configuración del entorno**, seleccione **Grupos de Amazon EC2 Auto Scaling** y seleccione su grupo de escalado automático de la lista.

   1. En **Instancias de Amazon EC2** o en **Instancias en las instalaciones**, busque la etiqueta que ha añadido y elimínela.

   1. Anule la selección de la casilla de verificación situada junto a **Instancias de Amazon EC2** o **Instancias en las instalaciones**. 

   1. Seleccione **Save changes (Guardar cambios)**. 

   Esta configuración vuelve a instalar el enlace de ciclo de vida en el grupo de escalado automático.

1. Cree una implementación en toda la flota con Amazon S3 o una GitHub revisión que sepa que está en buen estado y desea usar. 

   Por ejemplo, si la revisión es un archivo .zip de un bucket de Amazon S3 llamado `my-revision-bucket` con una clave de objeto de `httpd_app.zip`, realice lo siguiente:

   1. En la CodeDeploy consola, en la página del **grupo de despliegues, selecciona **Crear** despliegue**.

   1. En **Tipo de revisión**, elija **Mi aplicación está almacenada en Amazon S3**.

   1. En **Ubicación de la revisión**, elija `s3://my-revision-bucket/httpd_app.zip`.

   1. En **Tipo de archivo de revisión**, elija `.zip`.

   1. Elija **Crear implementación**.

   Como ahora hay una instancia `InService` en el grupo de escalado automático, esta implementación debería funcionar y ya no debería aparecer el error *La implementación falló porque no se encontró ninguna instancia para su grupo de implementación*.

1. Una vez que la implementación se haya realizado correctamente, escale el grupo de escalado automático de nuevo a la capacidad original, si lo escaló anteriormente:

   1. Abra la consola Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)y seleccione **Auto Scaling Groups** en el panel de navegación.

   1. Elija la región apropiada.

   1. Vaya al grupo de escalado automático.

   1. En **Detalles del grupo**, seleccione **Editar**.

   1. Vuelva a establecer **Capacidad deseada** en su valor original.

   1. Elija **Actualizar**.

# Códigos de error de AWS CodeDeploy
<a name="error-codes"></a>

Este tema ofrece información de referencia acerca de errores de CodeDeploy.


****  

| Código de error | Descripción | 
| --- | --- | 
| `AGENT_ISSUE` |  La implementación falló debido a un problema con el agente de CodeDeploy. Asegúrese de que el agente está instalado y se ejecuta en todas las instancias de este grupo de implementaciones. Más información: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/codedeploy/latest/userguide/error-codes.html)  | 
| `AUTO_SCALING_IAM_ROLE_PERMISSIONS` |  El rol de servicio asociado a su grupo de implementación no tiene el permiso necesario para llevar a cabo operaciones en el siguiente servicio de AWS. Más información: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/codedeploy/latest/userguide/error-codes.html)  | 
| `HEALTH_CONSTRAINTS` |  La implementación global falló porque fallaron demasiadas instancias individuales de la implementación, hay muy pocas instancias en buen estado disponibles para la implementación o algunas instancias de su grupo de implementaciones tienen problemas. Más información: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/codedeploy/latest/userguide/error-codes.html)  | 
| `HEALTH_CONSTRAINTS_INVALID` |  La implementación no puede comenzar porque no hay el número mínimo de instancias en buen estado, tal como define la configuración de implementación. Puede reducir el número de instancias en buen estado necesario actualizando la configuración de implementación o aumentando el número de instancias de este grupo de implementaciones.  Más información: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/codedeploy/latest/userguide/error-codes.html)  | 
| `IAM_ROLE_MISSING` |  La implementación falló porque no existe ningún rol de servicio con el nombre especificado para el grupo de implementaciones. Asegúrese de que utiliza el nombre de rol de servicio correcto.  Más información: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/codedeploy/latest/userguide/error-codes.html)  | 
| `IAM_ROLE_PERMISSIONS` |  CodeDeploy no tiene los permisos necesarios para asumir un rol, o el rol de IAM que está utilizando no le da permiso para realizar operaciones en un servicio de AWS. Más información: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/codedeploy/latest/userguide/error-codes.html)  | 
| `NO_INSTANCES` |   Esto podría deberse a una de las siguientes causas.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/codedeploy/latest/userguide/error-codes.html) Más información: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/codedeploy/latest/userguide/error-codes.html)  | 
| `OVER_MAX_INSTANCES` |  La implementación falló porque desea implementar más instancias de las que están autorizadas para su cuenta. Para reducir el número de instancias que desea implementar, actualice la configuración de etiqueta de este grupo de implementaciones o elimine algunas de las instancias de destino. También puede ponerse en contacto con AWS Support para solicitar un aumento del límite. Más información: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/codedeploy/latest/userguide/error-codes.html)  | 
| `THROTTLED` |  La implementación falló porque un rol de IAM realizó más solicitudes de las permitidas para AWS CodeDeploy. Intente reducir el número de solicitudes. Más información:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/codedeploy/latest/userguide/error-codes.html)  | 
| `UNABLE_TO_SEND_ASG` |  La implementación falló porque el grupo de implementación no está configurado correctamente con su grupo de Amazon EC2 Auto Scaling. En la consola de CodeDeploy, elimine el grupo de Amazon EC2 Auto Scaling del grupo de implementación y, a continuación, añádalo de nuevo. Más información: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/codedeploy/latest/userguide/error-codes.html)  | 

## Temas relacionados
<a name="error-codes-related-topics"></a>

[Solución de problemas CodeDeploy](troubleshooting.md)