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?