【问题标题】:Create a user on AWS Workspaces with API使用 API 在 AWS Workspaces 上创建用户
【发布时间】:2019-11-21 13:10:20
【问题描述】:

创建工作区时,我可以创建一个或多个提供电子邮件和其他信息的用户。

我正在尝试在 python 中使用 AWS API 或 boto3 来做同样的事情。 boto3 中的 WorkSpacesDirectoryService 都没有提供在 AWS Simple AD 中创建用户的方法。

如何以编程方式在 AWS Simple AD 上创建用户?

【问题讨论】:

  • 我怀疑你需要像普通的 Active Directory 系统一样连接它,而不是通过 AWS API。
  • @JohnRotenstein 无法直接访问 Active Directory。

标签: amazon-web-services aws-sdk boto3 amazon-workspaces


【解决方案1】:

简单的答案是您不能“以编程方式”创建用户。 你甚至不能在 Simple AD 中只创建一个用户,你只能在创建 Workspace 时创建它。

要创建 AD 用户,您需要启动一个 Windows EC2 实例并将其添加到 AWS Directory 域。然后,在该实例中安装 AD 管理工具并使用它来创建/管理用户。您可以在此处详细了解它, https://docs.aws.amazon.com/directoryservice/latest/admin-guide/simple_ad_how_to.html

您可以在该 EC2 实例中运行 powershell 脚本以实现自动化。甚至可以创建一个 lambda 函数来运行它。

【讨论】:

    【解决方案2】:

    实际上,您似乎可以做到这一点。查看工作文档的 API 文档。它说“在 Simple AD 或 Microsoft AD 目录中创建用户。”

    https://docs.aws.amazon.com/workdocs/latest/APIReference/API_CreateUser.html

    POST /api/v1/users HTTP/1.1
    Authentication: AuthenticationToken
    Content-type: application/json
    
    {
       "EmailAddress": "string",
       "GivenName": "string",
       "OrganizationId": "string",
       "Password": "string",
       "StorageRule": { 
          "StorageAllocatedInBytes": number,
          "StorageType": "string"
       },
       "Surname": "string",
       "TimeZoneId": "string",
       "Username": "string"
    }
    

    boto3 文档: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/workdocs.html#WorkDocs.Client.create_user

    【讨论】:

    • 技术上正确,但受制于多种条件:(1) 必须在 WorkDocs 上启用目录。这可以在注册期间或之后手动完成。 (2) 创建的用户在 WorkDocs 中是“活跃的”(可能会产生成本),除非您也将它们停用。 (3) 似乎没有 API 调用来删除 WorkDocs 站点/应用程序,因此这不是完全可逆的(例如,使我们创建 CloudFormation custom resoruce 的工作复杂化
    【解决方案3】:

    @JapethMarvel 的答案可能最接近您的要求,但它受制于我在评论中记录的各种条件。

    值得注意的是,this Amazon blog post 演示了一个 Lambda,它使用 ldap3 库直接对目录服务进行 API 调用。我没有深入研究过,但似乎可以通过这种方式管理用户。当然,此解决方案还有其他限制,因为运行此脚本的系统(或 Lambda)必须能够访问目录(不仅仅是 AWS API)。如果该目录是私有目录,则需要授予 Lambda 对 VPC 的访问权限(例如,通过附加它)。

    这会阻止我们使用它,例如在Custom CloudFormation Resource Provider 中,没有额外的复杂层。例如,可以让 CF 资源创建一个 VPC 绑定的 lambda 来代理对目录的请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 2019-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      相关资源
      最近更新 更多