

Amazon CodeCatalyst 不再向新客戶開放。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[如何從 CodeCatalyst 遷移](migration.md)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 範例：修改 Amazon ECS taskdef
<a name="render-ecs-action-example-workflow"></a>

以下是包含**轉譯 Amazon ECS 任務定義**動作，以及建置和部署動作的完整工作流程範例。工作流程的目的是在 Amazon ECS 叢集中建置和部署 Docker 映像。工作流程包含下列依順序執行的建置區塊：
+ **觸發**條件 – 當您將變更推送至來源儲存庫時，此觸發條件會自動啟動工作流程執行。關於觸發條件的詳細資訊，請參閱 [使用觸發程序自動啟動工作流程執行](workflows-add-trigger.md)。
+ **建置**動作 (`BuildDocker`) – 觸發時，動作會使用 Dockerfile 建置 Docker 映像、使用遞交 ID 標記映像，並將映像推送至 Amazon ECR。如需建置動作的詳細資訊，請參閱 [使用工作流程建置](build-workflow-actions.md)。
+ **轉譯 Amazon ECS 任務定義**動作 (`RenderTaskDef`) – 建置動作完成後，此動作會使用包含正確遞交 ID `image`的欄位值，來更新`taskdef.json`位於來源儲存庫根中的現有 。它會使用新的檔案名稱 (`task-definition-random-string.json`) 儲存更新的檔案，然後建立包含此檔案的輸出成品。轉譯動作也會產生名為 的變數，`task-definition`並將其設定為新任務定義檔案的名稱。成品和變數將用於部署動作，接下來是 。
+ 部署**至 Amazon ECS** 動作 (`DeployToECS`) – **轉譯 Amazon ECS 任務定義**動作完成後，**部署至 Amazon ECS** 動作會尋找轉譯動作 (`TaskDefArtifact`) 產生的輸出成品、尋找其中`task-definition-random-string.json`的檔案，並將其註冊至 Amazon ECS 服務。然後，Amazon ECS 服務會遵循 `task-definition-random-string.json` 檔案中的指示，在您的 Amazon ECS 叢集內執行 Amazon ECS 任務以及相關聯的 Docker 映像容器。

```
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}
```