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 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.
-
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. -
Una acción Render Amazon ECS task definition (
RenderTaskDef
): al finalizar la acción de compilación, esta acción actualiza unataskdef.json
existente ubicada en la raíz del repositorio de código fuente con un valor del campoimage
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 llamadatask-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 archivotask-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 archivotask-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}