2016-04-08 4 views
0

Ich habe einen Cognito-Identitätspool mit dem Namen eines benutzerdefinierten Entwicklers namens "my.developer" eingerichtet. Aus meiner Knoten Lambda-Funktion nenne ich den folgenden Code:getOpenIdTokenForDeveloperIdentity: "Diese Anmeldeinformationen sind für den Zugriff auf diese Ressource nicht gültig"

AWS.config.region = 'ap-northeast-1'; // Region 
AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
    IdentityPoolId: 'ap-northeast-1:*****' // I am using a valid UUID here 
}); 
var cognitoidentity = new AWS.CognitoIdentity(); 

var params = { 
    IdentityPoolId: 'ap-northeast-1:*****', 
    Logins: { 'my.developer': 'test-user' } 
}; 
cognitoidentity.getOpenIdTokenForDeveloperIdentity(params, 
    function(err, data) { 
     console.log('error:', err); 
     console.log('data:', data); 
    } 
); 

... wenn ich die Funktion zu testen bekomme ich einen Fehler:

{ 
    "errorMessage": "These credentials are not valid for accessing this resource", 
    "errorType": "AccessDeniedException", 
    "stackTrace": [ 
    "Request.extractError (/var/runtime/node_modules/aws-sdk/lib/protocol/json.js:43:27)", 

Ich habe Cognito_Unauth_Role und Cognito_Auth_Role die beide ähneln:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "mobileanalytics:PutEvents", 
       "cognito-sync:*", 
       "cognito-identity:*" 
      ], 
      "Resource": [ 
       "*" 
      ] 
     } 
    ] 
} 

... was fehlt mir?

Antwort

1

Vergewissern Sie sich, dass die Ausführungs Rolle Ihrer Lambda-Funktion (Dies ist nicht Cognito_Unauth_Role, noch Cognito_Auth_Role, aber die Rolle, die Ihre Lambda-Funktion verwendet, während es ausgeführt wird) die ausreichenden Berechtigungen für Cognito Service. Ein Beispiel Politik wäre:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "cognito-sync:*", 
       "cognito-identity:*" 
      ], 
      "Resource": [ 
       "*" 
      ] 
     } 
    ] 
} 
0

Merkwürdigerweise Entfernen Sie die folgenden Zeilen das Problem behoben:

AWS.config.credentials = new AWS.CognitoIdentityCredentials({ 
    IdentityPoolId: 'ap-northeast-1:*****' // I am using a valid UUID here 
}); 

... Ich denke, dass die CognitoIdentityCredentials Objekt innerhalb der Lambda-Funktion, indem sie entfernt hat sich die Rollen, die in der Webkonsole konfiguriert sind.

Verwandte Themen