내가 성취하려는 것을 전반적으로 설명하겠습니다. 난 람다, Cognito (연합 신원), API를 게이트웨이 등 API를 게이트웨이에서 권한 부여로 aws_iam을 사용하여 사용하여 서버가없는 건물입니다. 일부 종단점에서는 사용자 전자 메일이나 사용자 이름 등을 액세스해야하므로 응답에서 다시 보낼 수 있습니다 (요청하지 않은 사용자의 데이터도 가능). 나는 cognitoIdentityId를 기반으로 데이터를 검색 할 수 있도록 ID 풀에 대한 일종의 "관리자"액세스를 찾고 있다고 생각합니다.람다에서 ID의 데이터 집합에 액세스하는 방법
내 경우,이 데이터는 Cognito의 데이터 세트에 저장됩니다. 문제는 람다 함수 (node.js)에서이 데이터에 어떻게 액세스 할 수 있습니까? 이것은 좋은 접근 방법입니까? 데이터 세트 대신 다른 것을 사용해야합니까? 어딘가에서 실제 예제가 있습니까?
필요한 경우 자세한 정보를 제공해 드리겠습니다.
감사
수정 # 1 : 여기
내 람다 함수의 코드입니다 :
module.exports.getDataSet = (event, context, callback) => {
console.log("event: " + JSON.stringify(event));
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: IDENTITY_POOL_ID
});
try {
AWS.config.credentials.get(function() {
var client = new AWS.CognitoSync();
var params = {
DatasetName: 'userinfo',
IdentityId: event.requestContext.identity.cognitoIdentityId,
IdentityPoolId: IDENTITY_POOL_ID
};
client.listRecords(params, function (err, data) {
if (err) {
console.log(JSON.stringify(err));
} else {
console.log(data);
}
});
});
} catch (ex) {
callback(ex);
}
};
이이 listRecords
를 호출 할 때 내가 err
에서 무엇을 얻을 수 있습니다 :
{ "message": "Missing credentials in config", "code": "CredentialsError", "time": "2017-05-26T08:42:39.298Z", "requestId": "46712a9b-41ef-11e7-9e3c-074afafb3349", "statusCode": 400, "retryable": false, "retryDelay": 21.688148977111666, "originalError": { "message": "Could not load credentials from CognitoIdentityCredentials", "code": "CredentialsError", "time": "2017-05-26T08:42:39.298Z", "requestId": "46712a9b-41ef-11e7-9e3c-074afafb3349", "statusCode": 400, "retryable": false, "retryDelay": 21.688148977111666, "originalError": { "message": "Unauthenticated access is not supported for this identity pool.", "code": "NotAuthorizedException", "time": "2017-05-26T08:42:39.298Z", "requestId": "46712a9b-41ef-11e7-9e3c-074afafb3349", "statusCode": 400, "retryable": false, "retryDelay": 21.688148977111666 } } }
EDIT # 2 :
코드로부터
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: IDENTITY_POOL_ID
});
를 제거하고, λ를 호출하는 역할에 AmazonCognitoReadOnly
정책을 추가함으로써 해결했다.
감사합니다. 질문을 수정했습니다. 뭔가 이상한 것 같지만 정확하게 무엇인지 파악할 수 없습니다. 오류에 언급 된 자격 증명은 무엇입니까? 어디서 구할 수 있니? – gabo
이제 알았어, 고마워. – gabo