2017-02-14 7 views
0

ich JavaScript-Client aws mit Provider (Facebook, Google, Twitter, etc.) cognito authentifizierte Anmeldung durchzuführen. Ich kann sehen, dass es erfolgreich war, die Anmeldeinformationen abzurufen:AWS cognito Sync-Manager Fehler synchronisieren Wolke

var cognitoParam = { 
    'IdentityPoolId': 'ap-northeast-1:c8250ce6-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 
    'RoleArn': 'arn:aws:iam::xxxxxxxxxxxx:role/roleName' 
    'Logins': { 
    'accounts.google.com': response.detail.id_token 
    } 
}; 
var cognitoCred = new AWS.CognitoIdentityCredentials(cognitoParam); 

Es gibt alle Anmeldeinformationen Objekt zurück. Und ich habe auch überprüft auf AWS-Konsole hat sich die Pool-ID wurde in der föderierten Identitäten bündeln als authentifizierte Anmeldung beim Provider gelistet/registriert.

Nach get Credential, möchte ich mit Cognito Sync Manager arbeiten mehrere Benutzer Info zu Cloud speichern:

var syncManager = new AWS.CognitoSyncManager(); 
syncManager.openOrCreateDataset('profileSet', function(err, dataset) { 
    // dataset.get 
    // dataset.put 
    // dataset.remove 
}); 

Alle Methoden (get, put, entfernen) funktionieren gut, aber ich habe ein Problem zu laufen Methode synchronisieren. Im Beispiel nach neuen Datensatz setzen:

dataset.put("keyTes", "english", function(err,record){ 
    if(!err){ 
    dataset.synchronize({ 
     onSuccess: function(dataset, newRecords) { 
     console.log(newRecords); 
     }, 

     onFailure: function(err) { 
     console.log("Error while synchronizing data to the cloud: " + err); 
     } 
    }); 
    } 
}); 

Es zeigt Fehler:

Fehler beim Daten in die Cloud zu synchronisieren: AccessDeniedException: Benutzer: arn: aws: M. :: xxxxxxxxxxxx: assumed- Rolle/rolename/Web-Identität nicht ausführen dürfen: cognito-sync: ListRecords auf Ressource: arn: aws: cognito-sync: ap-Nordost-1: xxxxxxxxxxxx: identitypool/ap-Nordost-1: c8250ce6-xxxx -xxxx-xxxx-xxxxxxxxxxxx/Identität/ap-Nordost-1: 653aeca2-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Datensatz/profileSet

In meiner IAM Rolle, ich auf:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Principal": { 
     "Federated": "cognito-identity.amazonaws.com" 
     }, 
     "Action": "sts:AssumeRoleWithWebIdentity", 
     "Condition": { 
     "StringEquals": { 
    "cognito-identity.amazonaws.com:aud": "default" 
     }, 
     "ForAnyValue:StringLike": { 
      "cognito-identity.amazonaws.com:amr": "authenticated" 
     } 
     } 
    } 
    ] 
} 

und die Politik:

{ "Version": "2012.10.17", "Statement": [ { "Aktion": "cognito-sync: ", "Effect": "Erlauben", "Ressource": "" } ] }

Ich folge dem Verweis aus dem Link:

Amazon Cognito Sync Manager for JavaScript

Wer kann mir helfen, bitte?

Antwort

0

Es wurde gelöst. Ich habe mich geirrt, meine IAM-Rolle zu ersetzen. Alles ist richtig, nur meine falschen Skripte.

Danke