ActiveStorage и s3 - установка всех изображений publi c по умолчанию - PullRequest
2 голосов
/ 01 августа 2020

Мне нужно загрузить файл из моего приложения rails 6 в s3, чтобы сгенерировать ссылку publi c для обмена с приложением третьей части.

на самом деле я отправляю ссылку на другое приложение с:

object.media.service_url.sub(/\?.*/, '')

, а конфигурация корзины имеет следующую конфигурацию:

введите описание изображения здесь

и эта политика:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "Stmt1420751757000",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::XXXXXXXXXXXX:user/YYYYYYYYY"
        },
        "Action": "s3:*",
        "Resource": [
            "arn:aws:s3:::bucket-dev",
            "arn:aws:s3:::bucket-dev/*"
        ]
    }
]

}

, но когда я пытаюсь просмотреть содержимое URL-адреса, у меня все еще появляется ответ AccessDenied:

<Error>
    <Code>AccessDenied</Code>
    <Message>Access Denied</Message>
    <RequestId>CD3A94D81CC8418D</RequestId>
    <HostId>5OFKgoUzoDxoB72g4AIYePONGkn7FtulUNk6kCga57FDSBACzenjipxyeekGNiRbBmXVKsEdxxfiQehb06z4wQ== 
  </HostId>
</Error>

Есть еще какая-то конфигурация, которую мне все еще не хватает?

1 Ответ

0 голосов
/ 04 августа 2020

Что ж, я решил эту проблему, используя:

Rails.application.routes.url_helpers.url_for(object.media)

вместо:

object.media.service_url.sub(/\?.*/, '')

Это работает, даже если вы заблокировали весь доступ publi c для вашего сегмента.

...