

Amazon ya no CodeCatalyst está abierto a nuevos clientes. Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte [Cómo migrar desde CodeCatalyst](migration.md).

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.

# Uso compartido de recursos de computación entre acciones
<a name="compute-sharing"></a>

De forma predeterminada, las acciones de un flujo de trabajo se ejecutan en instancias independientes de una [flota](workflows-working-compute.md#compute.fleets). Este comportamiento proporciona a las acciones aislamiento y previsibilidad en cuanto al estado de las entradas. El comportamiento predeterminado requiere una configuración explícita para compartir el contexto, como archivos y variables, entre las acciones. 

El uso compartido de recursos de computación es una funcionalidad que permite ejecutar todas las acciones de un flujo de trabajo en la misma instancia. El uso compartido de recursos de computación puede proporcionar tiempos de ejecución del flujo de trabajo más rápidos, ya que se dedica menos tiempo a aprovisionar instancias. También puede compartir archivos (artefactos) entre las acciones sin necesidad de una configuración adicional del flujo de trabajo.

Cuando un flujo de trabajo se ejecuta mediante el uso compartido de recursos de computación, se reserva una instancia de la flota predeterminada o especificada durante todas las acciones de ese flujo de trabajo. Cuando se completa la ejecución del flujo de trabajo, se libera la reserva de la instancia.

**Topics**
+ [Ejecución de varias acciones en recursos de computación compartidos](#how-to-compute-share)
+ [Consideraciones sobre el uso compartido de recursos de computación](#compare-compute-sharing)
+ [Activación del uso compartido de recursos de computación](#compute-sharing-steps)
+ [Ejemplos](#compute-sharing-examples)

## Ejecución de varias acciones en recursos de computación compartidos
<a name="how-to-compute-share"></a>

Puede usar el atributo `Compute` de la definición de YAML en el nivel del flujo de trabajo para especificar las propiedades de los recursos compartidos de flota y computación de las acciones. También puede configurar las propiedades de computación con el editor visual de CodeCatalyst. Para especificar una flota, defina el nombre de una flota existente, establezca el tipo de computación en **EC2** y active el uso compartido de recursos de computación.

**nota**  
El uso compartido de recursos de computación solo se admite si el tipo de procesamiento está configurado en **EC2** y no es compatible con el sistema operativo Windows Server 2022. Para obtener más información sobre las flotas de computación, los tipos de computación y las propiedades, consulte [Configuración de imágenes de computación y tiempo de ejecución](workflows-working-compute.md).

**nota**  
Si trabaja en el nivel gratuito y especifica la flota de `Linux.x86-64.XLarge` o `Linux.x86-64.2XLarge` manualmente en la definición de flujo de trabajo de YAML, la acción seguirá ejecutándose en la flota predeterminada (`Linux.x86-64.Large`). Para obtener más información sobre la disponibilidad de computación y los precios, consulte la [tabla con las opciones de los niveles](https://codecatalyst.aws/explore/pricing). 

Cuando el uso compartido de recursos de computación está activado, la carpeta que contiene el código fuente del flujo de trabajo se copia automáticamente en todas las acciones. No es necesario configurar los artefactos de salida ni hacer referencia a ellos como artefactos de entrada en una definición de flujo de trabajo (archivo YAML). Como autor de un flujo de trabajo, debe configurar las variables de entorno mediante entradas y salidas, del mismo modo que lo haría si no utilizara el uso compartido de recursos de computación. Si quiere compartir carpetas entre acciones ajenas al código fuente del flujo de trabajo, considere la posibilidad de almacenar los archivos en caché. Para obtener más información, consulte [Cómo compartir artefactos y archivos entre acciones](workflows-working-artifacts.md) y [Almacenamiento en caché de archivos entre ejecuciones de flujos de trabajo](workflows-caching.md).

El repositorio de código fuente en el que reside el archivo de definición del flujo de trabajo se identifica mediante la etiqueta `WorkflowSource`. Al utilizar el uso compartido de recursos de computación, el código fuente del flujo de trabajo se descarga en la primera acción que hace referencia a él y queda automáticamente disponible para que lo utilicen las siguientes acciones de la ejecución del flujo de trabajo. Cualquier cambio realizado en la carpeta que contiene el código fuente del flujo de trabajo mediante una acción, como añadir, modificar o eliminar archivos, también estará visible en las acciones siguientes del flujo de trabajo. Puede hacer referencia a los archivos que se encuentran en la carpeta de código fuente del flujo de trabajo en cualquiera de las acciones del flujo de trabajo, del mismo modo que lo haría si no utilizara el uso compartido de recursos de computación. Para obtener más información, consulte [Referencia a los archivos del repositorio de código fuente](workflows-sources-reference-files.md).

**nota**  
Los flujos de trabajo con recursos de computación compartidos deben especificar una secuencia estricta de acciones, por lo que no se pueden configurar acciones paralelas. Aunque se pueden configurar artefactos de salida en cualquier acción de la secuencia, no se admiten artefactos de entrada.

## Consideraciones sobre el uso compartido de recursos de computación
<a name="compare-compute-sharing"></a>

Puede ejecutar flujos de trabajo con recursos de computación compartidos para acelerar las ejecuciones de los flujos de trabajo y compartir el contexto entre las acciones de un flujo de trabajo que utilizan la misma instancia. Tenga en cuenta lo siguiente para determinar si el uso compartido de recursos de computación es adecuado para su escenario:


|   | Con uso compartido de recursos de computación | Sin uso compartido de recursos de computación | 
| --- | --- | --- | 
|  Tipo de computación  |  Amazon EC2  |  Amazon EC2, AWS Lambda  | 
|  Aprovisionamiento de instancias  |  Las acciones se ejecutan en la misma instancia  |  Las acciones se ejecutan en instancias distintas  | 
|  Sistema operativo  |  Amazon Linux 2  |  Amazon Linux 2, Windows Server 2022 (solo acción de compilación)  | 
|  Referencia a archivos  |  `$CATALYST_SOURCE_DIR_WorkflowSource`, `/sources/WorkflowSource/`  |  `$CATALYST_SOURCE_DIR_WorkflowSource`, `/sources/WorkflowSource/`  | 
|  Estructura de flujo de trabajo  |  Las acciones solo se pueden ejecutar de forma secuencial  |  Las acciones se pueden ejecutar en paralelo  | 
|  Acceder a los datos en las acciones del flujo  |  Acceder al código fuente del flujo de trabajo en caché (`WorkflowSource`)  |  Acceder a las salidas de artefactos compartidos (requiere configuración adicional)  | 

## Activación del uso compartido de recursos de computación
<a name="compute-sharing-steps"></a>

Utilice la siguiente instrucción para activar el uso compartido de recursos de computación en un flujo de trabajo.

------
#### [ Visual ]

**Activación del uso compartido de recursos de computación mediante el editor visual**

1. Abra la consola de CodeCatalyst en [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Elija el proyecto.

1. En el panel de navegación, elija **CI/CD** y, a continuación, elija **Flujos de trabajo**.

1. Elija el nombre del flujo de trabajo.

1. Seleccione **Editar**.

1. Elija **Visual**.

1. Elija **Propiedades del flujo de trabajo**.

1. En el menú desplegable **Tipo de computación**, elija **EC2**.

1. (Opcional) En el menú desplegable **Flota de computación (opcional)**, seleccione la flota que quiera usar para ejecutar las acciones del flujo de trabajo. Puede elegir una flota bajo demanda o crear y elegir una flota aprovisionada. Para obtener más información, consulte [Edición de una flota aprovisionada](projects-create-compute-resource.md) y [Asignación de una flota o computación a una acción](workflows-assign-compute-resource.md). 

1. Pulse el botón de alternancia para activar el uso compartido de recursos de computación y hacer que las acciones del flujo de trabajo se ejecuten en la misma flota.

1. (Opcional) Elija el modo de ejecución del flujo de trabajo. Para obtener más información, consulte [Configuración del comportamiento de puesta en cola de las ejecuciones](workflows-configure-runs.md).

1. Seleccione **Confirmar**, introduzca un mensaje de confirmación y vuelva a seleccionar **Confirmar**.

------
#### [ YAML ]

**Activación del uso compartido de recursos de computación mediante el editor de YAML**

1. Abra la consola de CodeCatalyst en [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Elija el proyecto.

1. En el panel de navegación, elija **CI/CD** y, a continuación, elija **Flujos de trabajo**.

1. Elija el nombre del flujo de trabajo.

1. Seleccione **Editar**.

1. Elija **YAML**.

1. Active la opción de uso compartido de recursos de computación estableciendo el campo `SharedInstance` en `TRUE` y `Type` en `EC2`. Establezca `Fleet` en la flota de computación que desee usar para ejecutar acciones del flujo de trabajo. Puede elegir una flota bajo demanda o crear y elegir una flota aprovisionada. Para obtener más información, consulte [Edición de una flota aprovisionada](projects-create-compute-resource.md) y [Asignación de una flota o computación a una acción](workflows-assign-compute-resource.md).

   En un flujo de trabajo de YAML, añada código similar al siguiente:

   ```
     Name: MyWorkflow
     SchemaVersion: "1.0"
     Compute: # Define compute configuration.
       Type: EC2
       Fleet: MyFleet # Optionally, choose an on-demand or provisioned fleet.
       SharedInstance: true # Turn on compute sharing. Default is False.
     Actions:
       BuildFirst:
         Identifier: aws/build@v1
         Inputs:
           Sources:
             - WorkflowSource
         Configuration:
           Steps:
             - Run: ...
             ...
   ```

1. (Opcional) Seleccione **Validar** para validar el código de YAML del flujo de trabajo antes de confirmarlo.

1. Seleccione **Confirmar**, introduzca un mensaje de confirmación y vuelva a seleccionar **Confirmar**.

------

## Ejemplos
<a name="compute-sharing-examples"></a>

**Topics**
+ [Ejemplo: Amazon S3 Publish](#compute-share-s3)

### Ejemplo: Amazon S3 Publish
<a name="compute-share-s3"></a>

En los siguientes ejemplos de flujo de trabajo se muestra cómo ejecutar la acción Publish de Amazon S3 de dos maneras: primero mediante artefactos de entrada y, a continuación, mediante el uso compartido de recursos de computación. Con el uso compartido de recursos de computación, los artefactos de entrada no son necesarios, ya que se puede acceder al `WorkflowSource` almacenado en caché. Además, el artefacto de salida de la acción Build ya no es necesario. La acción Publish de S3 está configurada para utilizar la propiedad explícita `DependsOn` para mantener las acciones secuenciales; la acción Build debe ejecutarse correctamente para que la acción Publish de S3 se ejecute.
+ Sin el uso compartido de recursos de computación, tiene que usar artefactos de entrada y compartir los resultados con las siguientes acciones:

  ```
  Name: S3PublishUsingInputArtifact
  SchemaVersion: "1.0"
  Actions:
    Build:
      Identifier: aws/build@v1
      Outputs:
        Artifacts:
          - Name: ArtifactToPublish
            Files: [output.zip]
      Inputs:
        Sources:
          - WorkflowSource
      Configuration:
        Steps:
          - Run: ./build.sh # Build script that generates output.zip
    PublishToS3:
      Identifier: aws/s3-publish@v1
      Inputs:
        Artifacts:
        - ArtifactToPublish
      Environment:
        Connections:
          - Role: codecatalyst-deployment-role
            Name: dev-deployment-role
        Name: dev-connection
      Configuration:
        SourcePath: output.zip
        DestinationBucketName: amzn-s3-demo-bucket
  ```
+ Si utiliza el uso compartido de recursos de computación estableciendo `SharedInstance` en `TRUE`, puede ejecutar varias acciones en la misma instancia y compartir artefactos especificando un único código fuente del flujo de trabajo. Los artefactos de entrada no son obligatorios y no se pueden especificar:

  ```
  Name: S3PublishUsingComputeSharing
  SchemaVersion: "1.0"
  Compute: 
    Type: EC2
    Fleet: dev-fleet
    SharedInstance: TRUE
  Actions:
    Build:
      Identifier: aws/build@v1
      Inputs:
        Sources:
          - WorkflowSource
      Configuration:
        Steps:
          - Run: ./build.sh # Build script that generates output.zip
    PublishToS3:
      Identifier: aws/s3-publish@v1
      DependsOn: 
        - Build
      Environment:
        Connections:
          - Role: codecatalyst-deployment-role
            Name: dev-deployment-role
        Name: dev-connection
      Configuration:
        SourcePath: output.zip
        DestinationBucketName: amzn-s3-demo-bucket
  ```