将 FSx for Windows File Server 文件系统与 Amazon ECS 结合使用 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

将 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 文件系统卷挂载到 EC2 Windows 实例上运行的容器中。在单个 ECS 任务中,您可以在多个容器之间共享 FSx for Windows File Server 文件系统卷的 FSX。

注意

FSx for Windows File Server 可能并非在所有区域都可用。有关哪些区域支持 FSx for Windows File Server 的更多信息,请参阅 Amazon Web Services 一般参考 中的 Amazon FSx 端点和配额

在本教程中,启动经 ECS 优化的 Windows 实例,该实例托管 FSx for Windows File Server 文件系统和可访问该文件系统的容器。要执行此操作,您首先创建一个Amazon Directory Service Amazon托管 Microsoft Active Directory。然后,您可以创建适用于 Windows File Server 的 Amazon FSx 文件系统和带有 Amazon EC2 实例和 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 网关或设备。Amazon Directory Service 不支持 Active Directory 的网络地址转换(NAT)。为了实现这一点,您的 VPC 中必须有 Active Directory、FSx for Windows File Server 文件系统、ECS 集群和 EC2 实例。有关 VPC 和 Active Directory 的更多信息,请参阅 Amazon 托管 Microsoft AD 先决条件中的 Amazon VPC 控制台向导配置

  • IAM ecsInstanceRole 和 ecsTaskExecutionRole 权限与您的账户关联。这些服务链接角色允许服务代表您进行 API 调用并访问容器、密钥、目录和文件服务器。

步骤 1:创建 IAM 访问角色

使用 Amazon Web Services Management Console 创建集群
  1. 请参阅 Amazon ECS 容器实例 IAM 角色 来检查你是否有ecsInstanceRole,如果没有,查看你如何创建。

  2. 我们建议为实际生产环境中的最低权限自定义角色策略。为了完成本教程,请验证以下 Amazon 托管策略附加到您的 ecsInstanceRole 上。如果尚未附加策略,则附加策略。

    • AmazonEC2ContainerServiceforEC2Role

    • AmazonSSMManagedInstanceCore

    • AmazonSSMDirectoryServiceAccess

    要附加 Amazon 托管策略

    1. 打开 IAM 控制台

    2. 在导航窗格中,选择 Roles (角色)

    3. 选择 Amazon 托管角色

    4. 依次选择权限、附加策略

    5. 要缩小要附加的可用策略范围,请使用筛选条件

    6. 选择适当的策略,然后选择附加策略

  3. 请参阅 Amazon ECS 任务执行 IAM 角色 来检查你是否有ecsTaskExecutionRole,如果没有,查看你如何创建。

    我们建议为实际生产环境中的最低权限自定义角色策略。为了完成本教程,请验证以下 Amazon 托管策略附加到您的 ecsTaskExecutionRole上。如果尚未附加策略,则附加策略。使用上一节中给出的过程附加 Amazon 托管策略。

    • SecretsManagerReadWrite

    • AmazonFSxReadOnlyAccess

    • AmazonSSMReadOnlyAccess

    • AmazonECSTaskExecutionRolePolicy

步骤 2:创建 Windows Active Directory (AD)

  1. 按照 Amazon Directory Service 管理指南创建 Amazon 托管 AD 目录中描述的步骤进行操作。使用您为本教程指定的 VPC。在创建您的 Amazon 托管式 AD Directory 的步骤 3 中,保存用户名和密码,以便在以下步骤中使用。另外,请注意完全限定的域名,以备将来使用。在创建 Active Directory 时,您可以继续完成以下步骤。

  2. 创建要在以下步骤中使用的 Amazon Secrets Manager 密码。有关更多信息,请参阅 Amazon Secrets Manager 用户指南中的 AmazonSecrets Manager 入门

    1. 打开 Secrets Manager 控制台

    2. 单击存储新密钥

    3. 选择其他密钥类型

    4. 对于私有密钥/值,在第一行创建值为 admin 的密钥 username。点击+ 添加行

    5. 在新行中,创建密钥 password。对于值,键入在创建 Amazon 托管 AD 目录的步骤 3 中输入的密码。

    6. 点击下一步按钮。

    7. 提供密钥名称和说明。单击下一步

    8. 单击下一步。单击存储

    9. 密钥列表页面上,单击您刚刚创建的密钥。

    10. 保存新密钥的 ARN,以便在以下步骤中使用。

    11. 您的 Active Directory 正在创建时,您可以继续执行下一步。

步骤 3:确认并更新安全组规则

在此步骤中,您将验证并更新您正在使用的安全组的规则。对此,您可以使用为 VPC 创建的原定设置安全组。

验证并更新安全组。

您需要创建或编辑安全组以从端口发送数据和向端口发送数据,在 FSx for Windows File Server 用户指南中的 Amazon VPC 安全组中描述这些端口。您可以通过创建下表入站规则的第一行中显示的安全组入站规则来执行此操作。规则允许来自分配给相同安全组的网络接口(及其关联实例)的入站流量。您创建的所有云资源都位于同一 VPC 中,并连接到同一安全组。因此,此规则允许根据需要向 FSx for Windows File Server 系统、Active Directory 和 ECS 实例发送流量。其他入站规则允许流量为网站提供服务,并允许 RDP 访问连接到 ECS 实例。

下表显示了本教程需要哪些安全组入站规则。

类型 协议 端口范围 来源

所有流量

All

全部

sg-securitygroup

HTTPS

TCP

443

0.0.0.0/0

RDP

TCP

3389

您的笔记本电脑 IP 地址

下表显示了本教程所需的安全组出站规则。

类型 协议 端口范围 目标位置

所有流量

All

全部

0.0.0.0/0

  1. 打开EC2 控制台并从左侧菜单中选择安全组

  2. 从现在显示的安全组列表中,选中用于本教程的安全组左侧的复选框。

    显示您的安全组详细信息。

  3. 通过选择 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 任务使用。

创建您的第一个文件系统。
  1. 打开 Amazon FSx 控制台

  2. 在控制面板上,选择创建文件系统以启动文件系统创建向导。

  3. 选择文件系统类型页面上,选择 FSx for Windows File Server,然后选择下一步。显示创建文件系统页面。

  4. 文件系统详细信息部分中,为您的文件系统提供一个名称。命名您的文件系统可以更轻松地查找和管理它们。最多可以使用 256 个 Unicode 字符。允许的字符包括字母、数字、空格和特殊字符加号 (+)。减号 (-)、等号 (=)、句点 (.)、下划线 (_)、冒号 (:) 和正斜杠 (/)。

  5. 对于部署类型,选择单可用区部署部署在单个可用区中的文件系统。单可用区 2是最新一代的单可用区文件系统,支持 SSD 和 HDD 存储。

  6. 对于存储类型,选择 HDD

  7. 对于存储容量,输入最小存储容量。

  8. 保持吞吐量容量设置为原定设置。

  9. 网络和安全部分,选择您为 Amazon Directory Service 目录选择的同一个 Amazon VPC。

  10. 对于VPC 安全组,选择选择在步骤3:验证和更新安全组中验证的安全组

  11. 对于Windows 身份验证,选择 Amazon托管 Microsoft Active Directory,然后选择您的 Amazon Directory Service 目录。

  12. 对于加密,请保留 aws/fsx (原定设置)的原定设置加密密钥设置。

  13. 保留维护首选项的原定设置。

  14. 点击下一步按钮。

  15. 检查创建文件系统页面上显示的文件系统配置。请注意创建文件系统后可以修改的文件系统设置(供您参考)。选择创建文件系统

  16. 请记下文件系统 ID 值。您将在后面的步骤中用到它。

    在创建 FSx for Windows File Server 文件系统时,您可以继续执行后续步骤以创建集群和 EC2 实例。

步骤 5:创建 Amazon ECS 集群

使用 Amazon ECS 控制台创建集群
  1. https://console.aws.amazon.com/ecs/v2 打开控制台。

  2. 从导航栏中,选择要使用的区域。

  3. 在导航窗格中,选择集群

  4. Clusters(集群)页面上,选择 Create cluster(创建集群)。

  5. 集群配置下方的集群名称中,输入 windows-fsx-cluster

  6. 展开基础设施,清除 Amazon Fargate(无服务器),然后选择 Amazon EC2 实例

    1. 要创建 自动扩缩组,请从 自动扩缩组(ASG)(自动扩缩组(ASG))中,选择 Create new group(创建新组),然后提供有关组的以下详细信息:

      • 对于操作系统/架构,请选择 Windows Server 2019 Core

      • 对于 EC2 实例类型,选择 t2.medium 或 t2.micro。

  7. 选择创建

步骤 6:创建经 Amazon ECS 优化的 Amazon EC2 实例

创建 Amazon ECS Windows 容器实例。

创建 Amazon ECS 实例
  1. 使用 aws ssm get-parameters 命令检索托管您 VPC 的区域的 AMI 名称。有关更多信息,请参阅检索经 Amazon ECS 优化的 AMI 元数据

  2. 用来创建启动实例的 Amazon EC2 控制台。

    1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

    2. 从导航栏中,选择要使用的区域。

    3. EC2 控制面板中,选择 Launch Instance(启动实例)。

    4. 对于 Name (名称),输入唯一的名称。

    5. 对于应用程序和操作系统映像(Amazon 系统映像),在搜索字段中,输入您检索的 AMI 名称。

    6. 对于实例类型,选择 t2.medium 或 t2.micro。

    7. 对于 Key pair (login)(密钥对 [登录]),选择一个密钥对。如果您未指定密钥对,则您

    8. 网络设置下,对于 VPC子网,选择您的 VPC 和公有子网。

    9. Network settings(网络设置)下,对于 Security group(安全组),可以选择现有安全组或创建新安全组。确保您选择的安全组在 教程的先决条件 中定义了入站和出站规则

    10. Network settings(网络设置)下,对于 Auto-assign Public IP(自动分配公有 IP),选择 Enable(启用)。

    11. 展开高级详细信息,然后对于域加入目录,选择您创建的 Active Directory 的 ID。此选项域在 EC2 实例启动时加入您的 AD。

    12. Advanced details(高级详细信息)下,对于 IAM instance profile(IAM 实例配置文件),选择 ecsInstanceRole

    13. 使用以下用户数据配置您的 Amazon ECS 容器实例。在 Advanced Details(高级详细信息)下,将以下脚本粘贴到 User data(用户数据)字段中,将 cluster_name 替换为您的集群的名称。

      <powershell> Initialize-ECSAgent -Cluster windows-fsx-cluster -EnableTaskIAMRole </powershell>
    14. 准备好后,选中确认字段,然后选择 Launch Instances

    15. 确认页面会让您知道自己的实例已启动。选择 View Instances 以关闭确认页面并返回控制台。

  3. https://console.aws.amazon.com/ecs/v2 打开控制台。

  4. 在导航窗格中,选择集群,然后选择 windows-fsx-cluster

  5. 选择基础设施选项卡,验证您的实例是否已在 windows-fsx-cluster 集群中注册。

步骤 7:注册 Windows 任务定义

您必须先注册任务定义,然后才能在 Amazon ECS 集群中运行 Windows 容器。以下任务定义示例显示一个简单网页。此任务将启动两个具有 FSX 文件系统访问权限的容器。第一个容器将 HTML 文件写入文件系统。第二个容器从文件系统下载 HTML 文件并提供网页。

  1. https://console.aws.amazon.com/ecs/v2 打开控制台。

  2. 在导航窗格中,选择 Task definitions(任务定义)。

  3. 选择 Create new task definition(创建新的任务定义)、Create new task definition with JSON(使用 JSON 创建新的任务定义)。

  4. 在 JSON 编辑器框中,替换任务执行角色的值以及有关 FSx 文件系统的详细信息,然后选择保存

    { "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": 443, "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-dir", "fsxWindowsFileServerVolumeConfiguration": { "fileSystemId": "fs-0eeb5730b2EXAMPLE", "authorizationConfig": { "domain": "example.com", "credentialsParameter": "arn:arn-1234" }, "rootDirectory": "share" } } ] }

步骤 8:运行任务并查看结果

在运行任务之前,请验证 FSx for Windows File Server 文件系统的状态是Available。可用后,您可以使用创建的任务定义运行任务。任务首先是创建容器,使用文件系统在它们之间随机打开 HTML 文件。随机打开后,Web 服务器提供简单的 HTML 页面。

注意

您可能无法从 VPN 内连接到网站。

使用 Amazon ECS 控制台运行任务并查看结果。
  1. https://console.aws.amazon.com/ecs/v2 打开控制台。

  2. 在导航窗格中,选择集群,然后选择 windows-fsx-cluster

  3. 选择任务选项卡,然后选择运行新任务

  4. 对于启动类型,选择 EC2

  5. 在部署配置下的任务定义中,选择 fsx-windows,然后选择创建

  6. 当您的任务状态为 RUNNING 时,选择任务 ID。

  7. 容器下,当 container1 状态为 STOPPED 时,选择 container2 以查看容器的详细信息。

  8. container2 的容器详细信息下,选择网络绑定,然后单击与容器关联的外部 IP 地址。您的浏览器将打开并显示以下消息。

    Amazon ECS Sample App
    It Works! 
    You are using Amazon FSx for Windows File Server file system for persistent container storage.
    注意

    显示消息可能需要几分钟时间。如果您在几分钟后未看到此消息,请检查是否未在 VPN 中运行,并确保容器实例的安全组允许端口 443 上的入站网络 HTTP 通信。

步骤 9:清除

注意

要花费 20 到45 分钟删除 FSx for Windows File Server 文件系统或 AD。您必须等待,直到 FSx for Windows File Server 文件系统删除操作完成,然后再开始 AD 删除操作。

删除 FSx for Windows File Server 文件系统。
  1. 打开 Amazon FSx 控制台

  2. 选择刚刚创建的 FSx for Windows File Server 文件系统左侧的单选按钮。

  3. 选择操作

  4. 选择删除文件系统

删除 AD。
  1. 打开Amazon Directory Service控制台

  2. 选择刚刚创建的 AD 左侧的单选按钮。

  3. 选择操作

  4. 选择删除目录

请删除集群。
  1. https://console.aws.amazon.com/ecs/v2 打开控制台。

  2. 在导航窗格中,选择集群,然后选择 fsx-windows-cluster

  3. 选择删除集群

  4. 输入短语,然后选择删除

终止 EC2 实例。
  1. 打开 Amazon EC2 控制台

  2. 从左侧菜单中,选择实例

  3. 选中您创建的 EC2 实例左侧的框。

  4. 单击实例状态终止实例

删除密钥。
  1. 打开 Secrets Manager 控制台

  2. 选择您为本演练创建的密钥。

  3. 点击操作

  4. 选择删除密钥