В настоящее время я работаю над сценарием использования, где мне нужно аутентифицировать пользователей веб-приложений с помощью AWS Cognito и предоставить доступ к определенным для пользователя папкам в корзине S3.Для этого я использую JavaScript на стороне браузера и могу аутентифицировать пользователей.
Я создал политику IAM, в которой я пытаюсь ограничить доступ S3 к определенным папкам для аутентифицированных пользователей.Почему-то эта политика не работает.
Политика, которую я здесь пробую, приведена ниже:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"cognito-identity:*",
"mobileanalytics:PutEvents",
"cognito-sync:*"
],
"Resource": "*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::mycognitobuckettest",
"Condition": {
"StringLike": {
"s3:prefix": [
"cognito/mycognitobuckettest/${cognito-identity.amazonaws.com:sub}/",
"cognito/mycognitobuckettest/${cognito-identity.amazonaws.com:sub}/*"
],
"s3:delimiter": [
"/"
]
}
}
},
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::mycognitobuckettest/cognito/mycognitobuckettest/${cognito-identity.amazonaws.com:sub}/*"
}
]}`
Если я удаляю ${cognito-identity.amazonaws.com:sub}
из пути к ресурсу, я могуполучить доступ к S3 ведро.Однако, если я помещу это в путь к ресурсу, а также в ключ условия, я получу ошибку об отказе в доступе.
Согласно моему пониманию, значение для ${cognito-identity.amazonaws.com:sub}
- это идентификатор региона и uuid, которые вы можете получить.как это var identityID = AWS.config.credentials.identityId
Я пытаюсь перечислить объекты в пути к ресурсу, и ниже приведен код JavaScript, который я использую для перечисления объектов
var listObjectParms = {Bucket: bucketName, Delimiter: '/', Prefix: bucketPrefix};
s3.listObjects(listObjectParms, function(err, data) {
if(err) {
console.log("Error", err);
} else {
console.log("LIST OBJECT successful", data);
}
});
Какое точное значение для${cognito-identity.amazonaws.com:sub}
?
Я создал папку в корзине S3 в соответствии с идентификатором, который я получаю.
Я застрял в этой точке прямо сейчас.Все, что вы можете оказать любую помощь в решении этой проблемы.
Спасибо,
Avinash