Я пытаюсь напрямую загрузить файл на S3, используя библиотеку JavaScript AWS SDK.Я следую инструкции, изложенной здесь:
https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-example-photo-album-full.html
с поддержкой
https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/getting-started-browser.html
Я уверен, что у меня естьнастроить все правильно, но всякий раз, когда я пытаюсь запустить код, я получаю ошибку 403.Сначала я попытался сделать это с самой слабой защитой с намерением постепенно ужесточить ее.
Вот что я сделал:
Создал новое ведроназывается Playground с настройками по умолчанию, выбранными в мастере создания.
Создан пул идентификаторов Cognito с именем Playground с неаутентифицированными удостоверениями.Имя роли, не прошедшее проверку подлинности, было Cognito_PlaygroundUnauth_Role
Добавьте политику к роли IAM без проверки подлинности следующим образом
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::playground/*"
]
}
]
}
Добавлены разрешения CORS для новой корзины Playground
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
На этом этапе все должно быть настроено на основе руководств, перечисленных выше, но я получаю 403. Сначала я пытался упростить вещи ипросто реализуйте метод listAlbums
в ссылочных URL-адресах выше.
Тогда я подумал, что, возможно, добавление политики корзины в корзину Playground может помочь, но это не
{
"Version": "2012-10-17",
"Id": "Policy1549895523201",
"Statement": [
{
"Sid": "Stmt1549895522186",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::925601331860:role/Cognito_PlaygroundUnauth_Role"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::playground/*"
}
]
}
Обновление Я смогу выполнить эту работу, если обновлю ACL общего доступа в корзине, чтобы каждый мог перечислять и писать объекты.Однако я не хочу открывать это для всех.Только анонимная роль Cognito
Есть мысли?