Недопустимо в соответствии с политикой: условие политики не выполнено: ["eq", "$ acl", "publi c -read"] от почтальона - PullRequest
1 голос
/ 23 марта 2020

Привет, я использую это для настройки прямой загрузки, используя предварительно назначенный URL для S3. https://devcenter.heroku.com/articles/s3-upload-python В политике Cors я сохранил: разрешено происхождение * остальное все то же самое.

После получения заранее заданного ответа я использую почтальон, чтобы попытаться загрузить файл изображения в s3. Но кажется, что появляется ошибка:

"Invalid according to Policy: Policy Condition failed:"eq", "$acl", "public-read""

Я думаю, что я испорчен политикой cors или чем-то еще.

PS: Доступный c доступ к корзине S3 все заблокирован .. . Мне нужно отключить его, чтобы это работало?

Политика корзины также пуста. Мне нужно что-то добавить туда. (Извините за новички).

Заранее спасибо.

1 Ответ

1 голос
/ 23 марта 2020

По указанной вами ссылке предварительно подписанный URL-адрес, который вы генерируете, позволяет загруженному объекту быть общедоступным для чтения, тогда как корзина блокирует доступ Publi c к корзине и ее объектам.

Вы можете отключить параметры блокировки доступа publi c, если объекты в корзине могут быть открыты для общественности. Обратитесь к документации здесь .

. Или вы можете обновить метод generate_presigned_post, чтобы установить ACL как частный

 presigned_post = s3.generate_presigned_post(
    Bucket = S3_BUCKET,
    Key = file_name,
    Fields = {"acl": "private", "Content-Type": file_type},
    Conditions = [
      {"acl": "private"},
      {"Content-Type": file_type}
    ],
    ExpiresIn = 3600
  )
...