我有javascript客戶端執行認證與提供者(Facebook,谷歌,Twitter等)的認證登錄。我可以看到它已成功獲取憑證:AWS認知同步管理器錯誤同步到雲
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控制檯上進行了檢查,池ID已在聯合身份池中列出/記錄爲與供應商進行身份驗證登錄。
獲取證書後,我想Cognito同步經理合作,將多個用戶的信息存儲到雲:
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異常: 用戶: 阿爾恩:AWS:STS :: XXXXXXXXXXXX:assumed-角色/角色名稱/網絡身份 未被授權執行:資源上的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
有人能幫助我,好嗎?