Rails 5.2 Очистка / удаление активных хранилищ не приведет к удалению записей Blob или Attachent - PullRequest
0 голосов
/ 15 мая 2018

Я использую 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"
                ]
            }
        ]
    }

1 Ответ

0 голосов
/ 15 мая 2018

Учетная запись S3, которую вы используете для Active Storage, должна иметь разрешение s3:DeleteObject для всей корзины.(Как указано в руководстве Active Storage , оно также должно иметь разрешения s3:ListBucket, s3:PutObject и s3:GetObject.)

...