2017-02-14 7 views
0

У меня есть клиент javascript для выполнения аутентичного входа aws cognito с провайдером (Facebook, Google, Twitter и т. Д.). Я вижу, что успешно получить Учетные данные от:AWS cognito sync manager error синхронизировать с облаком

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); 

Он возвращает все объекты учетных данных. И я также проверил на консоли AWS, идентификатор пула был указан/зарегистрирован в пуле объединенных идентификаторов как аутентифицированный вход с поставщиком.

После ПОЛУЧИТЬ верительных, я хочу работать с Cognito Sync Manager для хранения нескольких пользователей Информация для облака:

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

Все методы (GET, PUT, удалить) работают хорошо, но у меня есть вопрос, чтобы запустить метод синхронизации. В примере, после того, как поставил новый набор данных:

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); 
     } 
    }); 
    } 
}); 

Это показывает сообщение об ошибке:

Ошибка при синхронизации данных в облаке: AccessDeniedException: Пользователь: ARN: AWS: петл :: ХХХХХХХХХХХХ: assumed- role/roleName/web-identity не имеет права на выполнение: cognito-sync: ListRecords на ресурсе: arn: aws: cognito-sync: ap-northeast-1: xxxxxxxxxxxx: identitypool/ap-northeast-1: c8250ce6-xxxx -xxxx-xxxx-xxxxxxxxxxxx/identity/ap-northeast-1: 653aeca2-xxxx-xxxx-xxxx-xxxxxxxxxxxx/dataset/profileSet

В моих IAM ролей, я поставил на:

{ 
    "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" 
     } 
     } 
    } 
    ] 
} 

и политику:

{ "Версия": "2012-10-17", "Заявление": [ { "Действие": "Cognito-синхронизация: ", "Эффект": "Разрешить", "ресурс": "" } ] }

Я следую ссылку по ссылке:

Amazon Cognito Sync Manager for JavaScript

Любой человек может помочь мне, пожалуйста?

ответ

0

Решено. Я был неправ, чтобы заменить мой параметр роли IAM. все правильно, только мои неправильные сценарии.

Спасибо

 Смежные вопросы

  • Нет связанных вопросов^_^