Политика Amazon Cognito + S3 - не работает под-переменная удостоверения
Я работаю с Amazon Cognito и S3. Я хочу добиться того, чтобы у каждого пользователя была "собственная" директория в S3 (пример учебника). Поэтому я настроил следующую политику (следуя этому примеру https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_s3_cognito-bucket.html):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::sg-cognito-s3-bucket-test"
],
"Condition": {
"StringLike": {
"s3:prefix": [
"users"
]
}
}
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::sg-cognito-s3-bucket-test/users/${cognito-identity.amazonaws.com:sub}",
"arn:aws:s3:::sg-cognito-s3-bucket-test/users/${cognito-identity.amazonaws.com:sub}/*"
]
}
]
}
Проблема в том, что я получил отказ в доступе для списка и загрузки.
Но когда я обновляю второе правило так:
"Resource": [
"arn:aws:s3:::sg-cognito-s3-bucket-test/users",
"arn:aws:s3:::sg-cognito-s3-bucket-test/users/*"
]
Я могу загрузить файл.
Как я делаю список и загрузку?
s3.listObjects({
Bucket: AppComponent.S3_BUCKET
}, function(err, data){
});
s3.putObject({
Bucket: AppComponent.S3_BUCKET,
Key: 'users/' + sub + '/' + 'test.txt',
Body: 'hello, i am: ' + sub
},function (error, resp) {
});
Большое спасибо!