Exemplo: Modificar um ECS taskdef da Amazon - Amazon CodeCatalyst

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Exemplo: Modificar um ECS taskdef da Amazon

Veja a seguir um exemplo de um fluxo de trabalho completo que inclui a ação de definição de ECS tarefas Render Amazon, junto com ações de criação e implantação. O objetivo do fluxo de trabalho é criar e implantar uma imagem do Docker em seu ECS cluster da Amazon. O fluxo de trabalho consiste nos seguintes blocos de construção que são executados sequencialmente:

  • Um gatilho — Esse gatilho inicia a execução automática do fluxo de trabalho quando você envia uma alteração ao seu repositório de origem. Para obter mais informações sobre gatilhos, consulte Iniciando um fluxo de trabalho executado automaticamente usando gatilhos.

  • Uma ação de criação (BuildDocker) — No gatilho, a ação cria a imagem do Docker usando o Dockerfile, a marca com um ID de confirmação e envia a imagem para a Amazon. ECR Para obter mais informações sobre a ação de criação, consulteConstruindo com fluxos de trabalho.

  • Uma ação de definição de ECS tarefa do Render Amazon (RenderTaskDef) — Ao concluir a ação de criação, essa ação atualiza uma existente taskdef.json localizada na raiz do seu repositório de origem com um valor de image campo que inclui o ID de confirmação correto. Ele salva o arquivo atualizado com um novo nome de arquivo (task-definition-random-string.json) e, em seguida, cria um artefato de saída que contém esse arquivo. A ação de renderização também gera uma variável chamada task-definition e a define como o nome do novo arquivo de definição de tarefa. O artefato e a variável serão usados na ação de implantação, que será a seguir.

  • Uma ECS ação Implantar na Amazon (DeployToECS) — Ao concluir a ação de definição da ECS tarefa Render Amazon, a ECS ação Implantar na Amazon procura o artefato de saída gerado pela ação de renderização (TaskDefArtifact), encontra o task-definition-random-string.json arquivo dentro dele e o registra no seu serviço da AmazonECS. Em seguida, o ECS serviço da Amazon segue as instruções no task-definition-random-string.json arquivo para executar as ECS tarefas da Amazon e os contêineres de imagem Docker associados dentro do seu cluster da 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}