教程:将 FSx for Windows File Server 文件系统与 Amazon ECS 结合使用
FSx for Windows File Server 提供完全托管的 Windows 文件服务器,由本地的 Windows 文件系统支持。使用 FSx for Windows File Server 和 Amazon ECS 时,您可以使用永久、分布式、共享的静态文件存储来配置 Windows 任务。有关更多信息,请参阅 FSx for Windows File Server 用户指南中的什么是 FSx for Windows File Server?
您可以使用 FSx for Windows File Server 来部署需要访问共享外部存储、高可用区域存储或高吞吐量存储的 Windows 工作负载。您可以将一个或多个 FSx for Windows File Server 文件系统卷挂载到 ECS Windows 实例上运行的 ECS 容器中。在单个 ECS 任务中,您可以在多个 ECS 容器之间共享 FSx for Windows File Server 文件系统卷的 FSX。
FSx for Windows File Server 可能并非在所有区域都可用。有关哪些区域支持 FSx for Windows File Server 的 更多信息,请参阅 AWS 一般参考中的 Amazon FSx 端点和配额。
在本教程中,启动经 ECS 优化的 Windows 实例,该实例托管 FSx for Windows File Server 文件系统和可访问该文件系统的容器。要执行此操作,您首先创建一个AWS Directory Service AWS托管 Microsoft Active Directory。然后,您可以创建 Amazon FSx for Windows File Server 文件系统和 ECS 任务定义的 ECS 集群。您可以配置容器的任务定义使用 FSx for Windows File Server 文件系统。最后,您测试文件系统。
每次启动或删除 Active Directory 或 FSx for Windows File Server 文件系统时都需要 20 到 45 分钟。准备至少保留 90 分钟以完成本教程或通过几个课程完成本教程。
教程的先决条件
-
管理用户。请参阅设置以使用 Amazon ECS。
-
(可选)一个 pem 密钥对,用于通过 RDP 访问连接到您的 EC2 Windows 实例。有关如何创建密钥对的信息,请参阅Windows 实例用户指南中的 Amazon EC2 密钥对和 Windows 实例。
-
至少有一个公有子网和一个私有子网以及一个安全组的 VPC。您可以使用您的原定设置 VPC。您不需要 NAT 网关或设备。AWS Directory Service 不支持 Active Directory 的网络地址转换(NAT)。为了实现这一点,您的 VPC 中必须有 Active Directory、FSx for Windows File Server 文件系统、ECS 集群和 ECS 实例。有关 VPC 和 Active Directory 的更多信息,请参阅 AWS 托管 Microsoft AD 先决条件中的 Amazon VPC 控制台向导配置。
-
IAM ecsInstanceRole 和 ecsTaskExecutionRole 权限与您的账户关联。这些服务链接角色允许服务代表您进行 API 调用并访问容器、机密、目录和文件服务器。
步骤 1:创建 IAM 访问角色
使用 AWS Management Console 创建集群
-
请参阅 Amazon ECS 容器实例 IAM 角色 来检查你是否有ecsInstanceRole,如果没有,查看你如何创建。
-
我们建议为实际生产环境中的最低权限自定义角色策略。为了完成本教程,请验证以下 AWS 托管策略附加到您的 ecsInstanceRole 上。如果尚未附加策略,则附加策略。
-
AmazonEC2ContainerServiceforEC2Role
要附加 AWS 托管策略
-
打开 IAM 控制台
。 -
在导航窗格中,选择 Roles (角色)。
-
Choose an
.AWS managed role
-
依次选择权限和附加策略。
-
要缩小要附加的可用策略范围,请使用筛选条件。
-
选择适当的策略,然后选择附加策略。
-
-
请参阅 Amazon ECS 任务执行 IAM 角色 来检查你是否有ecsTaskExecutionRole,如果没有,查看你如何创建。
我们建议为实际生产环境中的最低权限自定义角色策略。为了完成本教程,请验证以下 AWS 托管策略附加到您的 ecsTaskExecutionRole上。如果尚未附加策略,则附加策略。使用上一节中给出的过程附加 AWS 托管策略。
-
SecretsManagerReadWrite
-
AmazonFSxReadOnlyAccess
-
AmazonSSMReadOnlyAccess
-
AmazonECSTaskExecutionRolePolicy
-
步骤 2:创建 Windows Active Directory (AD)
-
按照 AWS Directory Service 管理指南中创建 AWS 托管 AD 目录中描述的步骤进行操作。使用您为本教程指定的 VPC。在创建您的 AWS 托管式 AD Directory 的步骤 3 中,保存用户名和密码,以便在以下步骤中使用。另外,请注意完全限定的域名,以备将来使用。在创建 Active Directory 时,您可以继续完成以下步骤。
-
创建要在以下步骤中使用的 AWS Secrets Manager 密码。有关更多信息,请参阅 AWS Secrets Manager 用户指南中的 AWSSecrets Manager 入门。
-
单击存储新密钥。
-
选择其他密钥类型。
-
对于私有密钥/值,在第一行创建值为
admin
的密钥username
。点击+ 添加行。 -
在新行中,创建密钥
password
。对于值,键入在创建 AWS 托管 AD 目录的步骤 3 中输入的密码。 -
点击下一步按钮。
-
提供密钥名称和说明。单击 Next(下一步)。
-
单击 Next(下一步)。单击存储。
-
在密钥列表页面上,单击您刚刚创建的密钥。
-
保存新密钥的 ARN,以便在以下步骤中使用。
-
您的 Active Directory 正在创建时,您可以继续执行下一步。
步骤 3:确认并更新安全组规则
在此步骤中,您将验证并更新您正在使用的安全组的规则。对此,您可以使用为 VPC 创建的原定设置安全组。
验证并更新安全组。
您需要创建或编辑安全组以从端口发送数据和向端口发送数据,在 FSx for Windows File Server 用户指南中的 Amazon VPC 安全组中描述这些端口。您可以通过创建下表入站规则的第一行中显示的安全组入站规则来执行此操作。规则允许来自分配给相同安全组的网络接口(及其关联实例)的入站流量。您创建的所有云资源都位于同一 VPC 中,并连接到同一安全组。因此,此规则允许根据需要向 FSx for Windows File Server 系统、Active Directory 和 ECS 实例发送流量。其他入站规则允许流量为网站提供服务,并允许 RDP 访问连接到 ECS 实例。
下表显示了本教程需要哪些安全组入站规则。
类型 | 协议 | 端口范围 | 源 |
---|---|---|---|
所有流量 |
All |
全部 |
|
自定义 TCP |
TCP |
8080 |
0.0.0.0/0 |
RDP |
TCP |
3389 |
EC2 实例的公有 IP 地址。 |
下表显示了本教程所需的安全组出站规则。
类型 | 协议 | 端口范围 | 目标位置 |
---|---|---|---|
所有流量 |
All |
All |
0.0.0.0/0 |
-
打开EC2 控制台
并从左侧菜单中选择安全组。 -
从现在显示的安全组列表中,选中用于本教程的安全组左侧的复选框。
显示您的安全组详细信息。
-
通过选择 Inbound rules(入站规则)或 Outbound rules(出站规则)选项卡并选择 Edit inbound rules(编辑入站规则)或 Edit outbound rules(编辑出站规则)按钮编辑入站和出站规则。编辑规则以匹配前表中显示的规则。在本教程稍后创建EC2实例后,使用 EC2 实例的公共IP地址编辑入站规则 RDP 源,如Amazon EC2 Windows 实例用户指南中的连接到Windows实例中所述。
步骤 4:创建 Amazon FSx for Windows File Server 文件系统
验证并更新安全组,创建 Active Directory 并处于活动状态后,在与 Active Directory 相同的 VPC 中创建 FSx for Windows File Server 文件系统。使用以下步骤创建 FSx for Windows File Server 文件系统供 Windows 任务使用。
创建您的第一个文件系统。
-
打开 Amazon FSx 控制台
。 -
在控制面板上,选择创建文件系统以启动文件系统创建向导。
-
在选择文件系统类型页面上,选择 FSx for Windows file Server,然后选择下一步。显示创建文件系统 页面。
-
在文件系统详细信息部分中,为您的文件系统提供一个名称。命名您的文件系统可以更轻松地查找和管理它们。最多可以使用 256 个 Unicode 字符。允许的字符包括字母、数字、空格和特殊字符加号 (+)。减号 (-)、等号 (=)、句点 (.)、下划线 (_)、冒号 (:) 和正斜杠 (/)。
-
对于部署类型,选择单可用区部署部署在单个可用区中的文件系统。单可用区 2是最新一代的单可用区文件系统,支持 SSD 和 HDD 存储。
-
对于存储类型,选择 HDD。
-
对于存储容量,输入最小存储容量。
-
保持吞吐量容量设置为原定设置。
-
在网络和安全部分,选择您为 AWS Directory Service 目录选择的同一个 Amazon VPC。
-
对于VPC 安全组,选择选择在步骤3:验证和更新安全组中验证的安全组。
-
对于Windows 身份验证,选择 AWS托管 Microsoft Active Directory,然后选择您的 AWS Directory Service 目录。
-
对于加密,请保留 aws/fsx (原定设置)的原定设置加密密钥设置。
-
保留维护首选项的原定设置。
-
点击下一步按钮。
-
检查创建文件系统页面上显示的文件系统配置。请注意创建文件系统后可以修改的文件系统设置,以供参考。选择 Create file system。
-
请记下文件系统 ID 值。您将在后面的步骤中用到它。
在创建 FSx for Windows File Server 文件系统时,您可以继续执行后续步骤以创建集群和 EC2 实例。
步骤 5:创建 Amazon ECS 集群
使用经典 Amazon ECS 控制台创建集群
-
打开 Amazon ECS 控制台
。 -
在导航窗格中,选择 Clusters。
-
在 Clusters 页面上,选择 Create Cluster。
-
选择 EC2 Windows + Networking,然后选择 Next step。
-
对于集群名称,输入
windows-fsx-cluster
。 -
单击群集名称下的复选框创建空集群。
-
单击右下角的创建按钮。
-
成功创建集群时单击查看集群按钮。
您现在可以在这个页面中查看集群的详细信息。
步骤 6:创建 Amazon ECS 实例
将一个经 ECS 优化的 Windows EC2 实例启动到您刚才使用 AWS Management Console 和经典 Amazon ECS 控制台创建的 ECS 集群中
-
请转到 Amazon ECS 开发人员指南中的经 Amazon ECS 优化的 AMI,查找与您的 VPC 位于同一区域的最新版本的 Windows Server 2019 Full AMI。
-
您可以使用以下步骤之一获取最新版本。
向下滚动到 Windows Server 2019 Full AMI 表。
-
在表中查找您所在地区的最新版本。单击查看 AMI ID链接到一个页面,您可以在此页面找到最新版本的 AMI ID。为后续步骤保存 AMI ID 的副本。
-
运行给定的 Systems Manager 命令,使用 AWS CLI 并保存返回的 AMI ID 的副本。
-
-
打开 Amazon EC2 控制台
。 -
点击启动实例按钮,然后选择启动实例。
您目前所在页面列出了可用的EC2 实例。
-
选择 EC2 实例的 AMI。
-
在 Quick Start 下,单击社群 AMI。
-
在搜索字段中,输入您从上一步保存的 AMI ID,然后按返回。
-
选择与您在上一步中保存的 AMI ID 匹配的 Windows Server 2019 Full AMI。
您现在位于列出实例类型的页面。
-
-
对于实例类型页面,选择 t2.medium or t2.micro 并单击下一步:配置实例详细信息。
-
配置实例详细信息
-
在配置实例详细信息页面上,实例的数量输入 1。
-
对于网络,选择您的 VPC。
-
对于子网,选择公有子网。
-
对于自动分配公有 IP,选择
Enable
。 -
对于域加入目录,选择您创建的 Active Directory 的 ID。此选项域在 EC2 实例启动时加入您的 AD。
-
对于IAM 角色,从下拉菜单中选择您的 ecsInstanceRole。
-
滚动到页面底部,然后将以下内容输入到用户数据文本字段。
<powershell> Initialize-ECSAgent -Cluster
windows-fsx-cluster
-EnableTaskIAMRole </powershell> -
单击下一步:添加存储按钮。
-
单击下一步:添加标签按钮。
-
单击下一步:配置安全组按钮。
-
-
在配置安全组页面上,选择您在步骤 3:验证并更新您的安全组中验证并更新的安全组。如果尚未存在,请添加入站 RDP TCP 规则,允许来自 EC2 实例 IP 地址的流量通过端口 3389,前提是您希望能够将 RD P传输到实例中。
-
点击查看和启动按钮。
-
在查看实例启动页面上,单击启动。
-
对于 Key pair (密钥对),选择要用于容器实例进行 RDP 访问的 Amazon EC2 密钥对。如果您未指定密钥对,则无法使用 RDP 连接到容器实例。有关更多信息,请参阅教程的先决条件。
-
点击查看实例查看实例列表中的新实例状态。
-
打开经典 Amazon ECS 控制台
并选择 Clusters(集群)。 -
选择您的 fsx-windows-cluster 集群。
-
选择 ECS 实例选项卡,验证您的 ECS实例是否已在 fsx-windows-cluster 集群中注册。
步骤 7:注册 Windows 任务定义
您必须先注册任务定义,然后才能在 Amazon ECS 集群中运行 Windows 容器。以下任务定义示例在具有 容器映像的容器实例的端口 8080 上显示一个简单网页。此任务将启动两个具有 FSX 文件系统访问权限的容器。第一个容器将 HTML 文件写入文件系统。第二个容器从文件系统下载 HTML 文件并提供网页。
使用经典 Amazon ECS 控制台注册示例任务定义
-
打开 Amazon ECS 控制台
。 -
在导航窗格中,选择 Task Definitions。
-
在 Task Definitions (任务定义) 页面上,选择 Create new Task Definition (创建新任务定义)。
-
在 Select launch type compatibilities (选择启动类型兼容性) 页面上,选择 EC2、Next step (下一步)。
注意 Fargate 启动类型与 Windows 容器不兼容。
-
在创建新任务定义页面上,滚动到页面底部并选择通过 JSON 配置。
-
使用以下示例任务定义 JSON。替换任务执行角色的值以及有关 FSx 文件系统的详细信息,然后选择 Save(保存)。
{ "containerDefinitions": [ { "entryPoint": [ "powershell", "-Command" ], "portMappings": [], "command": ["New-Item -Path C:\\fsx-windows-dir\\index.html -ItemType file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>It Works!</h2> <p>You are using Amazon FSx for Windows File Server file system for persistent container storage.</p>' -Force"], "cpu": 512, "memory": 256, "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019", "essential": false, "name": "container1", "mountPoints": [ { "sourceVolume": "fsx-windows-dir", "containerPath": "C:\\fsx-windows-dir", "readOnly": false } ] }, { "entryPoint": [ "powershell", "-Command" ], "portMappings": [ { "hostPort": 8080, "protocol": "tcp", "containerPort": 80 } ], "command": ["Remove-Item -Recurse C:\\inetpub\\wwwroot\\* -Force; Start-Sleep -Seconds 120; Move-Item -Path C:\\fsx-windows-dir\\index.html -Destination C:\\inetpub\\wwwroot\\index.html -Force; C:\\ServiceMonitor.exe w3svc"], "mountPoints": [ { "sourceVolume": "fsx-windows-dir", "containerPath": "C:\\fsx-windows-dir", "readOnly": false } ], "cpu": 512, "memory": 256, "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019", "essential": true, "name": "container2" } ], "family": "fsx-windows", "executionRoleArn": "arn:aws:iam::111122223333:role/ecsTaskExecutionRole", "volumes": [ { "name": "fsx-windows-vol", "fsxWindowsFileServerVolumeConfiguration": { "fileSystemId": "fs-0eeb5730b2EXAMPLE", "authorizationConfig": { "domain": "example.com", "credentialsParameter": "arn:arn-1234" }, "rootDirectory": "share" } } ] }
-
点击容器定义下的容器 1。
-
滚动到 STORAGE AND LOGGING(存储和日志记录),对于 Mount points Source volume(挂载点源卷),从下拉菜单中选择 fsx-windows-vol。
-
对于容器路径,输入
C:\fsx-windows-dir
。 -
点击更新按钮。
-
在容器定义中针对 container2 重复最后四个步骤容器。
-
对于任务执行角色,从下拉菜单中选择 ecsTaskExecutionRole。
-
验证您的信息并单击创建按钮。
步骤 8:运行任务并查看结果
在运行任务之前,请验证 FSx for Windows File Server 文件系统的状态是Available。可用后,您可以使用创建的任务定义运行任务。任务首先是创建容器,使用文件系统在它们之间随机打开 HTML 文件。随机打开后,Web 服务器提供简单的 HTML 页面。
您可能无法从 VPN 内连接到网站。
使用经典控制台运行任务并查看结果。
-
打开 Amazon ECS 控制台
。 -
选择您的 fsx-windows-cluster 集群。
-
选择任务选项卡,然后运行新任务。
-
对于启动类型,选择 EC2
-
对于任务定义,选择您之前创建的 fsx-windows 任务定义,然后选择运行任务。
-
在任务 选项卡下,选择刚刚运行的任务。您的任务将出现在任务列表中。
-
当您的任务状态为RUNNING,单击任务 ID。
-
展开容器 2。
-
向下滚动并单击与容器关联的外部 IP 地址。您的浏览器将打开并显示以下消息。
注意 如果未看到此消息,请检查是否未在 VPN 中运行,并确保容器实例的安全组允许端口 8080上的入站网络 HTTP 通信。
步骤 9:清除
要花费 20 到45 分钟删除 FSx for Windows File Server 文件系统或 AD。您必须等待,直到 FSx for Windows File Server 文件系统删除操作完成,然后再开始 AD 删除操作。
移除 Amazon FSx for Windows File Server 文件系统。
-
打开 Amazon FSx 控制台
。 -
单击刚刚创建的 FSx for Windows File Server 文件系统左侧的单选按钮。
-
点击操作。
-
选择删除文件系统。
删除 AD。
-
单击刚刚创建的 AD 左侧的单选按钮。
-
点击操作。
-
选择删除目录。
删除 ECS 集群。
-
打开 Amazon ECS 控制台
。 -
选择集群。
-
选择您创建的集群。
-
单击删除集群按钮。
删除 ECS 实例。
-
打开 Amazon EC2 控制台
。 -
从左侧菜单中,选择实例。
-
选中您在本练习期间创建的 EC2 实例左侧的复选框。
-
单击实例状态然后终止实例。
删除密钥。
-
选择您为本演练创建的密钥。
-
点击操作。
-
选择删除密钥。