如何通过CLI或CloudFormation为AWS WorkSpaces在Simple AD中创建目录用户
程序化创建Simple AD用户并同步部署WorkSpace的方案
背景与问题
在AWS WorkSpaces搭配Simple AD的场景中,控制台可通过UI一键完成创建Simple AD目录用户+关联部署WorkSpace的操作,但官方公开的CLI和CloudFormation文档里找不到直接对应的一站式接口——虽然控制台调用了createDirectoryUser这个内部API,但它并未暴露在WorkSpaces的CLI命令集中。
官方支持的实现方式(拆分两步)
最稳妥的方式是拆分操作,调用官方公开的API完成:
1. 先创建Simple AD用户
使用AWS Directory Service的CLI命令创建AD用户,这是官方完全支持的操作:
aws ds create-user \ --directory-id "d-1234567890" \ --user-name "jdoe" \ --password "P@ssw0rd123!" \ --given-name "John" \ --surname "Doe"
需确保执行命令的IAM实体拥有ds:CreateUser权限,且密码符合Simple AD的密码策略。
2. 再创建关联的WorkSpace
通过WorkSpaces CLI或CloudFormation创建WorkSpace,指定刚创建的用户名:
CLI示例
aws workspaces create-workspaces \ --workspaces DirectoryId=d-1234567890,UserName=jdoe,BundleId=wsb-12345678,UserVolumeEncryptionEnabled=true,RootVolumeEncryptionEnabled=true
CloudFormation模板片段
Resources: ADUser: Type: Custom::DirectoryServiceUser Properties: ServiceToken: !Ref LambdaFunctionArn DirectoryId: !Ref SimpleADID UserName: "jdoe" Password: "P@ssw0rd123!" GivenName: "John" Surname: "Doe" UserWorkSpace: Type: AWS::WorkSpaces::Workspace DependsOn: ADUser Properties: DirectoryId: !Ref SimpleADID UserName: "jdoe" BundleId: !Ref WorkSpaceBundleID UserVolumeEncryptionEnabled: true RootVolumeEncryptionEnabled: true
注:CloudFormation本身不支持直接创建Simple AD用户,需通过**自定义资源(Custom Resource)**调用Lambda函数执行ds:CreateUser操作,再通过DependsOn确保用户创建完成后再部署WorkSpace。
非官方的一站式方式(谨慎使用)
控制台使用的createDirectoryUser属于WorkSpaces的私有内部API,未在官方SDK/CLI中公开。如果一定要模拟控制台的一站式流程,可以:
- 捕获控制台的请求签名和参数格式
- 使用AWS SDK的签名机制构造请求,直接调用对应的API端点
但这种方式无官方支持,API可能随时变更,不建议在生产环境使用。
内容的提问来源于stack exchange,提问作者smk081
相关产品推荐
相关产品推荐

