

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.

# Ejemplo: Modificación de una taskdef de Amazon ECS
<a name="render-ecs-action-example-workflow"></a>

A continuación figura un ejemplo de un flujo de trabajo completo que incluye la acción **Render Amazon ECS task definition**, junto con las acciones de compilación e implementación. El objetivo del flujo de trabajo es crear e implementar una imagen de Docker en su clúster de Amazon ECS. El flujo de trabajo consta de los siguientes componentes que se ejecutarán en orden:
+ Un **desencadenador**: este desencadenador inicia la ejecución automática del flujo de trabajo cuando se introduce un cambio en el repositorio de código fuente. Para obtener más información acerca de los desencadenadores, consulte [Inicio de un flujo de trabajo y ejecución automática mediante desencadenadores](workflows-add-trigger.md). 
+ Una acción de **compilación** (`BuildDocker`): al activarse, la acción crea la imagen de Docker mediante el Dockerfile, la etiqueta con un ID de confirmación y envía la imagen a Amazon ECR. Para obtener más información sobre la acción de compilación, consulte [Compilación con flujos de trabajo](build-workflow-actions.md).
+ Una acción **Render Amazon ECS task definition** (`RenderTaskDef`): al finalizar la acción de compilación, esta acción actualiza una `taskdef.json` existente ubicada en la raíz del repositorio de código fuente con un valor del campo `image` que incluye el ID de confirmación correcto. Guarda el archivo actualizado con un nombre de archivo nuevo (`task-definition-random-string.json`) y crea un artefacto de salida que contiene este archivo. La acción de renderizado también genera una variable llamada `task-definition` y la establece con el nombre del nuevo archivo de definición de tareas. El artefacto y la variable se utilizarán en la acción de implementación, que es la siguiente.
+ Una acción **Deploy to Amazon ECS** (`DeployToECS`): al completar la acción **Render Amazon ECS task definition**, la acción **Deploy to Amazon ECS** busca el artefacto de salida generado por la acción de renderizado (`TaskDefArtifact`), encuentra el archivo `task-definition-random-string.json` que contiene y lo registra en el servicio de Amazon ECS. A continuación, el servicio de Amazon ECS sigue las instrucciones del archivo `task-definition-random-string.json` para ejecutar las tareas de Amazon ECS (y los contenedores de imágenes de Docker asociados) dentro del clúster de Amazon ECS. 

```
Name: codecatalyst-ecs-workflow
SchemaVersion: 1.0

Triggers:
  - Type: PUSH
    Branches:
      - main
Actions:
  BuildDocker:
    Identifier: aws/build@v1
    Environment:
      Name: codecatalyst-ecs-environment
      Connections:
        - Name: codecatalyst-account-connection
          Role: codecatalyst-ecs-build-role
    Inputs:
      Variables:
        - Name: REPOSITORY_URI
          Value: 111122223333.dkr.ecr.us-east-2.amazonaws.com/codecatalyst-ecs-image-repo
        - Name: IMAGE_TAG
          Value: ${WorkflowSource.CommitId}
    Configuration:
      Steps:
        #pre_build:
        - Run: echo Logging in to Amazon ECR...
        - Run: aws --version
        - Run: aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-east-2.amazonaws.com
        #build:
        - Run: echo Build started on `date`
        - Run: echo Building the Docker image...
        - Run: docker build -t $REPOSITORY_URI:latest .
        - Run: docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
        #post_build:
        - Run: echo Build completed on `date`
        - Run: echo Pushing the Docker images...
        - Run: docker push $REPOSITORY_URI:latest
        - Run: docker push $REPOSITORY_URI:$IMAGE_TAG
        
  RenderTaskDef:
    DependsOn: 
      - BuildDocker
    Identifier: aws/ecs-render-task-definition@v1
    Inputs:
      Variables:
        - Name: REPOSITORY_URI
          Value: 111122223333.dkr.ecr.us-east-2.amazonaws.com/codecatalyst-ecs-image-repo
        - Name: IMAGE_TAG
          Value: ${WorkflowSource.CommitId}
    Configuration:      
      task-definition: taskdef.json
      container-definition-name: codecatalyst-ecs-container
      image: $REPOSITORY_URI:$IMAGE_TAG 
    # The output artifact contains the updated task definition file. 
    # The new file is prefixed with 'task-definition'.
    # The output variable is set to the name of the updated task definition file. 
    Outputs:
      Artifacts:
        - Name: TaskDefArtifact
          Files: 
            - "task-definition*"
      Variables:
        - task-definition
        
  DeployToECS:
    Identifier: aws/ecs-deploy@v1
    Environment:
      Name: codecatalyst-ecs-environment
      Connections:
        - Name: codecatalyst-account-connection
          Role: codecatalyst-ecs-deploy-role
    #Input artifact contains the updated task definition file.
    Inputs:
      Sources: []
      Artifacts:
        - TaskDefArtifact
    Configuration:
      region: us-east-2
      cluster: codecatalyst-ecs-cluster
      service: codecatalyst-ecs-service
      task-definition: ${RenderTaskDef.task-definition}
```