Amazon Elastic Compute Cloud
Windows 实例用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

将 Windows 实例加入 AWS Directory Service 域

您可以使用 Amazon EC2 Systems Manager (SSM) Config 将 Amazon EC2 Windows 实例加入活动的 AWS Directory Service 目录或 AD Connector 目录。要使用 SSM Config 执行此任务,可使用 AWS CLI 或适用于 Windows PowerShell 的 AWS 工具创建一个指定域加入详细信息的 Systems Manager 文档,然后将该文档与正在运行的实例关联。或者,可以使用 Amazon EC2 控制台启动实例并指定要加入的域。该向导会在您的账户中搜索域的 Systems Manager 文档以便与实例关联;如果找不到这样一个文档,则它会为您创建一个 Systems Manager 文档,然后将它与正在运行的实例关联。

注意

在不支持 SSM Config 的区域内,您可以将实例手动加入到域。有关更多信息,请参阅 AWS Directory Service Administration Guide 中的将实例添加到目录

将 Systems Manager 文档与实例关联之后,可以使用在 AWS Directory Service 目录中定义的域凭证连接到实例。

对于使用 SSM Config 或将实例加入域,没有额外费用。对于实例和 AWS Directory Service 的使用,适用标准费率。

限制

  • 仅 Windows 实例支持 SSM Config。

  • 在以下区域提供 SSM Config。

  • Windows Server 2016 Nano 服务器安装选项 (Nano Server) 不支持联机域连接。您必须执行脱机域连接。有关更多信息,请参阅 Microsoft TechNet 上的脱机域连接 (Djoin.exe) 分步指南

有关更多信息,请参阅 管理 Windows 实例配置

先决条件

在开始之前,请满足以下先决条件。

  • 创建 AWS Directory Service 目录。有关更多信息,请参阅 AWS Directory Service Administration Guide 中的 AWS Directory Service 入门

  • 配置符合 AWS Systems Manager 用户指南 中的设置 Systems Manager 中所述的要求的 Windows 实例。

  • 如果您使用的是 AWS CLI 或适用于 Windows PowerShell 的 AWS 工具,则必须创建一个指定 Systems Manager 文档内容的 JSON 文件。您必须将目录的名称和 ID 以及 DNS 服务器的 IP 地址包括在目录中。要查找这些地址,请打开 AWS Directory Service 控制台,选择 Directories,并选择目录。有关 Systems Manager 文档的结构的更多信息,请参阅 AWS Systems Manager 用户指南 中的 Systems Manager 文档

示例配置

以下是将实例加入域的文档内容示例。将此内容保存在扩展名为 .json 的文件中。

{ "schemaVersion": "1.0", "description": "Sample configuration to join an instance to a domain", "runtimeConfig": { "aws:domainJoin": { "properties": { "directoryId": "d-1234567890", "directoryName": "test.example.com", "dnsIpAddresses": [ "198.51.100.1", "198.51.100.2" ] } } } }

请注意,如果有效的组织部门 (OU) 存在,您可以按如下方式添加 directoryOU 中的 OU。

{ "schemaVersion": "1.0", "description": "Sample configuration to join an instance to a domain", "runtimeConfig": { "aws:domainJoin": { "properties": { "directoryId": "d-1234567890", "directoryName": "test.example.com", "directoryOU": "\"OU=Computers,OU=example,DC=test,DC=example,DC=com\"", "dnsIpAddresses": [ "198.51.100.1", "198.51.100.2" ] } } } }

使用控制台加入域

在使用 Amazon EC2 控制台启动一个实例时,可以将该实例加入域。如果您还没有 Systems Manager 文档,该向导会为您创建一个文档,然后将它与实例关联。请注意,您不能使用控制台将 Systems Manager 文档与现有实例关联。

在启动时将实例加入一个域

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

  2. 在控制面板上,选择 Launch Instance

  3. 在向导的第一页,选择一个 Windows AMI。在下一页上,选择实例类型,然后选择 Next: Configure Instance Details

  4. 对于 Network,为目录选择 VPC。对于 Subnet,选择一个子网。对于 Auto-assign Public IP,选择 Enable,但将实例启动到私有子网并使用 NAT 实例进行 Internet 连接的情况除外。

  5. 对于 Domain join directory,选择您的目录。对于 IAM role,选择现有 IAM 角色。

  6. 完成其余配置步骤,然后启动实例。确保选择或创建的安全组包含一个规则,该规则允许从您的 IP 地址或从网络中某个 IP 地址范围进行 RDP 访问。有关更多信息,请参阅 为您的 Windows 实例授权入站流量

  7. 检查域加入的状态。有关更多信息,请参阅 获取域加入状态

使用 适用于 Windows PowerShell 的 AWS 工具 加入域

要使用 Windows PowerShell 工具 加入域,您必须将 Systems Manager 文档与已经正在运行的实例相关联。

使用 AWS CLI 或 适用于 Windows PowerShell 的 AWS 工具 加入域

  1. 使用 New-SSMDocument 命令创建一个 Systems Manager 文档。文件名长度必须在 1 到 64 个字符之间。

    PS C:\> $contents = Get-Content -Raw my-custom-config.json | Out-String PS C:\> New-SSMDocument -Content $contents -Name "my-custom-config" -DocumentType "Command"
  2. 使用 New-EC2Instance 命令启动 EC2 实例。您指定的 VPC 必须与您为域使用的 VPC 相同。必须向该实例分配 IAM 角色。还必须确保该实例具有公有 IP 地址,使用 NAT 网管进行 Internet 连接的情况除外。

    PS C:\> New-EC2Instance -ImageId ami-1a2b3c4d -SubnetId subnet-33cc44dd -KeyName my-key-pair -InstanceType m1.large -InstanceProfile_Id MyInstanceProfile -associatePublicIp $true
  3. 使用 New-SSMAssociation 命令将文档与正在运行的实例关联。

    PS C:\> New-SSMAssociation -InstanceId i-1234567890abcdef0 -Name "My_Custom_Config_File"
  4. 检查域加入的状态。有关更多信息,请参阅 获取域加入状态

使用 AWS CLI 加入域

要使用 AWS CLI 加入域,您必须将 Systems Manager 文档与已经正在运行的实例相关联。

使用 AWS CLI 加入域

  1. 使用 create-document 命令创建 Systems Manager 文件。文件名长度必须在 1 到 64 个字符之间。

    aws ssm create-document --content file://path/to/myconfigfile.json --name "My_Custom_Config_File"
  2. 使用 run-instances 命令启动 EC2 实例。您指定的 VPC 必须与您为域使用的 VPC 相同。必须向该实例分配 IAM 角色。还必须确保该实例具有公有 IP 地址,使用 NAT 网管进行 Internet 连接的情况除外。

    aws ec2 run-instances --image-id ami-1a2b3c4d --subnet-id subnet-33cc44dd --key-name my-key-pair --instance-type m1.large --iam-instance-profile MyInstanceProfile --associate-public-ip-address
  3. 使用 create-association 命令将文档与正在运行的实例关联。

    aws ssm create-association --instance-id i-1234567890abcdef0 --name "My_Custom_Config_File"
  4. 检查域加入的状态。有关更多信息,请参阅 获取域加入状态

获取域加入状态

将配置文件与实例关联之后,使实例加入域可能需要几分钟的时间。您可以通过查看实例的系统日志,或者通过检查关联的状态来检查域加入的状态。

查看系统日志

在系统日志中,以下是域加入成功时的示例输出:

2015/02/02 10:59:36Z: Info: EC2Config configuration status:2;region:us-east-1;iam:1;authz:1 2015/02/02 10:59:42Z: Info: EC2Config: Downloading config awsconfig_Domain_d-1234567890_corp.example.com 2015/02/02 10:59:45Z: Info: EC2Config: The instance is joining domain with id:d-1234567890, name:corp.example.com ... 2015/02/02 10:59:48Z: Info: EC2Config: The instance successfully joined the domain. 2015/02/02 10:59:48Z: Info: EC2Config: The instance will reboot shortly for domain join to take effect.

使用控制台检查系统日志

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

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

  3. 选择实例。

  4. 依次选择 ActionsInstance SettingsGet System Log

使用 Windows PowerShell 工具 查看系统日志

使用 Get-EC2ConsoleOutput 命令,如下所示。

Get-EC2ConsoleOutput -instanceId i-1234567890abcdef0

使用 AWS CLI 查看系统日志

使用 get-console-output 命令,如下所示。

aws ec2 get-console-output --instance-id i-1234567890abcdef0

检查关联状态

您可以检查配置文档和实例之间的关联的状态。

使用 Windows PowerShell 工具 检查关联的状态

使用 Get-SSMAssociation 命令,如下所示。

Get-SSMAssociation -Name "my-custom-config" -instanceId i-1234567890abcdef0

使用 AWS CLI 检查关联的状态

使用 describe-association 命令,如下所示。

aws ssm describe-association --name "my-custom-config" --instance-id i-1234567890abcdef0

使用域证书连接到实例

将实例加入域之后,可以使用您在 AWS Directory Service 中定义的域证书连接到实例。

确认您可以作为管理员连接到实例之后,域用户可以使用相同过程连接到实例 (将管理员凭证替换为他们自己的用户名和密码)。

使用目录证书以管理员身份连接到实例

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

  2. 在导航窗格中,选择 Instances,选择您的实例,然后选择 Connect

  3. 在对话框中,选择 Download Remote Desktop File,然后使用 RDP 客户端打开文件。

  4. 在登录屏幕上,为此账户使用管理员的完全限定用户名 (例如 corp.example.com\Admin) 和密码,而不是本地计算机名和生产的密码。

故障排除

如果您在将实例加入域时遇到问题,或者,如果您在使用域证书连接到实例时遇到问题,请首先通过检查实例的系统日志,或者通过检查关联的状态来验证域加入的状态:获取域加入状态

无法连接到实例

如果域加入成功,但是您在登录实例时遇到问题,请尝试以下操作:

  • 如果您可以连接到实例,但无法登录,请检查您使用的用户名和密码是否正确。用户名必须包含完全限定的域名 (例如,corp.example.com),并且密码必须是域中配置的密码 (而不是密钥对文件生成的密码)。

  • 如果您无法连接到实例,请检查您的安全组设置。您必须具有允许从您的 IP 地址或网络进行 RDP 访问的规则。

域加入未成功

在系统日志中,以下输出指示 EC2Config 服务未能连接并下载关联 SSM 文档,因此域加入未成功:

Info: EC2Config configuration status:3;region:us-east-1;iam:0;authz:0

该输出可以帮助您排查失败的原因:

  • configuration status:3:对 SSM Config 进行的调用失败。请确保您向 IAM 用户授予了所需的 IAM 权限。SSM Config 还需要从实例进行的 Internet 连接 - 实例必须具有公有 IP 地址,并且必须在公有子网中启动。有关公有子网的更多信息,请参阅 Amazon VPC 用户指南 中的带子网的 VPC

  • iam:0:实例没有关联的 IAM 角色。如果没有与实例关联的 IAM 角色,则无法将实例加入域。要关联 IAM 角色,请参阅将 IAM 角色连接到实例

  • authz:0:未授权实例访问 SSM Config。如果启动的实例没有 IAM 角色,或者,如果与实例关联的角色没有访问服务所需的权限,则会发生这种情况。

还可以使用 describe-association (AWS CLI) 命令或 Get-SSMAssociation (Windows PowerShell 工具) 命令检查关联的状态,从而排查域加入失败的特定原因。例如,以下输出指示与实例关联的 IAM 角色无权使用 ds:CreateComputer 操作:

Name : My_Config_Doc InstanceId : i-1234567890abcdef0 Date : 2/10/2015 1:31:45 AM Status.Name : Failed Status.Date : 2/10/2015 1:38:38 AM Status.Message : RunId=631148a7-894f-4684-8718-ee4cexample, status:Failed, code:0, message:RuntimeStatusCounts=[Failed=1], RuntimeStatus=[aws:domainJoin={Failed,User: arn:aws-cn:sts::123456789101:assumed-role/NoDomainJoinPermission/i-1234567890abcdef0 is not authorized to perform: ds:CreateComputer}] Status.AdditionalInfo : {agent=EC2Config,ver=x.x.xx,osver=6.2.9200,os=Windows Server 2012 Standard,lang=en-US}

查看您的关联

您可以使用 AWS CLI 或 适用于 Windows PowerShell 的 AWS 工具 查看有关您的关联和 Systems Manager 文档的信息。

操作 适用于 Windows PowerShell 的 AWS 工具 AWS CLI
查看有关关联的信息。 Get-SSMAssociation describe-association
查看有关文档的信息。 Get-SSMDocumentDescription describe-document
查看文档的内容。 Get-SSMDocument get-document
列出文档或实例的关联。 Get-SSMAssociationList list-associations
列出文档。 Get-SSMDocumentList list-documents

更改关联

Systems Manager 文档在创建后不能更新。如果要将实例加入新域,则必须先删除关联,然后使用新 SSM 文档创建新关联。配置更改可能最多需要 15 分钟才能生效。

删除关联不会更改实例上的配置。实例仍然会加入域,直到您通过修改实例的网络连接配置信息和系统属性手动从域中删除该实例。

Windows PowerShell 工具

使用下面的 Remove-SSMAssociation 命令可解除文档与 Windows 实例的关联。

PS C:\> Remove-SSMAssociation -InstanceId i-1a2b3c4d -Name "my-custom-config"

AWS CLI

使用下面的 delete-association 命令可解除文档与 Windows 实例的关联。

aws ssm delete-association --instance-id i-1a2b3c4d --name "my-custom-config"

删除文档

用完 Systems Manager 文档后可以将其删除。必须先解除该文档与所关联的任意实例的关联,然后才能删除该文档。

Windows PowerShell 工具

使用下面的 Remove-SSMDocument 命令可删除您的文档。

PS C:\> Remove-SSMDocument -Name "my-custom-config"

AWS CLI

使用下面的 delete-document 命令可删除您的文档。

aws ssm delete-document --name "my-custom-config"