У меня есть ведро, настроенное в S3, test-bucket
, и я пытаюсь настроить политику пользователя IAM, чтобы разрешить программный доступ из моего веб-приложения, размещенного в другом месте. Это просто плоское ведро без папок.Конфигурирование программного доступа Amazon S3 PUT
Я добавил пользователя в конфигурацию IAM и создал набор ключей доступа. Наконец, я создал политику доступа, которая выглядит следующим образом:
{
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:ListAllMyBuckets"
],
"Resource":"arn:aws:s3:::*"
},
{
"Effect":"Allow",
"Action":[
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource":"arn:aws:s3:::test-bucket"
},
{
"Effect":"Allow",
"Action":[
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource":"arn:aws:s3:::test-bucket/*"
}
]
}
Используя это, я могу успешно программно перечислить содержимое моего ведра и загружать отдельные файлы в ведре. Но когда я пытаюсь загрузить что-то программно я получаю Access Denied
ошибку:
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
...
</Error>
Я знаю, что эта политика работает на GET и LIST: например, когда я удалить строку "s3:GetObject"
от политики, загрузки больше не работает. Но для жизни я не могу понять, почему загрузка не работает. Я тестирую все это через мой webapp, работающий на localhost. Любые идеи о том, как загрузить загрузку?
u не меняет разрешения, но вам нужно установить его при загрузке нового файла. Но, к сожалению, это не работает для меня даже с помощью Allow «s3: ListBucket», «s3: PutObject», «s3: GetObject», «s3: DeleteObject», «s3: PutObjectAcl» Я все еще получаю AccessDenied для Действие PutObject для моего скрипта python –
OMG это должно быть сделано как ROLE, но не как Policy. Когда я создал роль для S3 с тем же контентом, что и политика - IT WORK –