【问题标题】:Google Admin SDK - Create posix attributes on existing userGoogle Admin SDK - 在现有用户上创建 posix 属性
【发布时间】:2018-08-05 06:42:49
【问题描述】:

我无法使用 Admin SDK (Directory API) 在 admin.google.com(也称为 Google Cloud Identity / Google Directory)中的现有帐户上创建 posix 属性。

为了解释我的问题,我将使用 API 测试器:https://developers.google.com/admin-sdk/directory/v1/reference/users/update?apix=true

我使用更新功能来更新没有 POSIX 属性的现有帐户。 为此,我复制下面的请求正文并使用请求密钥:testmdr@contoso.com:

{
  "posixAccounts": [
    {
      "username": "testmdr_contoso_com",
      "uid": "2147483645", # I use id between 65535 and 2147483647 (explain: in google documentation)
      "gid": "1001",
      "homeDirectory": "/home/testmdr_contoso.com",
      "shell": "/bin/bash"
    }
  ]
}

我收到 503 错误:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "backendError",
    "message": "Service unavailable. Please try again"
   }
  ],
  "code": 503,
  "message": "Service unavailable. Please try again"
 }
}

如果我更新名称或其他名称,它会起作用。 如果我更新现有的 POSIX 属性(存在是因为在 GCE 上使用操作系统登录功能连接时创建:Here),它可以工作。

如果是限制或错误,请帮助我

【问题讨论】:

  • 如果您遇到 503 错误,您可能超出了 API 配额。按照documentation 的建议,尝试减慢请求并使用exponential backoff 算法,等待一小段延迟后再重试失败的调用。
  • 不,不是。因为当我运行 name 属性的更新时,我从来没有问题。我认为这是 posix 属性创建的限制(或错误)。 posix属性只能通过api更新,不能从头创建。

标签: google-admin-sdk


【解决方案1】:

requestKey 应该是用户的 UUID。 . .可能有更好的方法可以做到这一点,但您可以通过查询启用 oslogin 的实例上的元数据来获取用户名/名称(requestKey/UUID),例如(第一列是用户名,第二列是 API 测试人员的 requestKey):

curl -s "http://metadata.google.internal/computeMetadata/v1/oslogin/users?pagesize=50&pagetoken=0" -H "Metadata-Flavor: Google" | \
    jq -r '.loginProfiles[]|.posixAccounts[].username,.name' | \
    paste - -

(您可能需要使用 pagesize 和 pagetoken 参数)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 2014-11-20
    • 2017-01-05
    • 2021-06-22
    • 2015-02-15
    相关资源
    最近更新 更多