

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.

# Configuración de imágenes de computación y tiempo de ejecución
<a name="workflows-working-compute"></a>

En un CodeCatalyst flujo de trabajo, puede especificar la imagen del entorno de procesamiento y tiempo de ejecución que se CodeCatalyst utiliza para ejecutar las acciones del flujo de trabajo.

El término *cómputo* se refiere al motor informático (la CPU, la memoria y el sistema operativo) que administra y mantiene CodeCatalyst para ejecutar las acciones del flujo de trabajo.

**nota**  
Si la computación se define como una propiedad del flujo de trabajo, no se puede definir como una propiedad de ninguna acción de ese flujo de trabajo. De modo similar, si la computación se define como la propiedad de una acción, no puede definirse en el flujo de trabajo.

Una *imagen de entorno de ejecución* es un contenedor de Docker en el que CodeCatalyst se ejecutan las acciones del flujo de trabajo. El contenedor Docker se ejecuta sobre la plataforma de procesamiento elegida e incluye un sistema operativo y herramientas adicionales que una acción de flujo de trabajo podría necesitar, como Node.js y.tar. AWS CLI

**Topics**
+ [Tipos de computación](#compute.types)
+ [Flotas de computación](#compute.fleets)
+ [Propiedades de las flotas bajo demanda](#compute.on-demand)
+ [Propiedades de flotas aprovisionadas](#compute.provisioned-fleets)
+ [Edición de una flota aprovisionada](projects-create-compute-resource.md)
+ [Edición de una flota aprovisionada](edit-compute-resource.md)
+ [Eliminación de una flota aprovisionada](delete-compute-resource.md)
+ [Asignación de una flota o computación a una acción](workflows-assign-compute-resource.md)
+ [Uso compartido de recursos de computación entre acciones](compute-sharing.md)
+ [Especificación de imágenes del entorno en tiempo de ejecución](build-images.md)

## Tipos de computación
<a name="compute.types"></a>

CodeCatalyst ofrece los siguientes tipos de procesamiento:
+ Amazon EC2
+ AWS Lambda

Amazon EC2 ofrece una flexibilidad optimizada durante las ejecuciones de acciones y Lambda ofrece velocidades optimizadas de inicio de las acciones. Lambda permite ejecutar acciones de flujo de trabajo más rápidas debido a una latencia de inicio más baja. Lambda le permite ejecutar flujos de trabajo básicos que permiten compilar, probar e implementar aplicaciones sin servidor con tiempos de ejecución comunes. Entre estos tiempos de ejecución se incluyen Node.js, Python, Java, .NET y Go. Sin embargo, hay algunos casos de uso con los que Lambda no es compatible; si esto le afecta, utilice el tipo de computación de Amazon EC2:
+ Lambda no es compatible con imágenes de entorno de tiempo de ejecución de un registro específico.
+ Lambda no admite herramientas que requieran permisos raíz. En el caso de herramientas como `yum` o `rpm`, utilice el tipo de computación de Amazon EC2 u otras herramientas que no requieran permisos raíz.
+ Lambda no admite compilaciones ni ejecuciones de Docker. No se admiten las siguientes acciones que utilizan imágenes de Docker: Deploy AWS CloudFormation stack, Deploy to Amazon ECS, Amazon S3 publish, AWS CDK bootstrap, AWS CDK deploy, AWS Lambda invoke y Actions. GitHub GitHub Las acciones basadas en Docker que se ejecutan dentro de CodeCatalyst GitHub Actions Action tampoco son compatibles con la computación Lambda. Puede utilizar alternativas que no requieran permisos raíz, como Podman.
+ Lambda no admite la escritura en archivos fuera de `/tmp`. Al configurar las acciones de un flujo de trabajo, puede reconfigurar las herramientas para instalar o escribir en `/tmp`. Si tiene una acción de compilación que instale `npm`, asegúrese de configurarla para que instale en `/tmp`.
+ Lambda no es compatible con los tiempos de ejecución de más de 15 minutos.

## Flotas de computación
<a name="compute.fleets"></a>

CodeCatalyst ofrece las siguientes flotas informáticas:
+ Flotas bajo demanda
+ Flotas aprovisionadas

En el caso de las flotas bajo demanda, cuando se inicia una acción de flujo de trabajo, el flujo de trabajo aprovisiona los recursos que necesita. Las máquinas se destruyen cuando finaliza la acción. Solo pagará por la cantidad de minutos durante los que se ejecuten sus acciones. Las flotas bajo demanda están completamente administradas e incluyen capacidades de escalado automático para administrar los picos de demanda.

CodeCatalyst también ofrece flotas aprovisionadas que contienen máquinas alimentadas por Amazon EC2 que son mantenidas por. CodeCatalyst Con las flotas aprovisionadas, configura un conjunto de máquinas dedicadas para ejecutar las acciones del flujo de trabajo. Estas máquinas permanecen inactivas, listas para procesar acciones de forma inmediata. Con flotas aprovisionadas, sus máquinas estarán siempre en funcionamiento e incurrirán en costos mientras estén aprovisionadas.

Para crear, actualizar o eliminar una flota, debe tener el rol de **Administrador del espacio** o el rol de **Administrador del proyecto**.

## Propiedades de las flotas bajo demanda
<a name="compute.on-demand"></a>

CodeCatalyst proporciona las siguientes flotas bajo demanda:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/codecatalyst/latest/userguide/workflows-working-compute.html)

**nota**  
Las especificaciones de las flotas bajo demanda variarán en función del nivel de facturación. Para obtener más información, consulte [Precios](https://codecatalyst.aws/explore/pricing).

Si no se selecciona ninguna flota, CodeCatalyst utiliza`Linux.x86-64.Large`.

## Propiedades de flotas aprovisionadas
<a name="compute.provisioned-fleets"></a>

Una flota aprovisionada contiene las siguientes propiedades: 

**Sistema operativo**  
El sistema operativo. A continuación, se muestran los sistemas operativos disponibles:  
+ Amazon Linux 2
+ Windows Server 2022
**nota**  
Las flotas de Windows solo son compatibles en la acción de compilación. Otras acciones no son compatibles actualmente con Windows.

**Arquitectura**  
Arquitectura del procesador. Están disponibles las siguientes arquitecturas:  
+ x86\$164
+ Arm64

**Tipo de máquina**  
El tipo de máquina de cada instancia. Dispone de los siguientes tipos de máquina:      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/codecatalyst/latest/userguide/workflows-working-compute.html)

**Capacidad**  
El número inicial de máquinas asignadas a la flota, que define el número de acciones que pueden funcionar en paralelo.

**Modo de escalado**  
Define el comportamiento cuando el número de acciones supera la capacidad de la flota.    
**Aprovisionamiento de capacidad adicional bajo demanda**  
Se configuran máquinas adicionales bajo demanda, que se escalan verticalmente de forma automática en respuesta a las nuevas acciones en ejecución y, posteriormente, se reducen verticalmente a la capacidad base a medida que finalizan. Esto puede conllevar costos adicionales, ya que se paga por minuto por cada máquina en ejecución.  
**Esperar hasta que se disponga de capacidad de flota adicional**  
Las ejecuciones de acciones se colocan en una cola hasta que haya una máquina disponible. Esto limita los costos adicionales, ya que no se asignan máquinas adicionales.

# Edición de una flota aprovisionada
<a name="projects-create-compute-resource"></a>

Use las siguientes instrucciones para crear una flota aprovisionada.

**nota**  
Las flotas aprovisionadas se desactivarán tras dos semanas de inactividad. Si se vuelven a utilizar, se reactivarán automáticamente, pero esta reactivación puede provocar una latencia.

**Creación de una flota aprovisionada**

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

1. Elija **Crear flota aprovisionada**.

1. En el campo de texto **Nombre de la flota aprovisionada**, introduzca el nombre de la flota.

1. En el menú desplegable **Sistema operativo**, elija el sistema operativo.

1. En el menú desplegable **Tipo de máquina**, elija el tipo para su máquina.

1. En el campo de texto **Capacidad**, introduzca el número máximo de máquinas en la flota.

1. En el menú desplegable **Modos de escalado**, elija el comportamiento de desbordamiento deseado. Para obtener más información acerca de estos campos, consulte [Propiedades de flotas aprovisionadas](workflows-working-compute.md#compute.provisioned-fleets).

1. Seleccione **Crear**.

Tras crear la flota aprovisionada, estará listo para asignarla a una acción. Para obtener más información, consulte [Asignación de una flota o computación a una acción](workflows-assign-compute-resource.md).

# Edición de una flota aprovisionada
<a name="edit-compute-resource"></a>

Use las siguientes instrucciones para editar una flota aprovisionada.

**nota**  
Las flotas aprovisionadas se desactivarán tras dos semanas de inactividad. Si se vuelven a utilizar, se reactivarán automáticamente, pero esta reactivación puede provocar una latencia.

**Edición de una flota aprovisionada**

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

1. En la lista **Flota aprovisionada**, seleccione la flota que desee editar.

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

1. En el campo de texto **Capacidad**, introduzca el número máximo de máquinas en la flota.

1. En el menú desplegable **Modos de escalado**, elija el comportamiento de desbordamiento deseado. Para obtener más información acerca de estos campos, consulte [Propiedades de flotas aprovisionadas](workflows-working-compute.md#compute.provisioned-fleets).

1. Seleccione **Save**.

# Eliminación de una flota aprovisionada
<a name="delete-compute-resource"></a>

Siga estas instrucciones para eliminar una flota aprovisionada.

**Eliminación de una flota aprovisionada**
**aviso**  
Antes de eliminar una flota aprovisionada, quítela de todas las acciones eliminando la propiedad `Fleet` del código de YAML de la acción. Cualquier acción que siga haciendo referencia a una flota aprovisionada después de eliminarla fallará la próxima vez que se ejecute la acción.

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

1. En la lista **Flota aprovisionada**, seleccione la flota que desee eliminar.

1. Elija **Eliminar**.

1. Escriba **delete** para confirmar la eliminación.

1. Elija **Eliminar**.

# Asignación de una flota o computación a una acción
<a name="workflows-assign-compute-resource"></a>

De forma predeterminada, las acciones de flujo de trabajo utilizan la flota bajo demanda `Linux.x86-64.Large` con un tipo de computación de Amazon EC2. Para usar una flota aprovisionada en su lugar o usar una flota bajo demanda diferente, por ejemplo`Linux.x86-64.2XLarge`, siga estas instrucciones.

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

**Antes de empezar**
+ Si desea asignar una flota aprovisionada, primero debe crear la flota aprovisionada. Para obtener más información, consulte [Edición de una flota aprovisionada](projects-create-compute-resource.md).

**Asignación de una flota aprovisionada o un tipo de flota diferente a una acción**

1. Abre la CodeCatalyst consola 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. Puede filtrar por el nombre del repositorio de código fuente o la ramificación donde esté definido el flujo de trabajo, o bien por el nombre o el estado del flujo de trabajo.

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

1. Elija **Visual**.

1. En el diagrama de flujo de trabajo, elija la acción a la que desee asignar la flota aprovisionada o el nuevo tipo de flota.

1. Elija la pestaña **Configuración**.

1. En **Flota de computación**, haga lo siguiente:

   Especifique la máquina o la flota que ejecutará el flujo de trabajo o las acciones del flujo de trabajo. Con las flotas bajo demanda, cuando se inicia una acción, el flujo de trabajo aprovisiona los recursos que necesita y las máquinas se destruyen cuando finaliza la acción. Ejemplos de flotas bajo demanda: `Linux.x86-64.Large`, `Linux.x86-64.XLarge`. Para obtener más información sobre las flotas bajo demanda, consulte [Propiedades de las flotas bajo demanda](workflows-working-compute.md#compute.on-demand).

   Con las flotas aprovisionadas, configura un conjunto de máquinas dedicadas para ejecutar las acciones del flujo de trabajo. Estas máquinas permanecen inactivas, listas para procesar acciones de forma inmediata. Para obtener más información sobre las flotas aprovisionadas, consulte [Propiedades de flotas aprovisionadas](workflows-working-compute.md#compute.provisioned-fleets).

   Si `Fleet` se omite, el valor predeterminado es `Linux.x86-64.Large`.

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

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

**Antes de empezar**
+ Si desea asignar una flota aprovisionada, primero debe crear la flota aprovisionada. Para obtener más información, consulte [Edición de una flota aprovisionada](projects-create-compute-resource.md).

**Asignación de una flota aprovisionada o un tipo de flota diferente a una acción**

1. Abra la CodeCatalyst consola 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. Puede filtrar por el nombre del repositorio de código fuente o la ramificación donde esté definido el flujo de trabajo, o bien por el nombre o el estado del flujo de trabajo.

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

1. Elija **YAML**.

1. Busque la acción a la que desee asignar la flota aprovisionada o el nuevo tipo de flota.

1. En la acción, añada una propiedad `Compute` y configure `Fleet` según el nombre de la flota o el tipo de flota bajo demanda. Para obtener más información, consulte la descripción de la propiedad `Fleet` en la [Acciones de compilación y prueba de YAML](build-action-ref.md) de la acción.

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

------

# 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
  ```

# Especificación de imágenes del entorno en tiempo de ejecución
<a name="build-images"></a>

Una *imagen de entorno de ejecución* es un contenedor de Docker en el que se ejecutan las acciones del flujo de CodeCatalyst trabajo. El contenedor Docker se ejecuta sobre la plataforma de procesamiento elegida e incluye un sistema operativo y herramientas adicionales que una acción de flujo de trabajo podría necesitar, como Node.js y.tar. AWS CLI

De forma predeterminada, las acciones del flujo de trabajo se ejecutarán en una de las [imágenes activas](#build-curated-images) suministradas y mantenidas por. CodeCatalyst Solo las acciones de compilación y prueba admiten imágenes personalizadas. Para obtener más información, consulte [Asignación de una imagen de Docker de un entorno en tiempo de ejecución personalizada a una acción](#build-images-specify).

**Topics**
+ [Imágenes activas](#build-curated-images)
+ [¿Qué pasa si una imagen activa no incluye las herramientas que necesito?](#build-images-more-tools)
+ [Asignación de una imagen de Docker de un entorno en tiempo de ejecución personalizada a una acción](#build-images-specify)
+ [Ejemplos](#workflows-working-custom-image-ex)

## Imágenes activas
<a name="build-curated-images"></a>

*Las imágenes activas son imágenes* del entorno de ejecución que son totalmente compatibles con las herramientas preinstaladas CodeCatalyst e incluyen dichas herramientas. Actualmente hay dos conjuntos de imágenes activas: uno publicado en marzo de 2024 y otro publicado en noviembre de 2022.

El hecho de que una acción utilice una imagen de marzo de 2024 o de noviembre de 2022 depende de la acción:
+ Las acciones de compilación y prueba que se añadieron a un flujo de trabajo el 26 de marzo de 2024 o después incluirán una sección `Container` en su definición de YAML que especifica explícitamente una [imagen de marzo de 2024](#build.default-image). Si lo desea, puede eliminar la sección `Container` para volver a la imagen de [noviembre de 2022](#build.previous-image).
+ Las acciones de compilación y prueba que se hayan añadido a un flujo de trabajo antes del 26 de marzo de 2024 *no* incluirán ninguna sección `Container` en su definición de YAML y, por lo tanto, utilizarán una [imagen de noviembre de 2022](#build.previous-image). Puede conservar la imagen de noviembre de 2022 o actualizarla. Para actualizar la imagen, abra la acción en el editor visual, elija la pestaña **Configuración** y, a continuación, seleccione la imagen de marzo de 2024 en la lista desplegable **Imagen de Docker del entorno en tiempo de ejecución**. Esta selección añadirá una sección `Container` a la definición de YAML de la acción que se rellenará con la imagen correspondiente de marzo de 2024.
+ Todas las demás acciones utilizarán una [imagen de noviembre de 2022](#build.previous-image) o una [imagen de marzo de 2024](#build.default-image). Para obtener más información, consulte la documentación de la acción. 

**Topics**
+ [Imágenes de marzo de 2024](#build.default-image)
+ [Imágenes de noviembre de 2022](#build.previous-image)

### Imágenes de marzo de 2024
<a name="build.default-image"></a>

Las imágenes de marzo de 2024 son las últimas imágenes proporcionadas por. CodeCatalyst Hay una imagen de marzo de 2024 por type/fleet combinación de cómputo.

En la siguiente tabla, se muestran las herramientas instaladas en cada imagen de marzo de 2024.


**Herramientas de imagen de marzo de 2024**  

| Herramienta | CodeCatalyst Amazon EC2 para Linux x86\$164 - `CodeCatalystLinux_x86_64:2024_03` | CodeCatalyst Lambda para Linux x86\$164 - `CodeCatalystLinuxLambda_x86_64:2024_03` | CodeCatalyst Amazon EC2 para Linux Arm64 - `CodeCatalystLinux_Arm64:2024_03` | CodeCatalyst Lambda para Linux Arm64 - `CodeCatalystLinuxLambda_Arm64:2024_03` | 
| --- | --- | --- | --- | --- | 
| AWS CLI | 2.15.17 | 2.15.17 | 2.15.17 | 2.15.17 | 
| AWS Copiloto CLI | 1.32.1 | 1,32.1 | 1,32.1 | 1,32.1 | 
| Docker | 240,9 | N/A | 24.0.9 | N/A | 
| Docker Compose | 2.23.3 | N/A | 2.23.3 | N/A | 
| Git | 2.43,0 | 2.43,0 | 2.43,0 | 2.43,0 | 
| Go | 1,21,5 | 1.21.5 | 1.21.5 | 1.21.5 | 
| Gradle | 8.5 | 8.5 | 8.5 | 8.5 | 
| Java | Corretto17 | Corretto17 | Corretto17 | Corretto17 | 
| Maven | 3.9.6 | 3.9.6 | 3.9.6 | 3.9.6 | 
| Node.js | 18,19,0 | 18,19,0 | 18,19,0 | 18,19,0 | 
| npm | 102.3 | 10.2.3 | 10.2.3 | 10.2.3 | 
| Python | 3,9,18 | 3.9,18 | 3.9,18 | 3.9,18 | 
| Python3 | 3.11.6 | 3.11.6 | 3.11.6 | 3.11.6 | 
| pip | 22.3.1 | 22.3.1 | 22.3.1 | 22.3.1 | 
| .NET | 8.0.100 | 8.0.100 | 8.0.100 | 8.0.100 | 

### Imágenes de noviembre de 2022
<a name="build.previous-image"></a>

Hay una imagen de noviembre de 2022 por combinación de cómputo type/fleet . También hay una imagen de Windows de noviembre de 2022 disponible con la acción de compilación si ha configurado una [flota aprovisionada](workflows-working-compute.md#compute.fleets).

En la siguiente tabla, se muestran las herramientas instaladas en cada imagen de noviembre de 2022.


**Herramientas de imagen de noviembre de 2022**  

| Herramienta | CodeCatalyst Amazon EC2 para Linux x86\$164 - `CodeCatalystLinux_x86_64:2022_11` | CodeCatalyst Lambda para Linux x86\$164 - `CodeCatalystLinuxLambda_x86_64:2022_11` | CodeCatalyst Amazon EC2 para Linux Arm64 - `CodeCatalystLinux_Arm64:2022_11` | CodeCatalyst Lambda para Linux Arm64 - `CodeCatalystLinuxLambda_Arm64:2022_11` | CodeCatalyst Amazon EC2 para Windows x86\$164 - `CodeCatalystWindows_x86_64:2022_11` | 
| --- | --- | --- | --- | --- | --- | 
| AWS CLI | 2.15.17 | 2.15.17 | 2.15.17 | 2.15.17 | 2.13.19 | 
| AWS Copiloto CLI | 0.6.0 | 0.6.0 | N/A | N/A | 1.30.1 | 
| Docker | 23,01 | N/A | 23.0.1 | N/A | N/A | 
| Docker Compose | 2.16.0 | N/A | 2.16.0 | N/A | N/A | 
| Git | 2.40.0 | 2.40.0 | 2.39,2 | 2.39,2 | 2.42,0 | 
| Go | 1.20.2 | 1.20.2 | 1.20.1 | 1,20.1 | 1.19 | 
| Gradle | 8.0.2 | 8.0.2 | 8.0.1 | 8.0.1 | 8.3 | 
| Java | Corretto17 | Corretto17 | Corretto17 | Corretto17 | Corretto17 | 
| Maven | 3.9.4 | 3.9.4 | 3.9.0 | 3.9.0 | 3.9.4 | 
| Node.js | 16,20,2 | 16,20,2 | 16,19,1 | 16,14.2 | 16,20,0 | 
| npm | 8,19,4 | 8.19,4 | 8.19,3 | 8.5.0 | 8.19,4 | 
| Python | 3,9,15 | 2.7.18 | 3.11.2 | 2.7.18 | 3.9.13 | 
| Python3 | N/A | 3,9,15 | N/A | 3.11.2 | N/A | 
| pip | 22.2.2 | 22.2.2 | 23.0.1 | 23.0.1 | 22.0.4 | 
| .NET | 6.0.407 | 6,0407 | 6,0406 | 6.0.406 | 6.0.414 | 

## ¿Qué pasa si una imagen activa no incluye las herramientas que necesito?
<a name="build-images-more-tools"></a>

Si ninguna de las [imágenes activas](#build-curated-images) suministradas por CodeCatalyst incluye las herramientas que necesita, tiene un par de opciones:
+ Puede proporcionar una imagen de Docker del entorno en tiempo de ejecución personalizada que incluya las herramientas necesarias. Para obtener más información, consulte [Asignación de una imagen de Docker de un entorno en tiempo de ejecución personalizada a una acción](#build-images-specify).
**nota**  
 Si desea proporcionar una imagen de Docker del entorno en tiempo de ejecución personalizada, asegúrese de que la imagen personalizada tenga Git instalado. 
+ Puede hacer que la acción de compilación o prueba del flujo de trabajo instale las herramientas que necesite.

  Por ejemplo, puede incluir las siguientes instrucciones en la sección `Steps` del código de YAML de la acción de compilación o prueba:

  ```
  Configuration:
    Steps:
      - Run: ./setup-script
  ```

  Luego, la *setup-script* instrucción ejecutaría el siguiente script para instalar el administrador de paquetes Node (npm):

  ```
  #!/usr/bin/env bash
  echo "Setting up environment"
  
  touch ~/.bashrc
  curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
  source ~/.bashrc 
  nvm install v16.1.0
  source ~/.bashrc
  ```

  Para obtener más información sobre el código de YAML de la acción de compilación, consulte [Acciones de compilación y prueba de YAML](build-action-ref.md).

## Asignación de una imagen de Docker de un entorno en tiempo de ejecución personalizada a una acción
<a name="build-images-specify"></a>

Si no desea utilizar una imagen de [Active proporcionada por CodeCatalyst, puede proporcionar una imagen](#build-curated-images) de Docker de un entorno de ejecución personalizado. Si quiere proporcionar una imagen personalizada, asegúrese de que tenga Git instalado. La imagen puede residir en Docker Hub, Amazon Elastic Container Registry o cualquier repositorio público.

Para obtener información sobre cómo crear una imagen de Docker personalizada, consulte [Containerize an application](https://docs.docker.com/get-started/02_our_app/) en la documentación de Docker.

Use las siguientes instrucciones para asignar una imagen de Docker del entorno en tiempo de ejecución personalizada a una acción. Tras especificar una imagen, la CodeCatalyst despliega en la plataforma informática cuando se inicia la acción.

**nota**  
Las siguientes acciones no son compatibles con las imágenes de Docker del entorno de ejecución personalizado: **Deploy CloudFormation stack**, **Deploy to ECS** y **GitHub Actions. Las** imágenes de Docker del entorno de ejecución personalizado tampoco admiten el tipo de cálculo **Lambda**.

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

**Asignación de una imagen de Docker del entorno en tiempo de ejecución personalizada mediante el editor visual**

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

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. Puede filtrar por el nombre del repositorio de código fuente o la ramificación donde esté definido el flujo de trabajo, o bien por el nombre o el estado del flujo de trabajo.

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

1. Elija **Visual**.

1. En el diagrama de flujo de trabajo, elija la acción que utilizará la imagen de Docker del entorno en tiempo de ejecución personalizada.

1. Elija la pestaña **Configuración**.

1. Cerca de la parte inferior, complete los siguientes campos.

   **Imagen de Docker del entorno en tiempo de ejecución (opcional)**

   Especifique el registro en el que la imagen está almacenada. Los valores válidos son:
   + `CODECATALYST` (editor de YAML)

     La imagen se guarda en el CodeCatalyst registro.
   + **Docker Hub** (editor visual) o `DockerHub` (editor de YAML)

     La imagen está almacenada en el registro de imágenes de Docker Hub.
   + **Otro registro** (editor visual) o `Other` (editor de YAML)

     La imagen está almacenada en un registro de imágenes personalizado. Se puede utilizar cualquier registro disponible públicamente.
   + **Amazon Elastic Container Registry** (editor visual) o `ECR` (editor de YAML)

     La imagen está almacenada en un repositorio de imágenes de Amazon Elastic Container Registry. Para usar una imagen de un repositorio de Amazon ECR, esta acción necesita acceso a Amazon ECR. Para habilitar este acceso, debe crear un [rol de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) que incluya los siguientes permisos y una política de confianza personalizada. (Si lo desea, puede modificar un rol existente para incluir los permisos y la política).

     El rol de IAM debe incluir los siguientes permisos en su política de rol:
     + `ecr:BatchCheckLayerAvailability`
     + `ecr:BatchGetImage`
     + `ecr:GetAuthorizationToken`
     + `ecr:GetDownloadUrlForLayer`

     El rol de IAM debe incluir la siguiente política de confianza personalizada:

     Para obtener más información sobre cómo crear roles de IAM, consulte [Crear un rol mediante políticas de confianza personalizadas (consola)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) en la *Guía del usuario de IAM*.

     Una vez que haya creado el rol, debe asignarlo a la acción a través de un entorno. Para obtener más información, consulte [Asociación de un entorno a una acción](deploy-environments-add-app-to-environment.md).

   **URL de imagen de ECR**, **Imagen de Docker Hub** o **URL de imagen**

   Especifique uno de los siguientes valores:
   + Si utiliza un registro de `CODECATALYST`, establezca la imagen en una de las siguientes [imágenes activas](#build-curated-images):
     + `CodeCatalystLinux_x86_64:2024_03`
     + `CodeCatalystLinux_x86_64:2022_11`
     + `CodeCatalystLinux_Arm64:2024_03`
     + `CodeCatalystLinux_Arm64:2022_11`
     + `CodeCatalystLinuxLambda_x86_64:2024_03`
     + `CodeCatalystLinuxLambda_x86_64:2022_11`
     + `CodeCatalystLinuxLambda_Arm64:2024_03`
     + `CodeCatalystLinuxLambda_Arm64:2022_11`
     + `CodeCatalystWindows_x86_64:2022_11`
   + Si utiliza un registro de Docker Hub, establezca la imagen con el nombre de la imagen de Docker Hub y la etiqueta opcional.

     Ejemplo: `postgres:latest`
   + Si utiliza un registro de Amazon ECR, establezca la imagen en el URI del registro de Amazon ECR.

     Ejemplo: `111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-ecs-image-repo`
   + Si utiliza un registro personalizado, establezca la imagen en el valor esperado por el registro personalizado.

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

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

**Asignación de una imagen de Docker de entorno en tiempo de ejecución personalizada mediante el editor de YAML**

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. Puede filtrar por el nombre del repositorio de código fuente o la ramificación donde esté definido el flujo de trabajo, o bien por el nombre o el estado del flujo de trabajo.

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

1. Elija **YAML**.

1. Busque la acción a la que desea asignar una imagen de Docker del entorno en tiempo de ejecución.

1. En la acción, añada una sección `Container` y sus propiedades subyacentes `Registry` y `Image`. Para obtener más información, consulte la descripción de las propiedades `Container`, `Registry` y `Image` en la [Acciones](workflow-reference.md#actions-reference) de la acción.

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="workflows-working-custom-image-ex"></a>

Los siguientes ejemplos muestran cómo asignar una imagen de Docker del entorno en tiempo de ejecución personalizada a una acción del archivo de definición del flujo de trabajo.

**Topics**
+ [Ejemplo: uso de una imagen de Docker del entorno en tiempo de ejecución personalizada para que Node.js 18 sea compatible con Amazon ECR](#workflows-working-custom-image-ex-ecr-node18)
+ [Ejemplo: uso de una imagen de Docker del entorno en tiempo de ejecución personalizada para que Node.js 18 sea compatible con Docker Hub](#workflows-working-custom-image-ex-docker-node18)

### Ejemplo: uso de una imagen de Docker del entorno en tiempo de ejecución personalizada para que Node.js 18 sea compatible con Amazon ECR
<a name="workflows-working-custom-image-ex-ecr-node18"></a>

El siguiente ejemplo muestra cómo usar una imagen de Docker del entorno en tiempo de ejecución personalizada para que Node.js 18 sea compatible con [Amazon ECR](https://gallery.ecr.aws/amazonlinux/amazonlinux).

```
Configuration:
  Container:
    Registry: ECR
    Image: public.ecr.aws/amazonlinux/amazonlinux:2023
```

### Ejemplo: uso de una imagen de Docker del entorno en tiempo de ejecución personalizada para que Node.js 18 sea compatible con Docker Hub
<a name="workflows-working-custom-image-ex-docker-node18"></a>

El siguiente ejemplo muestra cómo usar una imagen de Docker del entorno en tiempo de ejecución personalizada para que Node.js 18 sea compatible con [Docker Hub](https://hub.docker.com/_/node).

```
Configuration:
  Container:
    Registry: DockerHub
    Image: node:18.18.2
```