首页 > 解决方案 > Apache Ranger REST API addUsersAndGroups 返回 404 未找到

问题描述

我们已经安装了 Apache Ranger,并且 Web UI 工作正常,大多数 REST API 方法在 PublicAPIsv2 和 RoleREST 上都工作正常,根据https://ranger.apache.org/apidocs/ui/index.html。我可以通过调用返回 id 409
来获取“test_role” id。 我可以通过调用来获取 test_role 内容 我可以通过编辑我得到的响应 并通过它提交来更改 test_role 用户列表GET /public/v2/api/roles/name/test_role
GET /public/v2/api/roles/409
GET /public/v2/api/roles/409PUT /public/v2/api/roles/409

身体是:

{
    "id": 409,
    "isEnabled": true,
    "createdBy": "admin",
    "updatedBy": "admin",
    "createTime": 1598241102841,
    "updateTime": 1601975068428,
    "name": "test_role",
    "options": {},
    "users": [
        {
            "name": "test_user1”,
            "isAdmin": true
        },
        {
            "name": “test_user2”,
            "isAdmin": true
        },
        {
            "name": “test_user3”,
            "isAdmin": false
        }
    ],
    "groups": [
        {
            "name": "test_group”,
            "isAdmin": false
        }
    ],
    "roles": []
}

但是调用PUT /public/v2/api/roles/409/addUsersAndGroups返回“404 not found”。我尝试使用与上述相同的主体作为参数,并且还使用:

{
    "users": [
        {
            "name": “test_user4”,
            "isAdmin": true
        }
    ]
}

有谁知道作为参数发送到的正确正文是什么: /public/v2/api/roles/409/addUsersAndGroups
此外,进行错误调用,例如GET /public/v2/api/roles/409/addUsersAndGroups返回“405 method not allowed”。所以我相信它表明终点确实存在。我不确定为什么PUT public/v2/api/roles/409/addUsersAndGroups使用(可能)不正确的正文调用会返回“404 not found”,而不是与错误参数相关的错误消息。

标签: apache-ranger

解决方案


发生这种情况是因为 Apache Ranger API 文档有误,删除端点的后缀 /addUsersAndGroups 即可。

例子:https://ranger_url/service/roles/roles/409

其中 409 是角色 ID,正如您在示例中使用的那样。

需要的身体:

{
    "name": "test_role",
    "users": [
        {
            "name": "test_user1",
            "isAdmin": true
        }
    ]
}

推荐阅读