Uso compartido de recursos de computación entre acciones - Amazon CodeCatalyst

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

De forma predeterminada, las acciones de un flujo de trabajo se ejecutan en instancias independientes de una flota. 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.

Ejecución de varias acciones en recursos de computación compartidos

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.

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.

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 y Almacenamiento en caché de archivos entre ejecuciones de flujos de trabajo.

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.

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

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

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/.

  2. Elija el proyecto.

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

  4. Elija el nombre del flujo de trabajo.

  5. Elija Editar.

  6. Elija Visual.

  7. Elija Propiedades del flujo de trabajo.

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

  9. (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 y Asignación de una flota o computación a una acción.

  10. 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.

  11. (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.

  12. 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/.

  2. Elija el proyecto.

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

  4. Elija el nombre del flujo de trabajo.

  5. Elija Editar.

  6. Elija YAML.

  7. 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 y Asignación de una flota o computación a una acción.

    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: ... ...
  8. (Opcional) Seleccione Validar para validar el código de YAML del flujo de trabajo antes de confirmarlo.

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

Ejemplos

Ejemplo: Amazon S3 Publish

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