如何通过aws ec2 run-instances CLI实现实例Domain join directory域加入
回答结论
可以通过aws ec2 run-instances命令实现和旧版EC2启动向导第三步完全一致的Domain join directory域加入配置。该命令没有单独设置域加入的专属参数,控制台的域加入选项本质是后台自动组合了多项实例启动配置,你只要在CLI命令中显式指定对应配置项即可实现完全相同的效果。
控制台域加入选项的后台逻辑
你在旧控制台选择目标目录并勾选域加入选项时,AWS后台自动完成了三项配置,这也是你用CLI实现时需要手动指定的内容:
- 为实例绑定具备Directory Service域加入权限的IAM实例配置文件
- 向实例注入自动加域的初始化脚本(依赖实例默认预装的SSM Agent运行)
- 确保实例部署在与目标目录网络连通的VPC子网中
具体操作步骤
- 提前准备IAM实例配置文件
给角色配置最小域加入所需权限:包含SSM托管实例核心权限、Directory Service域加入权限,创建完成后记录实例配置文件的名称。 - 准备域加入初始化脚本
脚本不需要硬编码域账号密码,运行时会自动通过绑定的实例角色权限完成鉴权,Windows实例可直接使用PowerShell调用域加入命令,Linux实例可使用对应AWS CLI命令,脚本中只需指定你要加入的目录ID、实例所在区域即可。 - 构造
aws ec2 run-instances命令,核心参数示例如下:
aws ec2 run-instances \ --image-id 替换为你使用的AMI ID \ --instance-type 替换为你需要的实例规格,例如t3.medium \ --key-name 替换为你的SSH/RDP密钥对名称 \ --subnet-id 替换为与目标AD目录网络连通的子网ID \ --security-group-ids 替换为你配置好的安全组ID \ --iam-instance-profile Name=替换为你第一步创建的IAM实例配置文件名称 \ --user-data file://你本地保存的域加入脚本文件路径
如果你已经把域加入的全套配置提前保存到了EC2启动模板中,也可以直接在命令中通过--launch-template参数指定启动模板,不需要每次重复传IAM配置、用户数据参数,启动后实例会自动完成域加入,和控制台操作效果无差异。
注意事项
- 实例部署前确保子网安全组、网络ACL放行AD目录所需的Kerberos、LDAP等通信端口,实例能正常访问Directory Service对应端点
- 自定义AMI需要提前预装SSM Agent、对应版本的AWS CLI/PowerShell工具,否则自动加域脚本会运行失败
- 建议给IAM实例配置文件分配最小必要权限,不要直接使用全权限Directory Service访问策略
内容的提问来源于stack exchange,提问作者Rashtrapathy Chandrasekar
相关产品推荐
相关产品推荐

