使用 Amazon ECS Anywhere 在亚马逊 WorkSpaces 上运行亚马逊 ECS 任务 - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon ECS Anywhere 在亚马逊 WorkSpaces 上运行亚马逊 ECS 任务

由 Akash Kumar (AWS) 创建

环境:生产

技术:容器和微服务;现代化

工作负载:所有其他工作负载

AWS 服务:亚马逊 ECS;亚马逊 WorkSpaces;AWS Directory Service

总结

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,您可以将亚马逊 WorkSpaces 作为外部实例直接添加到 ECS 集群,并且可以直接运行任务。这可以缩短您的开发时间,因为您可以在 Amazon 上使用本地的 ECS 集群测试容器 WorkSpaces。您还可以节省使用 EC2 或 Fargate 实例来测试容器应用程序的成本。

此模式展示了如何使用 Amazon ECS Anywhere 在亚马逊 WorkSpaces 上部署 ECS 任务。它设置 ECS 集群并使用 AWS Directory Service Simple AD 来启动 WorkSpaces。然后,示例 ECS 任务在中启动 NGINX。 WorkSpaces

先决条件和限制

架构

目标技术堆栈

  • 虚拟私有云(VPC)

  • Amazon ECS 集群

  • 亚马逊 WorkSpaces

  • 具有 Simple AD 的 AWS Directory Service

目标架构

该架构包括以下服务与资源:

  • 自定义 VPC 中具有公有子网和私有子网的 ECS 集群

  • 在 VPC 中使用 Simple AD 为用户提供访问亚马逊的权限 WorkSpaces

  • 亚马逊使用 Simple A WorkSpaces D 在 VPC 中进行了配置

  • AWS Systems Manager 已激活,可将亚马逊添加 WorkSpaces 为托管实例

  • 亚马逊使用亚马逊 ECS 和 AWS Systems Manager 代理(SSM 代理) WorkSpaces 添加到 Systems Manager 和 ECS 集群中

  • 要在 ECS 集群中运行的 WorkSpaces ECS 任务示例

工具

  • AWS Directory Service Simple Active Directory (Simple AD) 是由 Samba 4 Active Directory Compatible Server 提供支持的一个独立托管目录。Simple AD 提供了 AWS Managed Microsoft AD 提供的部分功能,包括管理用户和安全连接Amazon EC2 实例的功能。

  • Amazon Elastic Container Service (Amazon ECS)是一项快速且可扩展的容器管理服务,可帮助运行、停止和管理集群上的容器。

  • AWS Identity and Access Management(AWS IAM)通过控制验证和授权使用您 AWS 资源的用户,帮助您安全地管理对您 AWS 资源的访问。

  • AWS Systems Manager 可帮助您管理在 Amazon Web Services Cloud 中运行的应用程序和基础设施。它简化了应用程序和资源管理,缩短了检测和解决操作问题的时间,并帮助您大规模安全地管理 AWS 资源。

  • 亚马逊 WorkSpaces可帮助您为用户配置基于云的虚拟 Microsoft Windows 或 Amazon Linux 桌面,即WorkSpaces。 WorkSpaces 无需购买和部署硬件或安装复杂软件。

操作说明

任务描述所需技能

创建和配置 ECS 集群。

要创建 ECS 集群,按照 AWS 文档中的说明进行操作,包括以下步骤:

  • 对于选择集群兼容性,请选择仅联网,这将支持 Amazon WorkSpace 作为 ECS 集群的外部实例。

  • 选择 Create a new (创建新的 )。

云架构师
任务描述所需技能

设置 Simple AD 并启动亚马逊 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
云架构师

将 AmazonSSM ManagedInstanceCore 策略添加到 IAM 角色中。

运行以下命令。

aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
云架构师

将 Amazon ContainerServicefor EC2 ec2Role 策略添加到 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-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 存储库。

若要添加企业 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 角色。

附件部分下载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

应用程序开发人员

相关资源

附件

要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip