本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将实例加入到活动目录域
使用 AWS Elastic Beanstalk,您的环境中的 Windows 服务器实例可以自动加入 Active Directory 域。您可以使用目录服务管理AWS 目录,然后在aws:elasticbeanstalk:windows:activedirectory命名空间中使用配置选项打开联接。然后,在 Elastic Beanstalk 向其部署应用程序之前,每个实例在启动时都会加入该域。您无需编写任何自定义联接逻辑或自己管理联接。
您可以将实例加入微软 AWS 托管广告目录或简单广告目录,或者通过 AD 连接器加入您自行管理的 Active Directory。
注意
Active Directory 域名在 2026 年 https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2026-08-18-windows.html 8 月 18 日当天或之后发布的 Windows 服务器平台版本上可用。早期的平台版本不支持aws:elasticbeanstalk:windows:activedirectory命名空间并在验证期间拒绝其选项。要升级您的环境,请参阅更新 Elastic Beanstalk 环境的平台版本。
域名加入的工作原理
当带有 Active Directory 选项的环境中的实例启动时,它会在 Elastic Beanstalk 部署您的应用程序之前执行以下操作:
-
在目录中为自己创建一个计算机对象。该实例使用环境实例配置文件的证书调用 AWS 目录服务 CreateComputer API 操作。如果您设置该
DirectoryOU选项,则该实例将在该组织单位 (OU) 中创建计算机对象。否则,它会在目录的默认容器中创建对象。 -
将自身重命名为
EC2-,其中XXXXXXXX是实例 ID 的最后八个大写字符。XXXXXXXX -
加入域,然后重新启动以完成加入。这与 Elastic Beanstalk 环境中的每个 Windows Server 实例在配置期间为应用其主机名而执行的一次性重启相同,因此域加入不会增加额外的重启。
如果没有 Active Directory 选项,Elastic Beanstalk 会从其私有 IPv4 地址(例如)派生每个 Windows 实例的主机名。IP-0A010203IP 地址可以重复使用,因此这些名称可能会与目录中陈旧的计算机对象发生冲突。这可能发生在跨区域重复使用 IP 范围的灾难恢复拓扑中,也可能发生在长期环境中。当设置 Active Directory 选项时,主机名将改为从实例 ID 派生。由于每个实例 ID 都是全局唯一的,因此与陈旧计算机对象发生名称冲突的可能性可以忽略不计。实例ID-derived 主机名仅适用于具有 Active Directory 选项的环境。
先决条件
在配置 Active Directory 域加入之前,请验证是否满足以下先决条件:
-
AWS 目录服务目录 — AWS 托管的微软 AD、Simple AD 或 AD Connector。要创建一个,请参阅《 AWS 目录服务管理指南》中的 “设置AWS 目录服务” 。
-
网络连接和 DNS 解析 — 您的环境必须在可访问目录的 VPC 中运行,并且环境中的实例必须解析该目录的 DNS 名称。加入过程通过 DNS SRV 记录发现域控制器。这通常意味着将您的 VPC 与指向该目录 DNS 服务器的 DHCP 选项集相关联。这是标准的 AWS 目录服务配置。有关更多信息,请参见创建或更改《AWS 目录服务管理指南》中的 DHCP 选项集。缺少 DNS 解析是域加入失败的常见原因。
-
实例配置文件权限 -环境的实例配置文件(例如
aws-elasticbeanstalk-ec2-role)必须具有调用目录ds:CreateComputer的权限。要遵循最小权限原则,请在您的目录中添加一个范围内的策略:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ds:CreateComputer", "Resource": "arn:aws:ds:us-east-2:123456789012:directory/d-1234567890" } ] }或者,您可以附加AmazonSSMDirectoryServiceAccess托管策略,其中包括您账户中所有目录的
ds:CreateComputer权限。 -
支持的平台版本 -您的环境必须运行 2026 年 https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2026-08-18-windows.html 8 月 18 日当天或之后发布的 Windows Server 平台版本。
-
现有的 OU(如果你设置了
DirectoryOU)— Elastic Beanstalk 不创建组织单位。如果设置该DirectoryOU选项,则 OU 必须已经存在于目录中,否则连接将失败。
配置活动目录域加入
要启用 Active Directory 域加入功能,请在aws:elasticbeanstalk:windows:activedirectory命名空间中设置以下配置选项。可以在配置文件中设置它们 AWS CLI,也可以使用任何其他方法来设置配置选项。有关每个选项的详细信息,请参阅aws: elasticbeanstalk: windows: 活动目录。
-
DirectoryId— 要加入的目录的 ID(例如,d-1234567890)。设置此选项可开启该功能。如果您不进行设置,则环境的行为不会改变。 -
DirectoryName— 目录的完全限定的 DNS 名称(例如,corp.example.com)。设置时DirectoryId为必填项。 -
(可选)
DirectoryOU— 用于创建计算机对象的组织单位的可分辨名称(例如,OU=WebServers,DC=corp,DC=example,DC=com)。OU 必须已经存在。如果您未设置此选项,则会在目录的默认容器中创建计算机对象。
以下 AWS CLI 示例在运行环境中配置 Active Directory 域加入。该示例使用--option-settings参数的 JSON 语法,因为DirectoryOU值包含逗号,速记语法将其解释为分隔符。
例 AWS CLI -配置活动目录域加入
aws elasticbeanstalk update-environment \
--environment-name my-env \
--option-settings '[
{"Namespace": "aws:elasticbeanstalk:windows:activedirectory", "OptionName": "DirectoryId", "Value": "d-1234567890"},
{"Namespace": "aws:elasticbeanstalk:windows:activedirectory", "OptionName": "DirectoryName", "Value": "corp.example.com"},
{"Namespace": "aws:elasticbeanstalk:windows:activedirectory", "OptionName": "DirectoryOU", "Value": "OU=WebServers,DC=corp,DC=example,DC=com"}
]'重要
当您在此命名空间中添加、更改或删除任何选项时,Elastic Beanstalk 会在您的环境中重新预置亚马逊 EC2 实例。这将触发滚动更新。
如果您将环境配置更改为指向其他目录,则替换实例会加入新目录。如果您删除这些选项,则替代实例将在不加入域的情况下启动,并使用标准 IP-address-derived 主机名。在这两种情况下,先前创建的实例的计算机对象都保留在目录中。有关更多信息,请参阅 管理目录中的计算机对象。
确认域名加入
要确认某个实例已加入该域,请执行以下任一操作:
-
验证名为
EC2-(实例的主机名)的计算机对象是否存在于您的目录中、您指定的 OU 或默认容器下。XXXXXXXX -
查看该线路的实例部署日志
Active Directory: joined to。有关更多信息,请参阅 查看 Elastic Beanstalk 环境的部署日志。directory-name
当您的环境向外扩展时,Auto Scaling 会添加也加入该域的实例。要查看其中一个实例的部署日志,请从 Amazon S3 中检索该日志。有关更多信息,请参阅 部署日志存储在哪里。
域名加入失败
域加入失败不会阻止部署。如果实例由于任何原因无法加入域,它将退回到标准 IP-address-derived 主机名 (IP-),继续部署,环境仍可达到 Re ady 状态并报告运行正常。XXXXXXXX
为了使故障可见,Elastic Beanstalk 将实例的实际域成员资格与配置的目录进行比较,并在二者不匹配时发出ERROR事件:
Active Directory domain join did not complete: instance is not joined to 'corp.example.com' (PartOfDomain=False, Domain=WORKGROUP). See the deployment log for the join output.
该实例将联接过程的输出写入C:\cfn\log\eb-ad-join.log。当连接失败时,Elastic Beanstalk 还会将此日志复制到实例的部署日志中,因此您无需连接到实例即可检索原因。有关更多信息,请参阅 查看 Elastic Beanstalk 环境的部署日志。
问题排查
如果您的实例未加入网域,请检查以下内容:
-
加入日志 -读取实例部署日志(参见查看 Elastic Beanstalk 环境的部署日志)或实例
C:\cfn\log\eb-ad-join.log上的联接输出。该日志记录了导致联接失败的特定错误。 -
DNS 解析 -在环境 VPC 中的实例中,验证目录的 DNS 名称(
DirectoryName值)是否已解析。如果没有,请将 VPC 与指向该目录 DNS 服务器的 DHCP 选项集相关联。 -
IAM 权限 — 验证环境的实例配置文件是否允许
ds:CreateComputer访问该目录。没有它,连接在尝试创建计算机对象时会失败。 -
组织单位 -如果设置
DirectoryOU,请验证 OU 是否存在于目录中,并且其标识名是否与选项值完全匹配。加入不存在的 OU 失败。 -
实例配置 -每个实例
C:\cfn\eb-ad.json上的文件记录了实例启动时DirectoryName使用的DirectoryId和。使用它来确认实例收到了哪个目录配置。
管理目录中的计算机对象
当实例或环境终止时,Elastic Beanstalk 不会从您的目录中删除该实例的计算机对象。每个加入的实例都会留下其EC2-计算机对象,扩展活动会为每个新实例创建一个对象。您有责任使用贵组织的常用目录管理工具,定期从您的目录中删除过时的计算机对象。XXXXXXXX
由于每个新实例的主机名都来自其自己的全局唯一实例 ID,因此与陈旧计算机对象发生名称冲突的可能性可以忽略不计。