2017-09-22 50 views
0

使用以下基于AWS Lambda的应用程序客户端时,我试图列出来自Cognito用户池的所有用户。AWS Cognito ListUsers InvalidParameterException在自定义属性上使用AttributesToGet

let AWS = require('aws-sdk') 
const COGNITO_CLIENT = new AWS.CognitoIdentityServiceProvider() 
COGNITO_CLIENT.listUsers({ 
    UserPoolId: 'MyUserPoolId', 
    AttributesToGet: ['default_attribute', 'custom:my_attribute'] 
}, callback) 

默认查询所有属性时(AttributesToGet: [] // or excluding this field altogether),一切正常。但是,如果定位自定义属性,则会引发InvalidParameterException。这是使用Amazon SDK for Node.js.

定位默认属性虽然允许:

AttributesToGet: ['email', 'name', /* other non-custom */] 
+0

确保'AttributesToGet'匹配模式'[\\ p {L} \\ p {M} \\ p {S} \\ p {N} \\ p {P}] +' –

+0

确保客户端已经读取了自定义属性。如果该属性是在客户端之后创建的,那么默认情况下客户端无权访问它。它在客户端的详细信息中,然后单击链接来更改访问权限。 – doorstuck

+0

我已检查并且应用程序客户端已具有读取权限。当我要求返回所有属性时,将返回自定义属性。当我使用'AttributesToGet'来定位它们时,我得到这个异常 – Nogurenn

回答

0

你的代码是正确的。但是,我在Cognito团队中,目前我们不支持在自定义属性上进行搜索。

+1

可以将有关AttributesToGet的部分记录在案? filter参数文档确实声明它不能搜索自定义属性,但我确定AttributesToGet部分没有指定一个警告,即它隐式地使用与过滤器中相同的搜索算法,因此不允许定位自定义属性。尽管如此,我觉得它是违反直觉的。它只是针对返回的属性,而不是一个搜索。它应该能够处理自定义属性作为AttributeToGet的目标 – Nogurenn