使用 Amazon ECS Anywhere 在 Amazon WorkSpaces 上執行 Amazon ECS 任務 Amazon ECS Anywhere - AWS 方案指引

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

使用 Amazon ECS Anywhere 在 Amazon WorkSpaces 上執行 Amazon ECS 任務 Amazon ECS Anywhere

由 Akash Kumar (AWS) 建立

Summary

Amazon Elastic Container Service (Amazon ECS) Anywhere 支援在任何環境中部署 Amazon ECS 任務,包括 Amazon Web Services (AWS) 受管基礎設施和客戶受管基礎設施。您可以在使用在雲端中執行且隨時為最新狀態的全 AWS 受管控制平面時執行此操作。 

企業通常會使用 Amazon WorkSpaces 來開發容器型應用程式。這需要具有 Amazon ECS 叢集的 Amazon Elastic Compute Cloud (Amazon EC2) 或 AWS Fargate,才能測試和執行 ECS 任務。現在,透過使用 Amazon ECS Anywhere,您可以將 Amazon WorkSpaces 直接新增為 ECS 叢集的外部執行個體,也可以直接執行任務。這可縮短您的開發時間,因為您可以使用 Amazon WorkSpaces 上的 ECS 叢集在本機測試容器。您也可以節省使用 EC2 或 Fargate 執行個體來測試容器應用程式的成本。

此模式示範如何使用 Amazon ECS Anywhere 在 Amazon WorkSpaces Amazon ECS Anywhere 任務。它設定 ECS 叢集,並使用 AWS Directory Service Simple AD 啟動 WorkSpaces。然後,範例 ECS 任務會在 WorkSpaces 中啟動 NGINX。

先決條件和限制

架構

目標技術堆疊

  • 虛擬私有雲端 (VPC)

  • Amazon ECS 叢集

  • Amazon WorkSpaces

  • 具有 Simple AD 的 AWS Directory Service

目標架構

ECS Anywhere 會設定 ECS 叢集,並使用 Simple AD 啟動 WorkSpaces。

架構包含下列服務和資源:

  • 自訂 VPC 中具有公有和私有子網路的 ECS 叢集

  • VPC 中的簡易 AD 可讓使用者存取 Amazon WorkSpaces

  • 使用 Simple AD 在 VPC 中佈建的 Amazon WorkSpaces

  • 已啟用 AWS Systems Manager,可將 Amazon WorkSpaces 新增為受管執行個體

  • 使用 Amazon ECS 和 AWS Systems Manager Agent (SSM Agent),Amazon WorkSpaces 已新增至 Systems Manager 和 ECS 叢集

  • 在 ECS 叢集的 WorkSpaces 中執行的範例 ECS 任務

工具

  • AWS Directory Service Simple Active Directory (Simple AD) 是由 Samba 4 Active Directory 相容伺服器提供支援的獨立受管目錄。Simple AD 提供 AWS Managed Microsoft AD 提供的部分功能,包括能夠管理使用者並安全地連線至 Amazon EC2 執行個體。

  • Amazon Elastic Container Service (Amazon ECS) 是快速、可擴展的容器管理服務,可協助您執行、停止和管理叢集上的容器。

  • AWS Identity and Access Management (IAM) 可透過控制已驗證並獲授權使用的人員,協助您安全地管理對 AWS 資源的存取。

  • AWS Systems Manager 可協助您管理在 AWS 雲端中執行的應用程式和基礎設施。它可簡化應用程式和資源管理、縮短偵測和解決操作問題的時間,並協助您大規模安全地管理 AWS 資源。

  • Amazon WorkSpaces 可協助您為使用者佈建以雲端為基礎的虛擬 Microsoft Windows 或 Amazon Linux 桌面,稱為 WorkSpaces。WorkSpaces 無需採購和部署硬體或安裝複雜軟體。

史詩

任務描述所需的技能

建立和設定 ECS 叢集。

若要建立 ECS 叢集,請遵循 AWS 文件中的指示,包括下列步驟:

  • 針對選取叢集相容性,請選擇僅限聯網,這將支援 Amazon WorkSpace 做為 ECS 叢集的外部執行個體。

  • 選擇 以建立新的 VPC。

雲端架構師
任務描述所需的技能

設定 Simple AD 並啟動 Amazon WorkSpaces。

若要為新建立的 VPC 佈建 Simple AD 目錄並啟動 Amazon WorkSpaces,請遵循 AWS 文件中的指示。

雲端架構師
任務描述所需的技能

下載連接的指令碼。

在本機電腦上,下載附件區段中的 ssm-trust-policy.jsonssm-activation.json 檔案。

雲端架構師

新增 IAM 角色。

根據您的業務需求新增環境變數。

export AWS_DEFAULT_REGION=${AWS_REGION_ID} export ROLE_NAME=${ECS_TASK_ROLE} export CLUSTER_NAME=${ECS_CLUSTER_NAME} export SERVICE_NAME=${ECS_CLUSTER_SERVICE_NAME}

執行下列命令。

aws iam create-role --role-name $ROLE_NAME --assume-role-policy-document file://ssm-trust-policy.json
雲端架構師

將 AmazonSSMManagedInstanceCore 政策新增至 IAM 角色。

執行下列命令。

aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
雲端架構師

將 AmazonEC2ContainerServiceforEC2Role 政策新增至 IAM 角色。

執行下列命令。

aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role
雲端架構師

驗證 IAM 角色。

若要驗證 IAM 角色,請執行下列命令。

aws iam list-attached-role-policies --role-name $ROLE_NAME
雲端架構師

啟用 Systems Manager。

執行下列命令。

aws ssm create-activation --iam-role $ROLE_NAME | tee ssm-activation.json
雲端架構師
任務描述所需的技能

連線至 WorkSpaces。

若要連線至 並設定工作區,請遵循 AWS 文件中的指示。

應用程式開發人員

下載 ecs-anywhere 安裝指令碼。

在命令提示中,執行下列 命令。

curl -o "ecs-anywhere-install.sh" "https://amazon-ecs-agent-packages-preview.s3.us-east-1.amazonaws.com/ecs-anywhere-install.sh" && sudo chmod +x ecs-anywhere-install.sh
應用程式開發人員

檢查 Shell 指令碼的完整性。

(選用) 執行下列命令。

curl -o "ecs-anywhere-install.sh.sha256" "https://amazon-ecs-agent-packages-preview.s3.us-east-1.amazonaws.com/ecs-anywhere-install.sh.sha256" && sha256sum -c ecs-anywhere-install.sh.sha256
應用程式開發人員

在 Amazon Linux 上新增 EPEL 儲存庫。

若要新增適用於 Enterprise Linux (EPEL) 的額外套件儲存庫,請執行命令 sudo amazon-linux-extras install epel -y

應用程式開發人員

安裝 Amazon ECS Anywhere。

若要執行安裝指令碼,請使用下列命令。

sudo ./ecs-anywhere-install.sh --cluster $CLUSTER_NAME --activation-id $ACTIVATION_ID --activation-code $ACTIVATION_CODE --region $AWS_REGION

從 ECS 叢集檢查執行個體資訊。

若要檢查 Systems Manager 和 ECS 叢集執行個體資訊,並驗證 WorkSpaces 是否已新增至叢集,請從本機電腦執行下列命令。

aws ssm describe-instance-information" && "aws ecs list-container-instances --cluster $CLUSTER_NAME
應用程式開發人員
任務描述所需的技能

建立任務執行 IAM 角色。

external-task-definition.json附件區段下載 task-execution-assume-role.json和 。 

在本機電腦上,執行下列命令。

aws iam --region $AWS_DEFAULT_REGION create-role --role-name $ECS_TASK_EXECUTION_ROLE --assume-role-policy-document file://task-execution-assume-role.json
雲端架構師

將政策新增至執行角色。

執行下列命令。

aws iam --region $AWS_DEFAULT_REGION attach-role-policy --role-name $ECS_TASK_EXECUTION_ROLE --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
雲端架構師

建立任務角色。

執行下列命令。

aws iam --region $AWS_DEFAULT_REGION create-role --role-name $ECS_TASK_EXECUTION_ROLE --assume-role-policy-document file://task-execution-assume-role.json
雲端架構師

將任務定義註冊到叢集。

在本機電腦上,執行下列命令。

aws ecs register-task-definition --cli-input-json file://external-task-definition.json
雲端架構師

執行任務。

在本機電腦上,執行下列命令。

aws ecs run-task --cluster $CLUSTER_NAME --launch-type EXTERNAL --task-definition nginx
雲端架構師

驗證任務執行狀態。

若要擷取任務 ID,請執行下列命令。

export TEST_TASKID=$(aws ecs list-tasks --cluster $CLUSTER_NAME | jq -r '.taskArns[0]')

使用任務 ID,執行下列命令。

aws ecs describe-tasks --cluster $CLUSTER_NAME --tasks ${TEST_TASKID}
雲端架構師

驗證 WorkSpace 上的任務。

若要檢查 NGINX 是否在 WorkSpace 上執行,請執行 命令 curl http://localhost:8080

應用程式開發人員

相關資源

附件

若要存取與本文件相關聯的其他內容,請解壓縮下列檔案: attachment.zip