0

Я отправляю автоматическое электронное письмо для заказов, и теперь я пытаюсь получить ссылку для загрузки PDF-квитанции.«Доступ запрещен» - Разрешения пользователя к ведомости S3

У пользователя появляется ошибка в браузере при попытке загрузить высказывание «Этот XML-файл не содержит никакой информации о стиле, связанной с ним. Дерево документов показано ниже».

enter image description here

Я пошел в ведро и запустить «Сделать общедоступным» на квитанции ведро, еще не повезло. Файловая структура является:

приложения имени/добавление/заказ/получение

Что мне нужно сделать, чтобы права доступа для пользователя, чтобы иметь возможность загружать свои квитанции?

+1

Вы пробовали настройки ACL для «общественного чтения» при загрузке объекта? Вы не упоминаете, используете ли вы один из SDK или какой-либо, поэтому трудно быть более конкретным, но именно так вы делаете объект, загружаемый кем-либо ... хотя, как уже упоминалось, подписанные URL-адреса будут быть более безопасным. –

+0

@ Michael-sqlbot У меня нет. Я не уверен, как (пока) сделать это. Но, похоже, еще лучше, я должен изучить «подписанный URL-адрес», концепцию, о которой я не знал. Я использую CarrierWave и Fog для загрузки на S3 через приложение Rails, а не с помощью SDK. –

+0

О, я вижу, что дата истечения срока является прошлой датой, вот в чем проблема. Работа над переопределением даты экспорта позволяет значительно увеличить время загрузки. –

ответ

0

Когда вы делаете ведро общественность, вы должны получить новый URL-адрес, который выглядит как этот

http://bucketName.s3-website-us-east-1.amazonaws.com/uploads/order/receipt

... вы должны использовать это в вашей почте.

Но имейте в виду, что все данные доступны общественности, может быть, вы поправитесь с заранее подписанными s3-адресами, которые вы распределяете по каждому клиенту.

0

Имеет аналогичную проблему с конкретным файлом на s3. Решив проблему, изменив права доступа к файлу с помощью команды mv и аргумента --acl. Попытка доступа к файлу с именем data.jsonlines дала ошибку ACCESS DENIED. Решаемые его, выполнив следующие команды:

aws s3 cp s3://<s3 bucket name>/path/to/file/data.jsonlines s3://cfa-opengazettes-ke/gazettes/data_copy.jsonlines 

aws s3 mv --acl public-read s3://<s3 bucket name>/path/to/file/data_copy.jsonlines s3://cfa-opengazettes-ke/gazettes/data.jsonlines 

Или вы можете сочетающие им, запустив:

aws s3 cp s3://<s3 bucket name>/path/to/file/data_out.jsonlines s3://cfa-opengazettes-ke/gazettes/data_out2.jsonlines && aws s3 mv --acl public-read s3://cfa-opengazettes-ke/gazettes/data_out2.jsonlines s3://<s3 bucket name>/path/to/file/data_out.jsonlines 

Эти команды выполняют действия:

  • копия: s3://<s3 bucket name>/path/to/file/data.jsonlines до s3://c<s3 bucket name>/path/to/file/data_copy.jsonlines

  • ход: s3://<s3 bucket name>/path/to/file/data_copy.jsonlines к s3://cfa-opengazettes-ke/path/to/file/data.jsonlines

В основном, он создает копию файла, а затем удаляет его во время движения при изменении разрешения файла.

Обратите внимание на вариант --acl и аргумент public-read. От documentation:

--acl (string) Устанавливает ACL для объекта при выполнении команды. Если вы используете этот параметр, вы должны иметь разрешение «s3: PutObjectAcl», включенное в список действий для вашей политики IAM .Только принимает значения частного, общественного чтения, общественного чтения-записи, аутентифицированные чтения, AWS-EXEC чтения, ковшового владелец читаемый, ковш-владельца -полный контроль и log-delivery-write.

Некоторые больше полезной информации на этом AWS page

Смежные вопросы