使用 Amazon ECS 在任何地方在 Amazon WorkSpaces 上執行 Amazon ECS Anywhere 務 - AWS Prescriptive Guidance

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

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

由阿卡什·庫馬爾 (AWS) 創建

環境:生產

技術 容器與微服務;現代化

工作負載:所有其他工作負載

AWS 服務 亞馬遜 ECS; Amazon WorkSpaces; AWS Directory Service

Summary

Amazon Elastic Container Service (Amazon ECS) 無所不在支援在任何環境中部署 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 無所不在的 Amazon WorkSpaces 上部署 Amazon ECS Anywhere 務。它會設定 ECS 叢集,並使用 AWS Directory Service Simple AD 來啟動 WorkSpaces。然後,示例 ECS 任務在 WorkSpaces 中啟動 NGINX。

先決條件和限制

Architecture

目標技術堆疊

  • Virtual VPC ate Cloud

  • Amazon ECS 叢集

  • Amazon WorkSpaces

  • 搭配使用 AWS Directory Service 與 Simple AD

目標架構

此架構包括以下服務和資源:

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

  • VPC 中的 Simple AD,為用戶提供對 Amazon WorkSpaces 的訪問

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

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

  • 使用 Amazon ECS 和 AWS Systems Manager 代理 (SSM 代理),將 Amazon WorkSpaces 新增至 Systems Manager 和 ECS 叢集

  • 在 ECS 叢集中的 WorkSpaces 中執行的 ECS 工作範例

Tools

  • 簡易 AD— AWS Directory Service Simple Active Directory (Simple AD) 是獨立的受管目錄,由 Samba 4 Active Directory 相容伺服器提供。Simple AD 提供 AWS 受管 Microsoft AD 提供的部分功能,包括能夠管理使用者帳戶和安全連線到 Amazon EC2 執行個體。

  • Amazon ECS— Amazon Elastic Container Service 是具高可擴展性且快速的容器管理服務,可以在叢集上執行、停止和管理容器。您可以在受 AWS Fargate 管理的無伺服器基礎設施上執行任務和服務。或者,如需對基礎架構掌握更大的控制權,您可以在管理的 Amazon EC2 執行個體的叢集上執行任務和服務。

  • AWS Identity and Access Management— AWS Identity and Access Management (IAM) 是一種 Web 服務,可以安全地控制對 AWS 服務的存取。有了 IAM,即可集中管理使用者、安全登入資料 (例如存取金鑰);此外,您還能獲得許可,進而控制可供使用者和應用程式存取的 AWS 資源。

  • AWS Systems Manager— AWS Systems Manager 是一種 AWS 服務,可讓您用來檢視和控制 AWS 上的基礎設施。使用 Systems Manager 主控台,即可檢視來自多項 AWS 服務的操作資料,並可自動化跨 AWS 資源的操作任務。Systems Manager 透過掃描您的受管執行個體並報告 (或採取修正動作) 任何政策違規,協助您保持安全與合規。

  • Amazon WorkSpaces— Amazon WorkSpaces 可為您的使用者佈建虛擬、雲端的微軟視窗或亞馬遜 Linux 桌面平台,稱為WorkSpaces。WorkSpaces 免除採購和部署硬體或安裝複雜軟體的需求。

Epics

任務描述所需技能
建立和設定 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
雲端
將 AmazonEC2 容器服務預測角色政策新增至 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
雲端
任務描述所需技能
Connect 到您的 WorkSpaces

若要連線到並設定您的 WorkSpaces,請依照AWS 文件

應用程式開發
下載 ecs-任何地方安裝腳本。

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

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
應用程式開發
在亞馬遜 Linux 上添加一個 EPEL 存儲庫。

若要新增 Extra Packages for Enterprise Linux (EPEL) 儲存庫,請執行sudo amazon-linux-extras install epel -y

應用程式開發
在任何地方安裝亞馬遜 ECS。

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

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 角色。

下載task-execution-assume-role.jsonexternal-task-definition.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

應用程式開發

相關資源

Attachments

attachment.zip