У меня есть роль IAM, связанная с пулом пользователей Cognito.Ниже приведена политика IAM.
Что работает:
- Если я пытаюсь загрузить объект на S3 без входа в систему, он жалуется: не аутентифицирован.
Что не работает:
- как зарегистрированный пользователь, мне разрешено загружать только в папку S3 с моим идентификатором пользователя, но вместо этого я могу загружать в любую папку, включаяпапка test.
У меня нет политики корзины (я пробовал это, и она по-прежнему работает, как указано выше).
У меня включены только cors в корзине и общедоступныхдоступ заблокирован.
Политика не реализуется должным образом, потому что, когда я удалил объект remove и put и оставил объект get, я все еще смог загрузить и возразить.
Кто-нибудь видитчто не так с приведенным ниже?
Код загрузки
const uploadParams = {Bucket: 'bucket-1',
Key: `testing/${someId}/${someName}`,
s3.upload (uploadParams, (err: Error, data: AWS.S3.ManagedUpload.SendData) => {
if (err) {
console.log("Error", err);
} if (data) {
console.log("Upload Successful");
} });
Политика ролей IAM:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket-1"
],
"Condition": {
"StringLike": {
"s3:prefix": [
"${cognito-identity.amazonaws.com:sub}/*"
]
}
}
},
{
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucket-1/${cognito-identity.amazonaws.com:sub}/*"
]
}
]
}