

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

# 使用 Amazon ECS Anywhere 在亚马逊 WorkSpaces 上运行亚马逊 ECS 任务
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere"></a>

*Akash Kumar，Amazon Web Services*

## Summary
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere-summary"></a>

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

## 先决条件和限制
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere-prereqs"></a>
+ 一个有效的 Amazon Web Services account
+ AWS 命令行界面（AWS CLI）
+ [在您的计算机上配置的](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) AWS 凭证

## 架构
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere-architecture"></a>

**目标技术堆栈**
+ 虚拟私有云（VPC）
+ Amazon ECS 集群
+ Amazon WorkSpaces
+ 具有 Simple AD 的 AWS Directory Service

**目标架构 **

![ECS Anywhere 设置 ECS 群集并使用 Simple AD 启动 WorkSpaces。](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/da8b2249-3423-485c-9fef-6f902025e969/images/fd354d14-f29b-4b9e-8f1a-c3cb7ed4d6bf.png)


 

该架构包括以下服务与资源：
+ 自定义 VPC 中具有公有子网和私有子网的 ECS 集群
+ 在 VPC 中使用 Simple AD 为用户提供访问亚马逊的权限 WorkSpaces
+ 亚马逊使用 Simple A WorkSpaces D 在 VPC 中进行了配置
+ AWS Systems Manager 已激活，可将亚马逊添加 WorkSpaces 为托管实例
+ 亚马逊使用 Amazon ECS 和 AWS Systems Manager 代理（SSM 代理） WorkSpaces 添加到 Systems Manager 和 ECS 集群中
+ 要在 ECS 集群中运行的 WorkSpaces ECS 任务示例

## 工具
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere-tools"></a>
+ [AWS Directory Service Simple Active Directory（Simple AD）](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_simple_ad.html) 是由 Samba 4 Active Directory Compatible Server 提供支持的一个独立托管目录。Simple AD 提供了 AWS Managed Microsoft AD 提供的部分功能，包括管理用户和安全连接Amazon EC2 实例的功能。
+ [Amazon Elastic Container Service（Amazon ECS）](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)是一项快速、可扩展的容器管理服务，可帮助您运行、停止和管理集群上的容器。
+ [AWS Identity and Access Management (AWS IAM) ](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)通过控制验证和授权使用您 AWS 资源的用户，帮助您安全地管理对您 AWS 资源的访问。
+ [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) 可帮助您管理在 Amazon Web Services Cloud 中运行的应用程序和基础设施。它简化了应用程序和资源管理，缩短了检测和解决操作问题的时间，并帮助您大规模安全地管理 AWS 资源。
+ [亚马逊 WorkSpaces](https://docs.aws.amazon.com/workspaces/latest/adminguide/amazon-workspaces.html)可帮助您为用户配置基于云的虚拟 Microsoft Windows 或 Amazon Linux 桌面，即*WorkSpaces*。 WorkSpaces 无需购买和部署硬件或安装复杂的软件。

## 操作说明
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere-epics"></a>

### 设置 ECS 集群
<a name="set-up-the-ecs-cluster"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建和配置 ECS 集群。 | 要创建 ECS 集群，按照 [AWS 文档](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create_cluster.html)中的说明进行操作，包括以下步骤：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere.html) | 云架构师 | 

### 启动 Amazon WorkSpaces
<a name="launch-amazon-workspaces"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 设置 Simple AD 并启动亚马逊 WorkSpaces。 | 要为您新创建的 VPC 预置 Simple AD 目录并启动 Amazon WorkSpaces，请按照 [AWS 文档](https://docs.aws.amazon.com/workspaces/latest/adminguide/launch-workspace-simple-ad.html)中的说明进行操作。 | 云架构师 | 

### 为混合环境设置 AWS Systems Manager
<a name="set-up-aws-systems-manager-for-a-hybrid-environment"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 下载随附脚本。 | 在本地计算机上，下载*附件*部分中的 `ssm-trust-policy.json` 和 `ssm-activation.json` 文件。 | 云架构师 | 
| 添加 IAM 角色。 | 根据业务需求添加环境变量。<pre>export AWS_DEFAULT_REGION=${AWS_REGION_ID}<br />export ROLE_NAME=${ECS_TASK_ROLE}<br />export CLUSTER_NAME=${ECS_CLUSTER_NAME}<br />export SERVICE_NAME=${ECS_CLUSTER_SERVICE_NAME}</pre><br />运行如下命令。<pre>aws iam create-role --role-name $ROLE_NAME --assume-role-policy-document file://ssm-trust-policy.json</pre> | 云架构师 | 
| 将 AmazonSSMManagedInstanceCore 策略添加到 IAM 角色。 | 运行如下命令。<pre>aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore</pre> | 云架构师 | 
| 将 AmazonEC2ContainerServiceforEC2Role 策略添加到 IAM 角色。 | 运行如下命令。<pre>aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role</pre> | 云架构师 | 
| 验证 IAM 角色。 | 要验证 IAM 角色，请运行以下命令。<pre>aws iam list-attached-role-policies --role-name $ROLE_NAME</pre> | 云架构师 | 
| 激活 Systems Manager。 | 运行如下命令。<pre>aws ssm create-activation --iam-role $ROLE_NAME | tee ssm-activation.json</pre> | 云架构师 | 

### 添加 WorkSpaces 到 ECS 集群
<a name="add-workspaces-to-the-ecs-cluster"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
|  Connect 到你的 WorkSpaces。 | 要连接和设置您的 WorkSpaces，请按照 [AWS 文档](https://docs.aws.amazon.com/workspaces/latest/userguide/workspaces-user-getting-started.html)中的说明进行操作。 | 应用程序开发人员 | 
| 下载 ecs-anywhere 安装脚本。 | 在命令提示符下，运行以下 命令。<pre>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</pre> | 应用程序开发人员 | 
| 检查 Shell 脚本完整性。 | （可选）运行以下命令。<pre>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<br /><br /><br /></pre> | 应用程序开发人员 | 
| 在 Amazon Linux 上添加 EPEL 存储库。 | 若要添加企业 Linux (EPEL) 存储库，请运行命令 `sudo amazon-linux-extras install epel -y`。 | 应用程序开发人员 | 
| 安装 Amazon ECS Anywhere。 | 要运行安装脚本，请使用以下命令。<pre>sudo ./ecs-anywhere-install.sh --cluster $CLUSTER_NAME --activation-id $ACTIVATION_ID --activation-code $ACTIVATION_CODE --region $AWS_REGION<br /><br /><br /></pre> |  | 
| 查看 ECS 集群的实例信息。 | 要检查 Systems Manager 和 ECS 集群实例信息并验证 WorkSpaces 已添加到集群上，请在本地计算机上运行以下命令。<pre>aws ssm describe-instance-information" && "aws ecs list-container-instances --cluster $CLUSTER_NAME</pre> | 应用程序开发人员 | 

### 为添加 ECS 任务 WorkSpaces
<a name="add-an-ecs-task-for-the-workspaces"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建任务执行 IAM 角色。 | 从*附件*部分下载 `task-execution-assume-role.json` 和 `external-task-definition.json`。 <br />在本地计算机上运行以下命令。<pre>aws iam --region $AWS_DEFAULT_REGION create-role --role-name $ECS_TASK_EXECUTION_ROLE --assume-role-policy-document file://task-execution-assume-role.json</pre> | 云架构师 | 
| 将策略添加到该角执行色。 | 运行如下命令。<pre>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</pre> | 云架构师 | 
| 创建任务角色。 | 运行如下命令。<pre>aws iam --region $AWS_DEFAULT_REGION create-role --role-name $ECS_TASK_EXECUTION_ROLE --assume-role-policy-document file://task-execution-assume-role.json<br /><br /><br /></pre> | 云架构师 | 
| 将任务定义注册到集群。 | 在本地计算机上运行以下命令。<pre>aws ecs register-task-definition --cli-input-json file://external-task-definition.json</pre> | 云架构师 | 
| 运行任务。 | 在本地计算机上运行以下命令。<pre>aws ecs run-task --cluster $CLUSTER_NAME --launch-type EXTERNAL --task-definition nginx</pre> | 云架构师 | 
| 验证任务运行状态。 | 若要获取任务 ID，请运行以下命令。<pre>export TEST_TASKID=$(aws ecs list-tasks --cluster $CLUSTER_NAME | jq -r '.taskArns[0]')</pre><br />使用任务 ID 运行以下命令。<pre>aws ecs describe-tasks --cluster $CLUSTER_NAME --tasks ${TEST_TASKID}</pre> | 云架构师 | 
| 在上验证任务 WorkSpace。 | 要检查 NGINX 是否在上运行 WorkSpace，请运行命令。` curl http://localhost:8080` | 应用程序开发人员 | 

## 相关资源
<a name="run-amazon-ecs-tasks-on-amazon-workspaces-with-amazon-ecs-anywhere-resources"></a>
+ [ECS 集群](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html)
+ [设置混合环境](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-managedinstances.html)
+ [Amazon WorkSpaces](https://docs.aws.amazon.com/workspaces/latest/adminguide/amazon-workspaces.html)
+ [Simple AD](https://docs.aws.amazon.com/workspaces/latest/adminguide/launch-workspace-simple-ad.html)

## 附件
<a name="attachments-da8b2249-3423-485c-9fef-6f902025e969"></a>

[要访问与此文档关联的其他内容，请下载并解压缩以下文件：attachment.zip](samples/p-attach/da8b2249-3423-485c-9fef-6f902025e969/attachments/attachment.zip)