使用 AWS Fargate 上的 Windows 容器开始使用经典 Amazon ECS 控制台 - Amazon Elastic Container Service

使用 AWS Fargate 上的 Windows 容器开始使用经典 Amazon ECS 控制台

新体验现在已成为 Amazon ECS 控制台中的默认体验。有关更多信息,请参阅通过 AWS Fargate 上的 Windows 容器开始使用控制台

Amazon Elastic Container Service (Amazon ECS) 是一项高度可扩展的快速容器管理服务,可让您轻松运行、停止和管理容器。您可以通过在 AWS Fargate 上启动服务或任务,将容器托管在由 Amazon ECS 管理的无服务器基础设施上。有关 Fargate 上的 Amazon ECS 的广泛概述,请参阅 什么是 Amazon Elastic Container Service?

通过为任务使用 Fargate 启动类型,开始在 AWS Fargate 上使用 Amazon ECS。在 Amazon ECS 支持 AWS Fargate 的区域中,Amazon ECS 首次运行向导将引导您完成通过使用 Fargate 启动类型开始使用 Amazon ECS 的过程。该向导提供了创建集群和启动示例 Web 应用程序的选项。如果您已有在 Amazon ECS 中启动的 Docker 映像,可以使用该映像创建任务定义并改为将其用于集群。

先决条件

在开始之前,请确保完成 设置以使用 Amazon ECS 中的步骤,并且您的 AWS 用户具有 AdministratorAccessAmazon ECS 首次运行向导权限 IAM policy 示例中指定的权限。

首次运行向导会尝试自动创建任务执行 IAM 角色,这是 Fargate 任务需要的。要确保首次运行时能够创建该 IAM 角色,必须满足以下条件之一:

步骤 1:创建集群

您可以创建名为 windows 的新集群。

使用 AWS Management Console创建集群
  1. 打开位于 https://console.aws.amazon.com/ecs/ 的 Amazon ECS 控制台。

  2. 在导航窗格中,选择 Clusters

  3. Clusters 页面上,选择 Create Cluster

  4. 选择 Networking only(仅联网),然后选择 Next step(下一步)。

  5. Cluster name 中,为群集输入名称 (在本示例中,群集的名称是 windows)。最多能包含 255 个字母 (大写和小写字母)、数字、连字符和下划线。

  6. Networking 部分中,配置要启动容器实例的 VPC。默认情况下,集群创建向导会创建一个新的 VPC (具有位于不同可用区中的两个子网) 和一个安全组 (在端口 80 上对互联网开放)。这是一个适用于 HTTP 访问的基本设置。不过,您可以通过执行以下子步骤来修改这些设置。

    1. 要创建新的 VPC,请选择 CreateVPC(创建 VPC)。

    2. (可选)如果您选择创建新 VPC,请为 CIDR Block(CIDR 块)输入 VPC 的 CIDR 块。有关更多信息,请参阅 Amazon VPC 用户指南 中的您的 VPC 和子网

    3. 对于 Subnet 1(子网 1)和 Subnet 2(子网 2),输入每个子网的 CIDR 范围。

  7. 标签部分中,指定要与集群关联的每个标签的键和值。有关更多信息,请参阅标记 Amazon ECS 资源

  8. CloudWatch Container Insights 部分中,选择是否为集群启用 Container Insights。有关更多信息,请参阅Amazon ECS CloudWatch Container Insights

  9. 选择 Create(创建)。

    注意

    将 Windows 容器实例注册到集群最多需要花费 15 分钟的时间。

步骤 2:注册 Windows 任务定义

您必须先注册任务定义,然后才能在 Amazon ECS 集群中运行 Windows 容器。以下任务定义示例在具有 mcr.microsoft.com/windows/servercore/iis 容器映像的容器实例的端口 8080 上显示一个简单网页。

使用 AWS Management Console注册示例任务定义
  1. 打开位于 https://console.aws.amazon.com/ecs/ 的 Amazon ECS 控制台。

  2. 在导航窗格中,选择 Task Definitions

  3. Task Definitions (任务定义) 页面上,选择 Create new Task Definition (创建新任务定义)

  4. Select launch type compatibilities(选择启动类型兼容性)页面上,依次选择 FargateNext step(下一步)。

  5. 滚动到页面底部,选择 Configure via JSON (通过 JSON 配置)

  6. 将下面的示例任务定义 JSON 粘贴到文本区域 (替换预填充的 JSON),然后选择 Save

    将以下格式之一用于 operatingSystemFamily

    • WINDOWS_SERVER_2019_FULL

    • WINDOWS_SERVER_2019_CORE

    • WINDOWS_SERVER_2022_FULL

    • WINDOWS_SERVER_2022_CORE

    { "containerDefinitions": [ { "command": [ "New-Item -Path C:\\inetpub\\wwwroot\\index.html -Type 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>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>'; C:\\ServiceMonitor.exe w3svc" ], "entryPoint": [ "powershell", "-Command" ], "essential": true, "cpu": 2048, "memory": 4096, "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/fargate-windows-task-definition", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" } }, "name": "sample_windows_app", "portMappings": [ { "hostPort": 80, "containerPort": 80, "protocol": "tcp" } ] } ], "memory": "4096", "cpu": "2048", "networkMode": "awsvpc", "family": "windows-simple-iis-2019-core", "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole", "runtimePlatform": { "operatingSystemFamily": "WINDOWS_SERVER_2019_CORE" }, "requiresCompatibilities": [ "FARGATE" ] }
  7. 验证您的信息并选择 Create

使用 AWS CLI注册示例任务定义
  1. 创建名为 windows_fargate_sample_app.json 的文件。

  2. 使用您偏好的文本编辑器打开此文件,并将上面的示例 JSON 添加到此文件,然后保存文件。

  3. 使用 AWS CLI 运行以下命令以将任务定义注册到 Amazon ECS。

    注意

    确保将 AWS CLI 配置为使用 Windows 集群所在的区域,或者将 --region your_cluster_region 选项添加到命令。

    aws ecs register-task-definition --cli-input-json file://windows_fargate_sample_app.json

步骤 3:使用您的任务定义创建服务

在注册任务定义后,您可以使用任务定义在集群中放置任务。以下过程使用任务定义创建一个服务并将一个任务放置在集群中。

使用控制台从任务定义创建服务
  1. Task Definition: windows_fargate_sample_app 注册确认页面上,依次选择 Actions(操作)、Create Service(创建服务)。

  2. Create Service (创建服务) 页面上,输入以下信息,然后选择 Create Service (创建服务)

    • Launch type (启动类型)Fargate

    • 平台操作系统WINDOWS_SERVER_2019_FULLWINDOWS_SERVER_2019_COREWINDOWS_SERVER_2022_FULLWINDOWS_SERVER_2022_CORE

    • Cluster (集群):windows

    • 服务名称: windows_fargate_sample_app

    • Service type (服务类型)REPLICA

    • Number of tasks (任务数):1

    • Deployment type (部署类型):滚动更新

使用 AWS CLI 从任务定义创建服务
  • 使用 AWS CLI 运行以下命令来创建服务。

    aws ecs create-service --cluster windows --task-definition windows-simple-iis --desired-count 1 --service-name windows_fargate_sample_app

步骤 4:查看您的服务

当您的服务在集群中启动任务后,您可以查看服务并在浏览器中打开 IIS 测试页面以验证容器是否正在运行。

注意

下载容器实例并提取 Windows 容器基础层最多需要花费 15 分钟的时间。

查看您的服务
  1. 打开位于 https://console.aws.amazon.com/ecs/ 的 Amazon ECS 控制台。

  2. Clusters 页面上,选择 windows 集群。

  3. Services(服务)选项卡上,选择 windows_fargate_sample_app 服务。

  4. Service: windows_fargate_sample_app 页面上,选择服务中的任务的任务 ID。

  5. Task 页面上,展开 windows_fargate 容器以查看其信息。

  6. 在容器的 Network bindings 中,您应看到 External Link IP 地址和端口组合链接。选择该链接以在浏览器中打开 IIS 测试页面。

    
                        Amazon ECS 示例应用程序的屏幕截图。输出显示“Your application is now running on Amazon ECS”(您的应用程序现在正在 Amazon ECS 上运行)。

第 5 步:清除

完成使用 Amazon ECS 集群后,您应清除与其关联的资源,以避免产生与您未使用的资源相关的费用。

有些 Amazon ECS 资源(如任务、服务、集群和容器实例)是使用 Amazon ECS 控制台清除的。其他资源(例如 EC2 实例、Elastic Load Balancing和自动扩缩组)必须在 Amazon EC2 控制台中手动清除或通过删除创建它们的 AWS CloudFormation 堆栈来清除。

  1. 打开位于 https://console.aws.amazon.com/ecs/ 的 Amazon ECS 控制台。

  2. 在导航窗格中,选择 Clusters

  3. Clusters (集群) 页面上,选择要删除的集群。

  4. 选择 Delete Cluster (删除集群)。在确认提示符处,输入 delete me,然后选择 Delete (删除)。删除该集群将清除使用该集群创建的关联资源,包括 自动扩缩组、VPC 或负载均衡器。