

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.

# Configuración del reintento de una etapa fallida o de acciones fallidas
<a name="stage-retry"></a>

Puede reintentar una etapa que haya fallado sin tener que volver a ejecutar una canalización desde el principio. Para ello, puede volver a intentar las acciones fallidas en una etapa o volver a intentar todas las acciones de la etapa empezando por la primera acción de la misma. Al volver a intentar las acciones fallidas en una etapa, todas las acciones que aún están en curso siguen funcionando y las fallidas se vuelven a activar. Al volver a intentar una etapa fallida desde la primera acción de la etapa, esta no puede tener ninguna acción en curso. Para poder volver a intentar una fase, es necesario que todas las acciones hayan fallado o que algunas hayan fallado y otras se hayan realizado correctamente.

**importante**  
Al volver a intentar una etapa fallida, se vuelven a intentar todas las acciones de la etapa desde la primera acción de la etapa y, al reintentar las acciones fallidas, se reintentan todas las acciones fallidas de la etapa. Esto anula los artefactos de salida de las acciones que anteriormente se habían realizado correctamente en la misma ejecución.   
Aunque se pueden anular los artefactos, se conserva el historial de ejecución de las acciones que anteriormente se habían realizado correctamente.

Si utiliza la consola para ver una canalización, aparece el botón **Reintentar etapa** o el botón **Reintentar acciones fallidas** donde las acciones con errores se pueden reintentar.

Si utiliza la AWS CLI, puede utilizar el **get-pipeline-state** comando para determinar si alguna acción ha fallado.

**nota**  
En los casos siguientes, es posible que no se pueda reintentar las acciones:  
Todas las acciones de la etapa se realizaron correctamente, por lo que la etapa no se encuentra en estado fallido.
La estructura global de la canalización cambió después de producirse el error en la etapa.
Ya se está intentando otro reintento en la etapa.

**Topics**
+ [Consideraciones sobre el reintento de etapas](#stage-retry-considerations)
+ [Reintento de una etapa fallida manualmente](#stage-retry-manual)
+ [Configuración de una etapa para el reintento automático en caso de fallo](#stage-retry-auto)

## Consideraciones sobre el reintento de etapas
<a name="stage-retry-considerations"></a>

Los aspectos sobre el reintento de etapas que se deben tener en cuenta son los siguientes:
+ Solo se puede configurar el reintento automático en etapas fallidas para un reintento.
+ Se puede configurar el reintento automático en etapas fallidas para todas las acciones, incluidas las acciones `Source`.

## Reintento de una etapa fallida manualmente
<a name="stage-retry-manual"></a>

Puede reintentar manualmente una etapa fallida mediante la consola o la CLI.

También puede configurar una etapa para que se reintente automáticamente en caso de fallo, como se detalla en [Configuración de una etapa para el reintento automático en caso de fallo](#stage-retry-auto). 

### Reintento de una etapa fallida manualmente (consola)
<a name="stage-retry-console"></a><a name="proc-stage-retry-console"></a>

**Para volver a intentar una etapa fallida o realizar acciones fallidas en una etapa (consola)**

1. Inicie sesión en la CodePipeline consola Consola de administración de AWS y ábrala en [http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

   Se muestran los nombres de todas las canalizaciones asociadas a tu AWS cuenta.

1.  En **Name**, elija el nombre de la canalización. 

1. Ubique la etapa con la acción que ha dado error y después elija una de las siguientes opciones.
   + Para volver a intentar todas las acciones de la etapa, seleccione **Reintentar etapa**.
   + Para volver a intentar solo las acciones fallidas de la fase, seleccione **Reintentar acciones fallidas**.   
![Un ejemplo de canalización con una etapa CodeCommit de origen y una etapa de CodeDeploy implementación fallida](http://docs.aws.amazon.com/es_es/codepipeline/latest/userguide/images/retry-failed-stage.png)

   Si todas las acciones que se vuelven a intentar en la etapa se completan correctamente, la canalización se sigue ejecutando.

### Reintento de una etapa fallida manualmente (CLI)
<a name="stage-retry-cli"></a>

**Para volver a intentar una etapa fallida o realizar acciones fallidas en una etapa - CLI**

Para utilizar el AWS CLI para volver a intentar todas las acciones o todas las acciones fallidas, ejecute el **retry-stage-execution** comando con los siguientes parámetros: 

```
--pipeline-name <value>
--stage-name <value>
--pipeline-execution-id <value>
--retry-mode ALL_ACTIONS/FAILED_ACTIONS
```
**nota**  
Los valores que puede utilizar para `retry-mode` son `FAILED_ACTIONS` y `ALL_ACTIONS`.

1. En una terminal (Linux, macOS o Unix) o el símbolo del sistema (Windows), ejecute el comando [https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-state.html](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-state.html), tal y como se muestra en el siguiente ejemplo para una canalización denominada `MyPipeline`.

   ```
   aws codepipeline retry-stage-execution --pipeline-name MyPipeline --stage-name Deploy --pipeline-execution-id b59babff-5f34-EXAMPLE --retry-mode FAILED_ACTIONS
   ```

   La salida devuelve el ID de ejecución:

   ```
   {
       "pipelineExecutionId": "b59babff-5f34-EXAMPLE"
   }
   ```

1. También puede ejecutar el comando con un archivo de entrada JSON. Primero debe crear un archivo JSON que identifique la canalización, la etapa que incluye las acciones fallidas y la ejecución más reciente de la canalización en esa etapa. Ejecute el comando **retry-stage-execution** con el parámetro `--cli-input-json`. Para recuperar los detalles que necesita para el archivo JSON, es más fácil usar el comando **get-pipeline-state**.

   1. En un terminal (Linux, macOS o Unix) o símbolo del sistema (Windows), ejecute el comando [https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-state.html](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/get-pipeline-state.html) en una canalización. Por ejemplo, en el caso de una canalización denominada MyFirstPipeline, escribirías algo parecido a lo siguiente:

      ```
      aws codepipeline get-pipeline-state --name {{MyFirstPipeline}}
      ```

      La respuesta al comando incluye información de estado de la canalización para cada etapa. En el siguiente ejemplo, la respuesta indica que una o más acciones han fallado en la etapa de ensayo (Staging):

      ```
      {
          "updated": 1427245911.525,
          "created": 1427245911.525,
          "pipelineVersion": 1,
          "pipelineName": "MyFirstPipeline",
          "stageStates": [
              {
                  "actionStates": [...],
                  "stageName": "Source",
                  "latestExecution": {
                      "pipelineExecutionId": "9811f7cb-7cf7-SUCCESS",
                      "status": "Succeeded"
                  }
              },
              {{{
                  "actionStates": [...],
                  "stageName": "Staging",
                  "latestExecution": {
                      "pipelineExecutionId": "3137f7cb-7cf7-EXAMPLE",
                      "status": "Failed"
                  }}}
              }
          ]
      }
      ```

   1. En un editor de texto sin formato, cree un archivo en el que registrará la siguiente información en formato JSON:
      + El nombre de la canalización que incluye las acciones fallidas
      + El nombre de la etapa que incluye las acciones fallidas
      + El ID de la última ejecución de la canalización en la etapa
      + El modo de volver a intentarlo.

      En el MyFirstPipeline ejemplo anterior, el archivo tendría un aspecto similar al siguiente:

      ```
      {
          "pipelineName": "MyFirstPipeline",
          "stageName": "Staging",
          "pipelineExecutionId": "3137f7cb-7cf7-EXAMPLE",
          "retryMode": "FAILED_ACTIONS"
      }
      ```

   1. Guarde el archivo con un nombre como **retry-failed-actions.json**.

   1. Llame el archivo que creó al ejecutar el comando [https://docs.aws.amazon.com/cli/latest/reference/codepipeline/retry-stage-execution.html](https://docs.aws.amazon.com/cli/latest/reference/codepipeline/retry-stage-execution.html). Por ejemplo:
**importante**  
Asegúrese de incluir `file://` antes del nombre de archivo. Es obligatorio en este comando.

      ```
      aws codepipeline retry-stage-execution --cli-input-json file://retry-failed-actions.json
      ```

   1. Para ver los resultados del reintento, abra la CodePipeline consola y elija la canalización que contenga las acciones que fallaron o vuelva a utilizar el **get-pipeline-state** comando. Para obtener más información, consulte [Vea las canalizaciones y los detalles en CodePipeline](pipelines-view.md). 

## Configuración de una etapa para el reintento automático en caso de fallo
<a name="stage-retry-auto"></a>

Puede configurar una etapa para el reintento automático en caso de fallo. La etapa realizará un reintento y mostrará el estado del reintento en la etapa fallida en la página **Ver** de la canalización.

Para configurar el modo de reintento, especifique que la etapa debe reintentar automáticamente todas las acciones en la etapa fallida, o bien solo las acciones fallidas en la etapa.

### Configuración de una etapa para el reintento automático en caso de fallo (consola)
<a name="stage-retry-auto-console"></a>

Puede utilizar la consola para configurar un reintento automático en una etapa.

**Configuración de una etapa para el reintento automático (consola)**

1. Inicie sesión en la CodePipeline consola Consola de administración de AWS y ábrala en [http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

   Se muestran los nombres y el estado de todas las canalizaciones asociadas a tu AWS cuenta. 

1. En **Nombre**, elija el nombre de la canalización que desea editar.

1. En la página de detalles de la canalización, elija **Edit**.

1. En la página **Editar**, para la acción que desee editar, elija **Editar etapa**.

1. Seleccione **Configuración automatizada de escenarios** y, a continuación, seleccione **Habilitar el reintento automático en caso de fallo de una etapa**. Guarde los cambios en la canalización.

1. En **Configuración automatizada de escenarios** elija uno de los siguientes modos de reintento:
   + Para especificar que el modo reintentará todas las acciones en la etapa, seleccione **Reintentar etapa fallida**.
   + Para especificar que el modo reintentará solo las acciones fallidas en la etapa, seleccione **Reintentar acciones fallidas**.

   Guarde los cambios en la canalización.  
![Un ejemplo de pantalla de edición para configurar el reintento automático en caso de fallo por etapas. CodePipeline](http://docs.aws.amazon.com/es_es/codepipeline/latest/userguide/images/retry-configure.png)

1. Una vez ejecutada la canalización, si se produce un error en la etapa, se realizará el reintento automático. Los siguientes ejemplos muestran una etapa de compilación que se ha reintentado automáticamente.  
![Un ejemplo de canalización con una etapa fallida que se ha reintentado una vez.](http://docs.aws.amazon.com/es_es/codepipeline/latest/userguide/images/stage-auto-retry-example.png)

1. Para ver los detalles del reintento, elija. Aparecerá la ventana.  
![Un ejemplo de la ventana de metadatos de la etapa de reintento que muestra que se ha producido un intento.](http://docs.aws.amazon.com/es_es/codepipeline/latest/userguide/images/retry-stage-metadata.png)

### Configuración de una etapa para el reintento automático (CLI)
<a name="stage-retry-auto-cli"></a>

Si desea configurar una etapa AWS CLI para que se reintente automáticamente en caso de error, utilice los comandos para crear o actualizar una canalización, tal y como se detalla en [Creación de una canalización, etapas y acciones](pipelines-create.md) y. [Editar una canalización en CodePipeline](pipelines-edit.md)
+ Abra un terminal (Linux, macOS o Unix) o el símbolo del sistema (Windows) y utilice la AWS CLI para ejecutar el comando `update-pipeline`, especificando la condición de fallo en la estructura de canalización. En el siguiente ejemplo se configura el reintento automático para una etapa denominada `S3Deploy`: 

  ```
  {
                  "name": "S3Deploy",
                  "actions": [
                      {
                          "name": "s3deployaction",
                          "actionTypeId": {
                              "category": "Deploy",
                              "owner": "AWS",
                              "provider": "S3",
                              "version": "1"
                          },
                          "runOrder": 1,
                          "configuration": {
                              "BucketName": "static-website-bucket",
                              "Extract": "false",
                              "ObjectKey": "SampleApp.zip"
                          },
                          "outputArtifacts": [],
                          "inputArtifacts": [
                              {
                                  "name": "SourceArtifact"
                              }
                          ],
                          "region": "us-east-1"
                      }
                  ],
                   "onFailure": {
                      "result": "RETRY",
                      "retryConfiguration": {
                          "retryMode": "ALL_ACTIONS",
                      },
              }
  ```

### Configuración de una etapa para el reintento automático (CloudFormation)
<a name="stage-retry-auto-cfn"></a>

Para configurar una etapa CloudFormation para el reintento automático en caso de error, utilice el parámetro de ciclo de vida de la `OnFailure` etapa. Utilice el parámetro `RetryConfiguration` para configurar el modo de reintento.

```
OnFailure:
     Result: RETRY
     RetryConfiguration: 
         RetryMode: ALL_ACTIONS
```
+ Actualice la plantilla como se muestra en el fragmento de código siguiente. En el siguiente ejemplo se configura el reintento automático para una etapa denominada `Release`:

  ```
  AppPipeline: 
    Type: AWS::CodePipeline::Pipeline 
    Properties: 
      RoleArn:
        Ref: CodePipelineServiceRole 
      Stages: 
        - 
          Name: Source 
          Actions: 
            - 
              Name: SourceAction
              ActionTypeId: 
                Category: Source 
                Owner: AWS 
                Version: 1 
                Provider: S3 
              OutputArtifacts: 
                - 
                  Name: SourceOutput 
              Configuration: 
                S3Bucket: 
                  Ref: SourceS3Bucket 
                S3ObjectKey: 
                  Ref: SourceS3ObjectKey 
              RunOrder: 1  
        - 
          Name: Release 
          Actions: 
            - 
              Name: ReleaseAction
              InputArtifacts: 
                - 
                  Name: SourceOutput 
              ActionTypeId: 
                Category: Deploy 
                Owner: AWS 
                Version: 1
                Provider: CodeDeploy 
              Configuration: 
                ApplicationName: 
                  Ref: ApplicationName
                DeploymentGroupName: 
                  Ref: DeploymentGroupName 
              RunOrder: 1   
         OnFailure:
             Result: RETRY
             RetryConfiguration: 
                RetryMode: ALL_ACTIONS
      ArtifactStore: 
        Type: S3 
        Location:
          Ref: ArtifactStoreS3Location 
        EncryptionKey:
          Id: arn:aws:kms:useast-1:ACCOUNT-ID:key/KEY-ID
          Type: KMS
      DisableInboundStageTransitions: 
        - 
          StageName: Release 
          Reason: "Disabling the transition until integration tests are completed"
      Tags:
        - Key: Project
          Value: ProjectA
        - Key: IsContainerBased
          Value: 'true'
  ```

  Para obtener más información sobre la configuración del reintento por etapas en caso de error, consulte la [OnFailure](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-pipeline-stagedeclaration.html#cfn-codepipeline-pipeline-stagedeclaration-onfailure)sección siguiente de la `StageDeclaration` Guía del *CloudFormation usuario*.