Я использую rails 5.2 и пытаюсь настроить Active Storage с Amazon S3. Мое приложение имеет полный доступ к S3, и я могу прикрепить avatar
изображение к user
. Но когда я пытаюсь удалить аватар, я сталкиваюсь со следующими проблемами:
> user.avatar.attached? #true`
> user.avatar.purge
S3 Storage (697.9ms) Deleted file from key: Ns1KBRzdgxLNnY31sH72vT5t
S3 Storage (227.0ms) Deleted files by key prefix: variants/Ns1KBRzdgxLNnY31sH72vT5t/
Aws::S3::Errors::AccessDenied: Access Denied
Затем, когда я проверял корзину, файл был фактически удален, но при поиске в базе данных все еще присутствуют записи Blob
и Attachment
.
Есть идеи, почему это происходит?
EDIT
Я сделал некоторые обновления в своих разрешениях IAM, следуя совету из принятого ответа. Это пункты, которые я обновил:
- Прикрепил политику к моему пользователю IAM вместо моего s3 bucket.
- Перечислены все необходимые действия.
- Добавьте все поле в поле ресурса, а не только все объекты.
В итоге моя политика JSON выглядела так:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::my-bucket/*",
"arn:aws:s3:::my-bucket"
]
}
]
}