Доступ запрещен при загрузке файлов в Amazon с использованием политик Paperclip и IAM

Я не могу загрузить файл с помощью Paperclip, используя политику S3 IAM. Я'У меня даже есть проблемы с прямой загрузкой jQuery (без Paperclip). Мой сценарий выглядит следующим образом, у меня есть приложение, которое будет иметь много сайтов. Каждый сайт будет иметь этос собственным ведром и должен иметь доступ только к своему ведру, никто другойs.Пример политики IAM документация объясняет, что именно я хочу сделать под "Пример: разрешить каждому пользователю IAM доступ к папке в корзине ", У меня есть группа IAM, настроенная для приложения, и у меня есть один пользователь на сайт в группе. Эти пользователи IAM принадлежат к группе. Политика в отношении группы выглядит следующим образом:

{
   "Version":"2012-10-17",
   "Statement":[{
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:DeleteObject",
            "s3:DeleteObjectVersion"
         ],
         "Resource":"arn:aws:s3:::my-app/${aws:username}/*"
      }
   ]
}

Вот моя конфигурация CORS на корзине, для dev, конечно, она будет заблокирована позже:



    
        *
        GET
        POST
        PUT
        *
    

Вот мои настройки скрепки:

has_attached_file :background_image,
                  storage: :s3,
                  s3_credentials: {
                    access_key_id: "xxx",
                    secret_access_key: "xxx"
                  },
                  bucket: "my-app",
                  s3_permissions: "public-read",
                  path: "/background_images/:id/:filename"

Ранее я работал с политиками прямо в ведре, который работал, но ненастолько гибок, насколько мне нужно, когда я перехожу в производственную среду со многимиместа", Насколько я могу сказать, яя точно следовал документации, но все, что я делаю, приводит кДоступ закрыт', На данный момент яЯ даже не уверен, что моя проблема связана с моей политикой IAM или с моей конфигурацией Paperclip.

редактировать: уточнение.

редактировать 2: ЗАКЛЮЧИТЕЛЬНОЕ РЕШЕНИЕ

Вот моя окончательная политика IAM, основанная наЭта статья:

{
 "Version":"2012-10-17",
 "Statement": [
   {
     "Sid": "AllowUserToSeeBucketListInTheConsole",
     "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::*"]
   },
  {
     "Sid": "AllowRootAndHomeListingOfCompanyBucket",
     "Action": ["s3:ListBucket"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::my-app"],
     "Condition":{"StringEquals":{"s3:prefix":["","home/"],"s3:delimiter":["/"]}}
    },
   {
     "Sid": "AllowListingOfUserFolder",
     "Action": ["s3:ListBucket"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::estimator-app"],
     "Condition":{"StringLike":{"s3:prefix":["home/${aws:username}/*"]}}
   },
   {
     "Sid": "AllowAllS3ActionsInUserFolder",
     "Effect": "Allow",
     "Action": ["s3:*"],
     "Resource": ["arn:aws:s3:::my-app/home/${aws:username}/*"]
   }
 ]
}

И мои обновленные настройки скрепки:

has_attached_file :background_image,
                    storage: :s3,
                    s3_credentials: {
                      access_key_id: "xxx",
                      secret_access_key: "xxx"
                    },
                    bucket: "estimator-app",
                    s3_permissions: "public-read",
                    path: "/home/my_s3_username/background_images/:id/:filename"

Важно было включить имя пользователя в путь Скрепка. Я предполагал, что Amazon выведет это из учетных данных, но этодело не в этом.

Ответы на вопрос(1)

Ваш ответ на вопрос