教學課程:使用 Amazon ECR來源和 部署ECS至 CodeDeploy 部署建立管道 - AWS CodePipeline

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

教學課程:使用 Amazon ECR來源和 部署ECS至 CodeDeploy 部署建立管道

在本教學課程中,您可以使用支援 Docker 映像的藍/綠部署, AWS CodePipeline 在 中設定部署容器應用程式的管道。在藍/綠部署中,您可以同時啟動新舊版本的應用程式,並在重新路由流量之前測試新版本。您也可以監控部署程序,並在發生問題時快速復原。

重要

作為建立管道的一部分,客戶提供的 S3 成品儲存貯體將由 CodePipeline 用於成品。(這與用於 S3 來源動作的儲存貯體不同。) 如果 S3 成品儲存貯體位於與管道帳戶不同的帳戶中,請確保 S3 成品儲存貯體由 AWS 帳戶 安全且可靠的 擁有。

注意

本教學課程是讓 Amazon ECS為 進行 CodeDeploy 藍/綠部署動作 CodePipeline。如需在 中使用 Amazon ECS標準部署動作的教學課程 CodePipeline,請參閱 教學課程:使用 的 Amazon ECS 標準部署 CodePipeline

已完成的管道會偵測儲存在 Amazon 等映像儲存庫中的映像變更ECR,並使用 CodeDeploy 將流量路由和部署至 Amazon ECS叢集和負載平衡器。 CodeDeploy 會使用接聽程式將流量重新路由至 AppSpec 檔案中指定之已更新容器的連接埠。如需如何在藍/綠部署中使用負載平衡器、生產接聽程式、目標群組和 Amazon ECS 應用程式的詳細資訊,請參閱教學課程:部署 Amazon ECS Service。

管道也會設定為使用來源位置,例如 CodeCommit,其中存放了 Amazon ECS任務定義。在本教學課程中,您可以設定每個 AWS 資源,然後使用包含每個資源動作的階段建立管道。

每當原始程式碼變更或新的基本映像上傳到 Amazon 時,您的持續交付管道都會自動建置和部署容器映像ECR。

此流程使用以下成品:

  • 指定 Amazon 映像儲存庫容器名稱和儲存庫URI的 Docker ECR映像檔案。

  • Amazon ECS任務定義,列出您的 Docker 映像名稱、容器名稱、Amazon ECS服務名稱和負載平衡器組態。

  • 指定 Amazon ECS任務定義檔案名稱、更新應用程式容器的名稱,以及重新路由生產流量的容器連接埠 CodeDeploy AppSpec CodeDeploy的檔案。它也可以指定選用的網路組態和 Lambda 函數,您可以在部署生命週期事件勾點中執行它們。

注意

當您將變更遞交至 Amazon ECR映像儲存庫時,管道來源動作會為該遞交建立imageDetail.json檔案。如需 imageDetail.json 詳細資訊,請參閱 imageDetailAmazon ECS 藍/綠部署動作的 .json 檔案

當您建立或編輯管道,以及更新或指定部署階段的來源成品時,請確保指向的來源成品具有您想要使用的最新名稱和版本。在您設定管道之後,若您變更映像或任務定義檔案,則您可能需要在儲存庫中更新來源成品,然後在管道中編輯部署階段。

必要條件

您必須已建立以下資源:

  • CodeCommit 儲存庫。您可以使用您在 中建立的 AWS CodeCommit 儲存庫教學課程:建立簡單的管道 (CodeCommit 儲存庫)

  • 啟動 Amazon EC2 Linux 執行個體並安裝 Docker 以建立映像,如本教學課程所示。如果您已擁有想要使用的映像,則可略過此先先決條件。

步驟 1:建立映像並推送至 Amazon ECR儲存庫

在本節中,您可以使用 Docker 來建立映像,然後使用 AWS CLI 來建立 Amazon ECR儲存庫,並將映像推送至儲存庫。

注意

如果您已擁有想要使用的映像,則可略過此先步驟。

建立映像
  1. 登入您已在其中安裝 Docker 安裝的 Linux 執行個體。

    拉下 nginx 的映像。此命令提供nginx:latest映像:

    docker pull nginx
  2. 執行 docker images。您應該會在清單中看到映像。

    docker images
若要建立 Amazon ECR儲存庫並推送映像
  1. 建立 Amazon ECR儲存庫以存放映像。記下輸出中的 repositoryUri

    aws ecr create-repository --repository-name nginx

    輸出:

    { "repository": { "registryId": "aws_account_id", "repositoryName": "nginx", "repositoryArn": "arn:aws:ecr:us-east-1:aws_account_id:repository/nginx", "createdAt": 1505337806.0, "repositoryUri": "aws_account_id.dkr.ecr.us-east-1.amazonaws.com/nginx" } }
  2. 為映像標記上一步中的 repositoryUri 值。

    docker tag nginx:latest aws_account_id.dkr.ecr.us-east-1.amazonaws.com/nginx:latest
  3. 執行 aws ecr get-login-password命令,如 us-west-2區域和 111122223333 帳戶 ID 的範例所示。

    aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-west-2.amazonaws.com/nginx
  4. ECR 使用先前步驟repositoryUri中的 將映像推送至 Amazon。

    docker push 111122223333.dkr.ecr.us-east-1.amazonaws.com/nginx:latest

步驟 2:建立任務定義和 AppSpec 來源檔案,然後推送至 CodeCommit 儲存庫

在本節中,您可以建立任務定義JSON檔案,並將其註冊至 Amazon ECS。然後,您可以為 建立 AppSpec 檔案 CodeDeploy ,並使用 Git 用戶端將檔案推送到 CodeCommit 儲存庫。

針對您的映像建立任務定義
  1. 使用下列內容建立名為 taskdef.json 的檔案。對於 image,輸入您的映像名稱,例如 nginx。當您的管道執行時,此值即會更新。

    注意

    請確定任務定義中指定的執行角色包含 AmazonECSTaskExecutionRolePolicy。如需詳細資訊,請參閱 Amazon 開發人員指南 中的 Amazon ECS任務執行IAM角色 ECS

    { "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "sample-website", "image": "nginx", "essential": true, "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ] } ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "cpu": "256", "memory": "512", "family": "ecs-demo" }
  2. 註冊具有 taskdef.json 檔案的任務定義。

    aws ecs register-task-definition --cli-input-json file://taskdef.json
  3. 在註冊任務定義之後,請編輯您的檔案以移除映像名稱,並在映像欄位中包含 <IMAGE1_NAME> 預留位置文字。

    { "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "sample-website", "image": "<IMAGE1_NAME>", "essential": true, "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ] } ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "cpu": "256", "memory": "512", "family": "ecs-demo" }
若要建立 AppSpec 檔案
  • AppSpec 檔案用於 CodeDeploy 部署。此檔案會使用下列格式,其中包含選用欄位:

    version: 0.0 Resources: - TargetService: Type: AWS::ECS::Service Properties: TaskDefinition: "task-definition-ARN" LoadBalancerInfo: ContainerName: "container-name" ContainerPort: container-port-number # Optional properties PlatformVersion: "LATEST" NetworkConfiguration: AwsvpcConfiguration: Subnets: ["subnet-name-1", "subnet-name-2"] SecurityGroups: ["security-group"] AssignPublicIp: "ENABLED" Hooks: - BeforeInstall: "BeforeInstallHookFunctionName" - AfterInstall: "AfterInstallHookFunctionName" - AfterAllowTestTraffic: "AfterAllowTestTrafficHookFunctionName" - BeforeAllowTraffic: "BeforeAllowTrafficHookFunctionName" - AfterAllowTraffic: "AfterAllowTrafficHookFunctionName"

    如需 AppSpec 檔案的詳細資訊,包括範例,請參閱CodeDeploy AppSpec 檔案參考

    使用下列內容建立名為 appspec.yaml 的檔案。對於 TaskDefinition,不要變更 <TASK_DEFINITION> 預留位置文字。當您的管道執行時,此值即會更新。

    version: 0.0 Resources: - TargetService: Type: AWS::ECS::Service Properties: TaskDefinition: <TASK_DEFINITION> LoadBalancerInfo: ContainerName: "sample-website" ContainerPort: 80
將檔案推送至您的 CodeCommit 儲存庫
  1. 將檔案推送或上傳至您的 CodeCommit 儲存庫。這些檔案是建立管道精靈為 中的部署動作建立的來源成品 CodePipeline。在本機目錄中,您的檔案應該如下所示:

    /tmp |my-demo-repo |-- appspec.yaml |-- taskdef.json
  2. 選擇您要用來上傳檔案的方法:

    1. 若要在您的本機電腦上從複製的儲存庫中使用 Git 命令列:

      1. 將目錄變更為您的本機儲存庫:

        (For Linux, macOS, or Unix) cd /tmp/my-demo-repo (For Windows) cd c:\temp\my-demo-repo
      2. 請執行下列命令來同時將所有檔案放入階段:

        git add -A
      3. 請執行下列命令來確認檔案並附加確認訊息:

        git commit -m "Added task definition files"
      4. 執行下列命令,將檔案從本機儲存庫推送到 CodeCommit 儲存庫:

        git push
    2. 若要使用 CodeCommit 主控台上傳檔案:

      1. 開啟 CodeCommit 主控台,然後從儲存庫清單中選擇您的儲存庫

      2. 選擇 Add file (新增檔案),然後選擇 Upload file (上傳檔案)

      3. 選擇 Choose file (選擇檔案),然後瀏覽您的檔案。輸入您的使用者名稱和電子郵件地址來確定變更。選擇 Commit changes (遞交變更)

      4. 對於您要上傳的每個檔案重複此步驟。

步驟 3:建立 Application Load Balancer 和目標群組

在本節中,您可以建立 Amazon EC2 Application Load Balancer 。當您建立 Amazon ECS服務時,稍後會將您建立的子網路名稱和目標群組值與負載平衡器搭配使用。您可以建立應用程式負載平衡器或網路負載平衡器。負載平衡器必須在不同的可用區域中使用VPC具有兩個公有子網路的 。在這些步驟中,您會確認預設 VPC、建立負載平衡器,然後為您的負載平衡器建立兩個目標群組。如需詳細資訊,請參閱「網路負載平衡器的目標群組」。

驗證您的預設VPC和公有子網路
  1. 登入 AWS Management Console 並在 開啟 Amazon VPC主控台https://console.aws.amazon.com/vpc/

  2. 確認VPC要使用的預設值。在導覽窗格中,選擇您的 VPCs。請注意,其在預設VPC欄中VPC顯示。這是預設 VPC。它包含供您選取的預設子網路。

  3. 選擇 Subnets (子網路)。選擇兩個在 Default subnet (預設子網路) 欄中顯示 Yes (是) 的子網路。

    注意

    記下您的子網路 IDs。本教學的稍後部分將需要這些資訊。

  4. 選擇子網路,然後選擇 Description (描述) 標籤。驗證您想要使用的子網路是否位於不同的可用區域中。

  5. 選擇子網路,然後選擇 Route Table (路由表) 標籤。若要驗證您想要使用的每個子網路是否為公有子網路,請確認閘道資料列包含在路由表中。

建立 Amazon EC2 Application Load Balancer
  1. 登入 AWS Management Console 並在 開啟 Amazon EC2主控台https://console.aws.amazon.com/ec2/

  2. 在導覽窗格中,選擇 Load Balancers (負載平衡器)

  3. 選擇 Create Load Balancer (建立負載平衡器)

  4. 選擇 Application Load Balancer (應用程式負載平衡器),然後選擇 Create (建立)

  5. Name (名稱) 中,輸入負載平衡器的名稱。

  6. Scheme (結構描述) 中,選擇 internet-facing (面向網際網路)

  7. IP address type (IP 地址) 中,選擇 ipv4

  8. 為您的負載平衡器設定兩個接聽程式連接埠:

    1. Load Balancer通訊協定 下,選擇 HTTP。在 Load Balancer Port (負載平衡器連接埠) 下,輸入 80

    2. 選擇 Add listener (新增接聽程式)

    3. 在第二個接聽程式的Load Balancer通訊協定下,選擇 HTTP。在 Load Balancer Port (負載平衡器連接埠) 下,輸入 8080

  9. 可用區域 下,於 VPC中選擇預設 VPC。接著,選擇您想要使用的兩個預設子網路。

  10. 選擇 Next: Configure Security Settings (下一步:設定安全設定)

  11. 選擇 Next: Configure Security Groups (下一步:設定安全群組)

  12. 選擇 Select an existing security group (選取現有的安全群組),並記下安全群組 ID。

  13. 選擇 Next: Configure Routing (下一步:設定路由)

  14. Target group (目標群組) 中,選擇 New target group (新增目標群組),然後設定您的第一個目標群組:

    1. Name (名稱) 中,輸入目標群組名稱 (例如,target-group-1)。

    2. Target type (目標類型) 中,選擇 IP

    3. 通訊協定中選擇 HTTP。在 Port (連接埠) 中,輸入 80

    4. 選擇 Next: Register Targets (下一步:註冊目標)

  15. 選擇 Next: Review (下一步:檢視),然後選擇 Create (建立)

為您的負載平衡器建立第二個目標群組
  1. 佈建負載平衡器後,請開啟 Amazon EC2主控台。在導覽窗格中,選擇 Target Groups (目標群組)

  2. 選擇 Create target group (建立目標群組)

  3. Name (名稱) 中,輸入目標群組名稱 (例如,target-group-2)。

  4. Target type (目標類型) 中,選擇 IP

  5. 通訊協定中選擇 HTTP。在 Port (連接埠) 中,輸入 8080

  6. 在 中VPC,選擇預設 VPC。

  7. 選擇 Create (建立)。

    注意

    您必須具有兩個針對負載平衡器建立的目標群組,才能執行部署。您只需記下第一個目標群組ARN的 。這ARN會在下一個步驟的create-serviceJSON檔案中使用。

更新您的負載平衡器以包含您的第二個目標群組
  1. 開啟 Amazon EC2主控台。在導覽窗格中,選擇 Load Balancers (負載平衡器)

  2. 選擇您的負載平衡器,然後選擇 Listeners (接聽程式) 標籤。選擇使用連接埠 8080 的接聽程式,然後選擇 Edit (編輯)

  3. 選擇 Forward to (轉寄至) 旁邊的鉛筆圖示。選擇您的第二個目標群組,然後選擇核取記號。選擇 Update (更新) 來儲存更新。

步驟 4:建立您的 Amazon ECS叢集和服務

在本節中,您會建立 Amazon ECS叢集和服務,其中 會在部署期間 CodeDeploy 路由流量 (至 Amazon ECS叢集,而不是EC2執行個體)。若要建立 Amazon ECS服務,您必須使用使用使用負載平衡器建立的子網路名稱、安全群組和目標群組值來建立服務。

注意

當您使用這些步驟建立 Amazon ECS叢集時,請使用僅限網路叢集範本,其中會佈建 AWS Fargate 容器。 AWS Fargate 是一種技術,可為您管理容器執行個體基礎設施。您不需要為 Amazon ECS叢集選擇或手動建立 Amazon EC2執行個體。

建立 Amazon ECS叢集
  1. 在 開啟 Amazon ECS Classic 主控台https://console.aws.amazon.com/ecs/

  2. 在導覽窗格中,選擇叢集

  3. 選擇建立叢集

  4. 選擇僅限網路叢集範本,使用 AWS Fargate,然後選擇下一步

  5. Configure cluster (設定叢集) 頁面上輸入叢集名稱。您可以為您的資源新增選用的標籤。選擇 Create (建立)。

建立 Amazon ECS服務

使用 AWS CLI 在 Amazon 中建立您的服務ECS。

  1. 建立JSON檔案並命名 create-service.json。將下列項目貼到 JSON 檔案中。

    對於 taskDefinition 欄位,當您在 Amazon 中註冊任務定義時ECS,您會給它一個系列。這類似用於多個任務定義版本的名稱,以修訂版號碼指定。在此範例中,請將「ecs-demo:1」用於您檔案中的系列和修訂版號碼。在 步驟 3:建立 Application Load Balancer 和目標群組 中使用您建立的子網路名稱、安全群組和目標群組值,以及您的負載平衡器。

    注意

    您需要將目標群組包含ARN在此檔案中。開啟 Amazon EC2主控台,然後從導覽窗格,在 LOAD BALANCING下,選擇目標群組 。選擇您的第一個目標群組。ARN 從描述索引標籤複製您的 。

    { "taskDefinition": "family:revision-number", "cluster": "my-cluster", "loadBalancers": [ { "targetGroupArn": "target-group-arn", "containerName": "sample-website", "containerPort": 80 } ], "desiredCount": 1, "launchType": "FARGATE", "schedulingStrategy": "REPLICA", "deploymentController": { "type": "CODE_DEPLOY" }, "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "subnet-1", "subnet-2" ], "securityGroups": [ "security-group" ], "assignPublicIp": "ENABLED" } } }
  2. 執行 create-service命令,指定 JSON 檔案:

    重要

    請確認在檔案名稱之前包含 file://。這是此命令必要項目。

    此範例會建立名為 my-service 的服務。

    注意

    此範例命令會建立名為 my-service 的服務。如果您已經有使用此名稱的服務,此命令會傳回錯誤。

    aws ecs create-service --service-name my-service --cli-input-json file://create-service.json

    輸出會傳回您服務的描述欄位。

  3. 執行 describe-services 命令,以驗證是否已建立您的服務。

    aws ecs describe-services --cluster cluster-name --services service-name

步驟 5:建立應用程式 CodeDeploy和部署群組 (ECS 運算平台)

當您為 Amazon ECS運算平台建立 CodeDeploy 應用程式和部署群組時,應用程式會在部署期間使用,以參考正確的部署群組、目標群組、接聽程式和流量重新路由行為。

建立 CodeDeploy 應用程式
  1. 開啟 CodeDeploy 主控台,然後選擇建立應用程式

  2. Application name (應用程式名稱) 中,輸入您想要使用的名稱。

  3. 運算平台 中,選擇 Amazon ECS

  4. 選擇建立應用程式

若要建立 CodeDeploy 部署群組
  1. 在您應用程式頁面的 Deployment groups (部署群組) 標籤上,選擇 Create deployment group (建立部署群組)

  2. Deployment group name (部署群組名稱) 中,輸入描述部署群組的名稱。

  3. 服務角色 中,選擇授予 CodeDeploy Amazon 存取權的服務角色ECS。若要建立新的服務角色,請遵循下列步驟:

    1. 在 開啟IAM主控台https://console.aws.amazon.com/iam/)。

    2. 從主控台儀表板,選擇 Roles (角色)

    3. 選擇建立角色

    4. 選取受信任實體的類型 下,選取 AWS 服務。在選擇使用案例 下,選取 CodeDeploy。在選取您的使用案例 下,選取 CodeDeploy - ECS。選擇下一步:許可AWSCodeDeployRoleForECS 受管政策已連接至角色。

    5. 選擇 Next: Tags (下一步:標籤),然後選擇 Next: Review (下一步:檢閱)

    6. 輸入角色的名稱 (例如 CodeDeployECSRole),然後選擇 Create role (建立角色)

  4. 環境組態 中,選擇您的 Amazon ECS叢集名稱和服務名稱。

  5. 負載平衡器 中,選擇為 Amazon ECS服務提供流量的負載平衡器名稱。

  6. 生產接聽程式連接埠 中,選擇為 Amazon ECS服務提供生產流量的接聽程式連接埠和通訊協定。從 Test listener port (測試接聽程式連接埠),為測試接聽程式選擇連接埠和通訊協定。

  7. Target group 1 name (目標群組 1 名稱)Target group 2 name (目標群組 2 名稱) 中,選擇在部署期間用來路由流量的目標群組。確定這些是您為負載平衡器建立的目標群組。

  8. 選擇立即重新路由流量,以判斷成功部署後將流量重新路由至更新後的 Amazon ECS任務的時間長度。

  9. 選擇 Create deployment group (建立部署群組)

步驟 6:建立管道

在本節中,您可以採取下列動作建立管道:

  • 來源成品為任務定義和 AppSpec 檔案 CodeCommit 的動作。

  • 具有 Amazon ECR來源動作的來源階段,其中來源成品是映像檔案。

  • 具有 Amazon ECS 部署動作的部署階段,其中部署使用 CodeDeploy 應用程式和部署群組執行。

使用精靈建立兩階段管道
  1. 登入 AWS Management Console 並在 https://http://console.aws.amazon.com/codesuite/codepipeline/home 開啟 CodePipeline 主控台。

  2. Welcome (歡迎) 頁面、Getting started (入門) 頁面、或者 Pipelines (管道) 頁面上,選擇 Create pipeline (建立管道)

  3. Step 1: Choose pipeline settings (步驟 1:選擇管道設定)Pipeline name (管道名稱) 中,輸入 MyImagePipeline

  4. 管道類型 中,選擇 V2。如需詳細資訊,請參閱管道類型。選擇 Next (下一步)

  5. 服務角色 中,選擇要允許 CodePipeline 在 中建立服務角色的新服務角色IAM。

  6. Advanced settings (進階設定) 下的設定保留為預設值,然後選擇 Next (下一步)

  7. Step 2: Add source stage (步驟 2:新增來源階段)Source provider (來源提供者) 中,選擇 AWS CodeCommit。在儲存庫名稱 中,選擇您在 中建立的 CodeCommit儲存庫名稱步驟 1:建立 CodeCommit 儲存庫。在 Branch name (分支名稱) 中,選擇包含最新程式碼更新的分支名稱。

    選擇 Next (下一步)

  8. Step 3: Add build stage (步驟 3:新增建置階段) 中,選擇 Skip build stage (跳過建置階段),然後再次選擇 Skip (跳過) 來接受警告訊息​。選擇 Next (下一步)

  9. Step 4: Add deploy stage (步驟 4:新增部署階段) 中:

    1. 部署提供者 中,選擇 Amazon ECS(藍/綠)。在 Application name (應用程式名稱) 中,輸入應用程式名稱或從清單中選擇應用程式名稱,例如,codedeployapp。在 Deployment group (部署群組) 中,輸入部署群組名稱或從清單中選擇部署群組名稱,例如,codedeploydeplgroup

      注意

      名稱「Deploy」(部署),是預設指定給在 Step 4: Deploy (步驟 4:部署) 步驟中建立的階段名稱,如同「Source」(來源) 是管道的第一階段所指定的名稱。

    2. Amazon ECS任務定義 下,選擇 SourceArtifact。在欄位中,輸入 taskdef.json

    3. AWS CodeDeploy AppSpec 檔案 下,選擇 SourceArtifact。在欄位中,輸入 appspec.yaml

      注意

      此時,不要在 Dynamically update task definition image (動態更新任務定義映像) 下填寫任何資訊。

    4. 選擇 Next (下一步)

  10. Step 5: Review (步驟 5:檢閱) 中,檢閱資訊,然後選擇 Create pipeline (建立管道)

將 Amazon ECR來源動作新增至管道

檢視管道,並將 Amazon ECR來源動作新增至管道。

  1. 選擇您的管道。在左上角,選擇 Edit (編輯)

  2. 在來源階段中,選擇 Edit stage (編輯階段)

  3. 選擇 CodeCommit 來源動作旁的 + 新增動作,以新增平行動作。

  4. Action name (動作名稱) 中,輸入名稱 (例如,Image)。

  5. 動作提供者 中,選擇 Amazon ECR

    將 Amazon ECR來源動作新增至管道。
  6. 儲存庫名稱 中,選擇 Amazon ECR儲存庫的名稱。

  7. Image tag (映像標籤) 中,指定映像名稱和版本,如果與最新不同的話。

  8. 輸出成品 中,選擇包含您希望下一個階段使用之映像名稱和儲存庫URI資訊的輸出成品預設值 (例如,MyImage)。

  9. 在動作畫面上選擇 Save (儲存)。在階段畫面上選擇 Done (完成)。在管道上選擇 Save (儲存)。訊息顯示要為 Amazon ECR來源動作建立的 Amazon CloudWatch Events 規則。

將您的來源成品連線至部署動作
  1. 在部署階段選擇編輯,然後選擇 圖示來編輯 Amazon ECS(藍/綠) 動作。

  2. 捲動到窗格底部。在 Input artifacts (輸入成品) 中,選擇 Add (新增)。從新的 Amazon ECR儲存庫新增來源成品 (例如 MyImage)。

  3. 任務定義 中,選擇 SourceArtifact,然後驗證taskdef.json是否已輸入。

  4. AWS CodeDeploy AppSpec 檔案 中,選擇 SourceArtifact,然後驗證appspec.yaml是否已輸入。

  5. 動態更新任務定義映像 中,使用映像 的輸入偽影URI中,選擇 MyImage,然後輸入taskdef.json檔案中使用的預留位置文字: IMAGE1_NAME。選擇 Save (儲存)。

  6. 在 AWS CodePipeline 窗格中,選擇儲存管道變更 ,然後選擇儲存變更 。檢視已更新的管道。

    建立此範例管道後,主控台項目的動作組態會顯示在管道結構中,如下所示:

    "configuration": { "AppSpecTemplateArtifact": "SourceArtifact", "AppSpecTemplatePath": "appspec.yaml", "TaskDefinitionTemplateArtifact": "SourceArtifact", "TaskDefinitionTemplatePath": "taskdef.json", "ApplicationName": "codedeployapp", "DeploymentGroupName": "codedeploydeplgroup", "Image1ArtifactName": "MyImage", "Image1ContainerName": "IMAGE1_NAME" },
  7. 若要提交您的變更並啟動管道建置,請選擇 ​Release change (發行變更),然後選擇 ​Release (發行)

  8. 選擇部署動作以檢視 中的部署動作, CodeDeploy 並查看流量轉移的進度。

    注意

    您可以查看顯示選用等待時間的部署步驟。依預設,在成功部署後 CodeDeploy 等待一小時,再終止原始任務集。您可以利用這段時間復原或終止任務,但在任務集終止時,您的部署任務會以別的方式完成。

步驟 7:變更您的管道並驗證部署

變更映像,然後將變更推送至 Amazon ECR儲存庫。這會觸發您的管道執行。驗證是否已部署您的映像來源。