Доступ к файлам, хранящимся на Amazon S3, через веб-браузер

Текущая ситуация

У меня есть проект Github, который строит после каждого фиксации на Travis-CI. После каждой успешной сборки Travis загружает артефакты в ведро S3. Есть ли какой-то способ для меня легко позволить любому доступу к файлам в ведре? Я знаю, что могу создать ключ доступа только для чтения, но пользователю было бы проще получить доступ к файлам через их веб-браузер.

У меня есть хостинг веб-сайтов с корневым документом "." задавать.

Screenshot of website hosting setup

Тем не менее, я все еще получаю запрет 403 при попытке перейти к конечной точке ведра.

403 Forbidden

Вопрос

Как я могу позволить пользователям легко просматривать и загружать артефакты, хранящиеся на Amazon S3, из своего веб-браузера? Предпочтительно без стороннего клиента.

Ответы

Ответ 1

Я нашел этот связанный вопрос: Список каталогов на статическом веб-сайте S3

Как оказалось, если вы включите публичное чтение для всего ведра, S3 может обслуживать списки каталогов. Проблема в том, что они находятся в XML вместо HTML, поэтому не очень удобны для пользователя.

Существует три способа создания списков:

  • Создавайте файлы index.html для каждого каталога на своем собственном компьютере, загружайте их на s3 и обновляйте их при каждом добавлении новых файлов в каталог. Очень низкотехнологичный. Поскольку вы говорите, что загружаете файлы с файлами прямо из Travis, это может быть не так практично, поскольку для этого потребуется дополнительная работа.

  • Используйте клиентский инструмент S3 для браузера.

  • Используйте серверный браузер.

    • s3browser (PHP)
    • s3index Scala. Исходя из существования Procfile, он может быть легко доступен для использования в Heroku. Не уверен, так как у меня нет опыта работы с Scala.

Ответ 2

Вы можете использовать политику ведра, чтобы предоставить анонимным пользователям полный доступ для чтения к вашим объектам. В зависимости от того, нужны ли они вам для СПИСОК или просто выполнить GET, вы захотите настроить его. (I.e. разрешения для перечисления содержимого ведра имеют действие, установленное на "s3: ListBucket" ).

http://docs.aws.amazon.com/AmazonS3/latest/dev/AccessPolicyLanguage_UseCases_s3_a.html

Ваша политика будет выглядеть примерно так: Вы можете использовать консоль S3 в http://aws.amazon.com/console, чтобы загрузить ее.

 {
  "Version":"2008-10-17",
  "Statement":[{
    "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal": {
            "AWS": "*"
         },
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::bucket/*"
      ]
    }
  ]
}

Если вы действительно открываете свои объекты миру, вам нужно будет изучить настройки правил CloudWatch для вашего биллинга, чтобы вы могли отключить разрешения для своих объектов, если они станут слишком популярными.

Ответ 3

У меня была та же проблема, и я исправил ее, используя

  • новое контекстное меню "Сделать общедоступным".
  • Перейдите к https://console.aws.amazon.com/s3/home,
  • выберите ковш, а затем для каждой папки или файла (или нескольких выбранных) щелкните правой кнопкой мыши и
  • "публиковать"