Amazon Elastic Container Service
开发人员指南 (API 版本 2014-11-13)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

Windows 容器入门

本教程演示如何手动在 Amazon ECS 上运行 Windows 容器。为 Windows 容器实例创建一个集群,在您的集群中启动一个或多个容器实例,注册一个使用 Windows 容器映像的任务定义,创建一项使用该任务定义的服务,然后查看容器运行的示例网页。

步骤 1:创建 Windows 集群

您应为 Windows 容器创建新集群。Linux 容器实例无法运行 Windows 容器,反之亦然,因此最好是通过在单独的集群中运行 Windows 容器实例和 Linux 容器实例来正确地放置任务。在本教程中,您为 Windows 容器创建一个名为 windows 的集群。

使用 AWS 管理控制台创建群集

  1. https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

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

  3. Clusters 页面上,选择 Create Cluster

  4. 选择 EC2 Windows + Networking,然后选择 Next step

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

  6. 依次选择 Create an empty clusterCreate

使用 AWS CLI 创建群集

  • 您可以使用下面的命令通过 AWS CLI 创建群集:

    aws ecs create-cluster --cluster-name windows

步骤 2:在集群中启动 Windows 容器实例

您可以使用 AWS 管理控制台启动 Windows 容器实例,如本主题中所述。开始之前,请确保您已完成Amazon ECS 的设置中的步骤。启动实例之后,您可以使用实例来运行任务。

启动 Windows 容器实例

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

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

  3. 从控制台控制面板中,选择 Launch Instance

  4. Choose an Amazon Machine Image (AMI) (选择 Amazon 系统映像 (AMI)) 页面上,您可以选择 Windows Amazon ECS 优化型 AMI (推荐) 或支持 Amazon ECS 规格的其他 Windows AMI。

    1. 选项 1:使用 Windows Amazon ECS 优化型 AMI。选择 Community AMIs.

      Search community AMIs 字段中键入 ECS_Optimized 并按 Enter 键。选择 Windows_Server-2016-English-Full-ECS_Optimized-2018.07.25 AMI 旁边的 Select

      The current Amazon ECS-optimized Windows AMI IDs by region are listed below for reference.

      Region AMI ID
      cn-north-1 ami-a210c8cf
      cn-northwest-1 ami-5b6e7939
    2. 选项 2:使用其他 Windows AMI。选择所需 Windows AMI 旁边的 Select (选择)

  5. Choose an Instance Type (选择实例类型) 页面上,您可以选择实例的硬件配置。默认情况下会选择 t2.micro 实例类型。您选择的实例类型决定了可用于运行您的任务的资源。

  6. 选择 Next: Configure Instance Details

  7. Configure Instance Details 页面上,根据是否允许从公共 Internet 访问实例来设置 Auto-assign Public IP 复选框。如果您的实例应可从 Internet 进行访问,请验证 Auto-assign Public IP 字段是否已设置为 Enable。如果不应可从 Internet 访问您的实例,请选择 Disable

    注意

    Container instances need external network access to communicate with the Amazon ECS service endpoint, so if your container instances do not have public IP addresses, then they must use network address translation (NAT) to provide this access. For more information, see NAT Gateways in the Amazon VPC 用户指南 and HTTP 代理配置 in this guide. For more information, see Tutorial: Creating a VPC with Public and Private Subnets for Your Clusters.

  8. Configure Instance Details 页面上,选择您在ecsInstanceRole中为您的容器实例创建的 IAM roleAmazon ECS 的设置 值。

    重要

    如果您未使用适当的 IAM 权限启动容器实例,则您的 Amazon ECS 代理将不会连接到集群。有关更多信息,请参阅 Amazon ECS 容器实例 IAM 角色

  9. 如果您使用 Amazon ECS 优化型 AMI,请展开 Advanced Details (高级详细信息) 部分,并将提供的用户数据 PowerShell 脚本粘贴到 User data (用户数据) 字段中。默认情况下,此脚本将容器实例注册到您之前创建的 windows 集群。要在另一个群集而非 windows 中启动,可将以下脚本中的红色文本替换为您的群集名称。

    如果您未使用 Amazon ECS 优化型 AMI,请跳到下一步。

    注意

    启用任务的 IAM 角色需要使用 -EnableTaskIAMRole 选项。有关更多信息,请参阅 任务的 Windows IAM 角色

    <powershell> Import-Module ECSTools Initialize-ECSAgent -Cluster 'windows' -EnableTaskIAMRole </powershell>
  10. 选择 Next: Add Storage

  11. Add Storage 页面上,为您的容器实例配置存储。Windows 操作系统和容器映像很大 (对于 Windows 服务器核心基础层来说,约为 9 GiB),仅几个映像和容器就会快速达到 Amazon ECS-optimized Windows AMI 的默认 50 GiB 卷大小。更大的根卷大小(例如,200 GiB)允许实例上具有更多的容器和映像。

    您可以选择增大或减小实例的卷大小以满足您的应用程序需求。

  12. 选择 Review and Launch

  13. Review Instance Launch 页面上的 Security Groups 下,您将看到向导为您创建并选择了安全组。默认情况下,您应通过端口 3389 来实现 RDP 连接。要让容器接收来自 Internet 的入站流量,也需要开放这些端口。

    1. 选择 Edit security groups

    2. Configure Security Group 页面上,确保选择 Create a new security group 选项。

    3. 为容器可能需要的任何其他端口添加规则,然后选择 Review and Launch (审核并启动)。本演练稍后的示例任务定义将使用端口 8080,因此您应对 Anywhere (任意位置) 开放此端口。

  14. Review Instance Launch 页面上,选择 Launch

  15. Select an existing key pair or create a new key pair 对话框中,选择 Choose an existing key pair,然后选择您在开始设置时创建的密钥对。

    准备好后,选中确认字段,然后选择 Launch Instances

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

  17. Instances (实例) 屏幕上,您可以查看您实例的状态。启动实例只需很短的时间。启动实例时,其初始状态为 pending。实例启动后,其状态变为 running,并且会收到一个公有 DNS 名称。(如果 Public DNS 列已隐藏,请选择 Show/Hide 图标,然后选择 Public DNS。)

  18. 在启动实例后,您可以在 Amazon ECS 控制台中查看集群,了解容器实例是否已注册到该集群。

    注意

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

步骤 3 (可选):安装 Amazon ECS 容器代理

如果您在创建 Windows 实例时使用 Amazon ECS 优化型 AMI 以外的 AMI,则必须手动安装 Amazon ECS 容器代理。

下面按区域列出了最新的 Amazon ECS 容器代理文件,以供参考。

Region Region Name Container agent Container agent signature
us-east-2 美国东部(俄亥俄州) ECS container agent PGP signature
us-east-1 美国东部(弗吉尼亚北部) ECS container agent PGP signature
us-west-2 美国西部(俄勒冈) ECS container agent PGP signature
us-west-1 美国西部(加利福尼亚北部) ECS container agent PGP signature
eu-west-3 欧洲 (巴黎) ECS container agent PGP signature
eu-west-2 欧洲 (伦敦) ECS container agent PGP signature
eu-west-1 欧洲(爱尔兰) ECS container agent PGP signature
eu-central-1 欧洲(法兰克福) ECS container agent PGP signature
ap-northeast-2 亚太区域(首尔) ECS container agent PGP signature
ap-northeast-1 亚太区域(东京) ECS container agent PGP signature
ap-southeast-2 亚太区域(悉尼) ECS container agent PGP signature
ap-southeast-1 亚太区域(新加坡) ECS container agent PGP signature
ca-central-1 加拿大 (中部) ECS container agent PGP signature
ap-south-1 亚太地区(孟买) ECS container agent PGP signature
sa-east-1 南美洲(圣保罗) ECS container agent PGP signature
cn-northwest-1 中国 (宁夏) ECS container agent PGP signature
us-gov-west-1 AWS GovCloud(美国) ECS container agent PGP signature
cn-north-1 中国(北京) ECS container agent PGP signature

在实例中手动安装 Amazon ECS 容器代理

  1. 连接到您的实例。

  2. 安装 Docker 并将其作为服务运行。有关更多信息,请参阅安装适用于 Windows Server 的 Docker 企业版

  3. Amazon ECS 容器代理可作为服务或进程运行。

    1. 选项 1:将容器代理作为服务运行。打开 PowerShell 并运行下面的一组命令。将 $agentZipUri 替换为区域特定的 URL。

      # Set up the file directories the Amazon ECS container agent will use. PS C:\> New-Item -Type directory -Path ${env:ProgramFiles}\Amazon\ECS -Force PS C:\> New-Item -Type directory -Path ${env:ProgramData}\Amazon\ECS -Force PS C:\> New-Item -Type directory -Path ${env:ProgramData}\Amazon\ECS\data -Force # Set up the configuration. PS C:\> $ecsExeDir = "${env:ProgramFiles}\Amazon\ECS" # Replace "windows" in the following command with your own cluster name PS C:\> [Environment]::SetEnvironmentVariable("ECS_CLUSTER", "windows", "Machine") PS C:\> [Environment]::SetEnvironmentVariable("ECS_LOGFILE", "${env:ProgramData}\Amazon\ECS\log\ecs-agent.log", "Machine") PS C:\> [Environment]::SetEnvironmentVariable("ECS_DATADIR", "${env:ProgramData}\Amazon\ECS\data", "Machine") # Download the container agent. # Replace the "agentVersion" with the version of the container agent you want to download. For example, "latest" will download the most current stable version. PS C:\> $agentVersion = "latest" # Replace the "agentZipUri" with the URL of the regional bucket you want to download the Amazon ECS container agent from. PS C:\> $agentZipUri = "http://s3.amazonaws.com/amazon-ecs-agent-us-east-1/ecs-agent-windows-$agentVersion.zip" PS C:\> $zipFile = "${env:TEMP}\ecs-agent.zip" PS C:\> Invoke-RestMethod -OutFile $zipFile -Uri $agentZipUri # Put the executables in the executable directory. PS C:\> Expand-Archive -Path $zipFile -DestinationPath $ecsExeDir -Force PS C:\> Set-Location ${ecsExeDir} # Set $EnableTaskIAMRoles to $true to enable task IAM roles. # Note that enabling IAM roles will make port 80 unavailable for tasks. PS C:\> [bool]$EnableTaskIAMRoles = $false PS C:\> if (${EnableTaskIAMRoles}) {.\hostsetup.ps1} # Install the container agent service. PS C:\> New-Service -Name "AmazonECS" -BinaryPathName "$ecsExeDir\amazon-ecs-agent.exe -windows-service" -DisplayName "Amazon ECS" -Description "Amazon ECS service runs the Amazon ECS agent" -DependsOn Docker -StartupType Manual PS C:\> sc.exe failure AmazonECS reset=300 actions=restart/5000/restart/30000/restart/60000 PS C:\> sc.exe failureflag AmazonECS 1 # Start the AmazonECS service. PS C:\> Start-Service AmazonECS
    2. 选项 2:将容器代理作为进程运行。打开 PowerShell 并运行下面的一组命令。

      PS C:\> # Set up directories the agent uses PS C:\> New-Item -Type directory -Path ${env:ProgramFiles}\Amazon\ECS -Force PS C:\> New-Item -Type directory -Path ${env:ProgramData}\Amazon\ECS -Force PS C:\> New-Item -Type directory -Path ${env:ProgramData}\Amazon\ECS\data -Force PS C:\> # Set up configuration PS C:\> $ecsExeDir = "${env:ProgramFiles}\Amazon\ECS" PS C:\> # Replace "windows" in the following command with your own cluster name PS C:\> [Environment]::SetEnvironmentVariable("ECS_CLUSTER", "windows", "Machine") PS C:\> [Environment]::SetEnvironmentVariable("ECS_LOGFILE", "${env:ProgramData}\Amazon\ECS\log\ecs-agent.log", "Machine") PS C:\> [Environment]::SetEnvironmentVariable("ECS_DATADIR", "${env:ProgramData}\Amazon\ECS\data", "Machine") PS C:\> # Set this environment variable to "true" to enable IAM roles. Note that enabling IAM roles will make port 80 unavailable for tasks. PS C:\> [Environment]::SetEnvironmentVariable("ECS_ENABLE_TASK_IAM_ROLE", "false", "Machine") # Download the container agent. # Replace the "agentVersion" with the version of the container agent you want to download. For example, "latest" will download the most current stable version. PS C:\> $agentVersion = "latest" # Replace the "agentZipUri" with the URL of the regional bucket you want to download the Amazon ECS container agent from. PS C:\> $agentZipUri = "http://s3.amazonaws.com/amazon-ecs-agent-us-east-1/ecs-agent-windows-$agentVersion.zip" PS C:\> $zipFile = "${env:TEMP}\ecs-agent.zip" PS C:\> Invoke-RestMethod -OutFile $zipFile -Uri $agentZipUri PS C:\> # Put the executables in the executable directory. PS C:\> Expand-Archive -Path $zipFile -DestinationPath $ecsExeDir -Force PS C:\> # Run the container agent. PS C:\> cd '$ecsExeDir'; .\amazon-ecs-agent.ps1

    注意

    如果您重启 Windows 实例,${env:TEMP} 目录中的文件将被删除。如果发生这种情况,您需要再次下载 zip 文件。

  4. (可选) 您可以使用 Windows 二进制和 PGP 签名来验证容器代理的有效性。

    1. 获取 Windows 二进制签名。

      PS C:\> $sig=Get-AuthenticodeSignature -FilePath ${env:ProgramFiles}\Amazon\ECS\amazon-ecs-agent.exe
    2. 验证 Windows 二进制签名。

      PS C:\> $sig.Status

      预期输出:

      Valid
      PS C:\> $sig.SignerCertificate.Subject

      预期输出:

      CN=Amazon Services LLC, OU=Software Services, O=Amazon Services LLC, L=Seattle, S=Washington, C=US
    3. 下载并安装 GnuPG。对于 Windows,下载并使用 GnuPG 网站上的 Windows 简单安装程序。有关 GnuPG 的更多信息,请参阅 GnuPG 网站

    4. 检索 Amazon ECS PGP 公钥。您可以使用命令检索,也可以手动创建此密钥然后导入。

      1. 选项 1:使用以下命令检索此密钥。

        gpg --keyserver hkp://keys.gnupg.net --recv BCE9D9A42D51784F
      2. 选项 2:创建包含 Amazon ECS PGP 公钥的以下内容的文件,然后导入此文件:

        -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2 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 =Gi5D -----END PGP PUBLIC KEY BLOCK-----

        The details of the Amazon ECS PGP public key for reference:

        Key ID: BCE9D9A42D51784F
        Type: RSA
        Size: 4096/4096
        Expires: Never
        User ID: Amazon ECS
        Key fingerprint: F34C 3DDA E729 26B0 79BE AEC6 BCE9 D9A4 2D51 784F

        使用以下命令导入 Amazon ECS PGP 公钥。

        gpg --import <public_key_filename>
    5. 下载 ECS 容器代理签名。ECS 容器代理签名是存储在扩展名为 .asc 的文件中的 ascii 分离 PGP 签名。此签名文件的名称与其对应可执行文件的名称相同,追加了 .asc

      PS C:\> Invoke-WebRequest -OutFile ecs-agent.asc http://s3.amazonaws.com/amazon-ecs-agent-us-east-1/ecs-agent-windows-latest-zip.asc
    6. 验证签名。

      gpg --verify ecs-agent.asc ${env:TEMP}\ecs-agent.zip

      预期输出:

      gpg: Signature made Wed 16 May 2018 08:21:06 PM UTC using RSA key ID 710E61AF gpg: Good signature from "Amazon ECS <ecs-security@amazon.com>" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: F34C 3DDA E729 26B0 79BE AEC6 BCE9 D9A4 2D51 784F Subkey fingerprint: D64B B6F9 0CF3 77E9 B5FB 346F 50DE CCC4 710E 61AF

      注意

      输出中的警告是预料中的,没有问题;它出现是因为您的个人 PGP 密钥 (如果您有) 和 Amazon ECS PGP 密钥之间没有信任链。有关更多信息,请参阅信任 Web

步骤 4:注册 Windows 任务定义

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

使用 AWS 管理控制台注册示例任务定义

  1. https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

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

  3. Task Definitions 页面上,选择 Create new Task Definition

  4. 滚动到页面底部,选择 Configure via JSON

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

    { "family": "windows-simple-iis", "containerDefinitions": [ { "name": "windows_sample_app", "image": "microsoft/iis", "cpu": 100, "entryPoint":["powershell", "-Command"], "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"], "portMappings": [ { "protocol": "tcp", "containerPort": 80, "hostPort": 8080 } ], "memory": 500, "essential": true } ] }
  6. 验证您的信息并选择 Create

使用 AWS CLI 注册示例任务定义

  1. 创建名为 windows-simple-iis.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-simple-iis.json

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

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

使用控制台从任务定义创建服务

  1. Task Definition: windows-simple-iis 注册确认页面上,依次选择 ActionsCreate Service

  2. Create Service 页面上,输入以下信息,然后选择 Create Service

    • Cluster: 窗口

    • Number of tasks: 1

    • Service name: windows-simple-iis

使用 AWS CLI 从任务定义创建服务

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

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

步骤 6:查看您的服务

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

注意

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

查看您的服务

  1. https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

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

  3. Services 选项卡上,选择 windows-simple-iis 服务。

  4. Service: windows-simple-iis 页面上,选择服务中的任务的任务 ID。

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

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

     Windows 简单 IIS 测试页面