Exemple de flux de travail qui modifie un fichier de définition de tâche Amazon ECS - Amazon CodeCatalyst

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exemple de flux de travail qui modifie un fichier de définition de tâche Amazon ECS

Voici un exemple de flux de travail complet qui inclut l'action de définition de tâche Render Amazon ECS, ainsi que les actions de création et de déploiement. L'objectif du flux de travail est de créer et de déployer une image Docker dans votre cluster Amazon ECS. Le flux de travail comprend les éléments de base suivants qui s'exécutent de manière séquentielle :

  • Un déclencheur : ce déclencheur lance automatiquement l'exécution du flux de travail lorsque vous apportez une modification à votre référentiel source. Pour plus d'informations sur les déclencheurs, consultez Démarrage d'un flux de travail exécuté automatiquement à l'aide de déclencheurs.

  • Une action de génération (BuildDocker) — Au moment du déclenchement, l'action crée l'image Docker à l'aide du Dockerfile, l'étiquette avec un ID de validation et envoie l'image vers Amazon ECR. Pour plus d'informations sur l'action de génération, consultezConstruire avec des flux de travail.

  • Une action de définition de tâche Render Amazon ECS (RenderTaskDef) : à la fin de l'action de génération, cette action met à jour un taskdef.json élément existant situé à la racine de votre référentiel source avec une valeur de image champ qui inclut l'ID de validation correct. Il enregistre le fichier mis à jour sous un nouveau nom de fichier (task-definition-random-string.json), puis crée un artefact de sortie contenant ce fichier. L'action de rendu génère également une variable appelée task-definition et lui attribue le nom du nouveau fichier de définition de tâche. L'artefact et la variable seront utilisés lors de l'action de déploiement, qui est la suivante.

  • Une action de déploiement vers Amazon ECS (DeployToECS) : une fois l'action de définition de tâche Render Amazon ECS terminée, l'action Deploy to Amazon ECS recherche l'artefact de sortie généré par l'action de rendu (TaskDefArtifact), trouve le task-definition-random-string.json fichier qu'il contient et l'enregistre auprès de votre service Amazon ECS. Le service Amazon ECS suit ensuite les instructions du task-definition-random-string.json fichier pour exécuter les tâches Amazon ECS et les conteneurs d'images Docker associés au sein de votre cluster 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}