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

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

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

由 Akash Kumar 创作 () AWS

摘要

亚马逊弹性容器服务 (AmazonECS) Anywhere 支持在任何环境中部署亚马逊ECS任务,包括 Amazon Web Services (AWS) 托管基础设施和客户托管基础设施。您可以在使用在云端运行且始终处于最新状态的完全AWS托管的控制平面时执行此操作。 

企业经常使用 Amazon WorkSpaces 开发基于容器的应用程序。这需要亚马逊弹性计算云 (AmazonEC2) 或带有亚马逊ECS集群的 AWS Fargate 来测试和运行ECS任务。现在,通过使用 Amazon ECS Anywhere,您可以将 Amazon WorkSpaces 作为外部实例直接添加到ECS集群中,并且可以直接运行任务。这可以缩短您的开发时间,因为您可以在 Amazon 上使用本地ECS集群测试容器 WorkSpaces。您还可以节省使用EC2或 Fargate 实例来测试容器应用程序的成本。

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

先决条件和限制

架构

目标技术堆栈

  • 虚拟私有云 (VPC)

  • 亚马逊ECS集群

  • Amazon WorkSpaces

  • AWS带有 Simple AD 的目录服务

目标架构

ECSAnywhere 设置ECS集群并使用 Simple AD 启动 WorkSpaces。

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

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

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

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

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

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

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

工具

  • AWSDirectory Service Simple AD(Simple AD)是一个独立的托管目录,由 Samba 4 Active Directory 兼容服务器提供支持。Simple AD 提供了 Microsoft AD AWS 托管提供的部分功能,包括管理用户和安全连接亚马逊EC2实例的功能。

  • Amazon 弹性容器服务 (AmazonECS) 是一项快速且可扩展的容器管理服务,可帮助您在集群上运行、停止和管理容器。

  • AWSIdentity and Access Management (IAM) 通过控制谁经过身份验证并有权使用AWS资源,从而帮助您安全地管理对资源的访问权限。

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

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

操作说明

任务描述所需技能

创建和配置集ECS群。

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

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

  • 选择创建新的VPC。

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

设置 Simple AD 并启动亚马逊 WorkSpaces。

要为您新创建的 Amazon 配置一个 Simple AD 目录VPC并启动该目录 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
云架构师

向IAM角色添加 A mazonSSMManaged InstanceCore 策略。

运行以下命令。

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

将 Amazon EC2ContainerServiceforEC2Role 政策添加到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。

要连接和设置您的工作区,请按照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
应用程序开发人员

在亚马逊 Linux 上添加EPEL存储库。

要为企业 Linux (EPEL) 存储库添加额外软件包,请运行命令sudo amazon-linux-extras install epel -y

应用程序开发人员

ECS随时随地安装 Amazon。

要运行安装脚本,请使用以下命令。

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