Esempio: modificare un Amazon ECS taskdef - Amazon CodeCatalyst

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esempio: modificare un Amazon ECS taskdef

Di seguito è riportato un esempio di flusso di lavoro completo che include l'azione di definizione delle ECS attività di Render Amazon, insieme alle azioni di compilazione e distribuzione. Lo scopo del flusso di lavoro è creare e distribuire un'immagine Docker nel tuo cluster AmazonECS. Il flusso di lavoro è costituito dai seguenti elementi costitutivi eseguiti in sequenza:

  • Un trigger: questo trigger avvia l'esecuzione automatica del flusso di lavoro quando invii una modifica al tuo repository di origine. Per ulteriori informazioni sui trigger, consulta L'avvio di un flusso di lavoro viene eseguito automaticamente utilizzando i trigger.

  • Un'azione di compilazione (BuildDocker): all'attivazione, l'azione crea l'immagine Docker utilizzando il Dockerfile, la contrassegna con un ID di commit e invia l'immagine ad Amazon. ECR Per ulteriori informazioni sull'azione di compilazione, consulta. Creazione con flussi di lavoro

  • Un'azione di definizione dell'ECSattività di Render Amazon (RenderTaskDef): al termine dell'azione di compilazione, questa azione aggiorna un'azione esistente taskdef.json situata nella radice del repository di origine con un valore di image campo che include l'ID di commit corretto. Salva il file aggiornato con un nuovo nome di file (task-definition-random-string.json) e quindi crea un elemento di output che contiene questo file. L'azione di rendering genera anche una variabile chiamata task-definition e la imposta sul nome del nuovo file di definizione dell'attività. L'artefatto e la variabile verranno utilizzati nell'azione di distribuzione, che è la successiva.

  • Un'ECSazione Deploy to Amazon (DeployToECS): al termine dell'azione di definizione dell'ECSattività Render Amazon, l'azione Deploy to Amazon ECS cerca l'artefatto di output generato dall'azione di rendering (TaskDefArtifact), trova il task-definition-random-string.json file al suo interno e lo registra presso il servizio Amazon. ECS Il ECS servizio Amazon segue quindi le istruzioni contenute nel task-definition-random-string.json file per eseguire le ECS attività Amazon e i contenitori di immagini Docker associati all'interno del 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}