S3 -Анонимная загрузка -Префикс ключа

Я пытаюсь точно понять, как настроить корзину, которая обычно является частной, но позволяет анонимную загрузку с ограничениями. Конкретные критерии:

  • Ведро в основном приватное и требует моего ключа/секрета для добавления/удаления/обновления/списка файлов.
  • Существует «каталог» (, т. е. ключевой префикс ), называемый «входящим», который позволит анонимным пользователям загружать контент, но не список.
  • Срок действия корзины составляет один день для всего контента. В качестве бонуса я хотел бы, чтобы «входящий» каталог имел срок действия 30 минут, хотя, если это невозможно, подойдет истечение одного дня для всего ведра.
  • Файлы с префиксом «входящие» будут ограничены по размеру для каждого объекта.
  • Я мог бы также ограничить объекты с префиксом «входящий» только определенными типами контента.

У меня есть вопросы:

  1. Было бы лучше просто создать два ведра. Один для моих входящих файлов и один для моей личной обработки и хранения?
  2. Как бы выглядел код для загрузки файла во входящий каталог. В идеале я хотел бы избежать зависимости от библиотеки S3 и просто использовать вызовы HTTP. Бонусные баллы, если вы можете показать мне правильное направление в Ruby.:)

Срок действия можно установить с помощью консоли управления S3, но он ограничен только 1 днем ​​в качестве наименьшего срока действия. Могу ли я поставить десятичную дробь в этом поле? Похоже, что разрешения применяются ко всему сегменту, а не только к префиксу. Это заставляет меня думать, что мне нужно всего два ведра.Если я останусь с одним сегментом, я думаю, что мне нужно создать политику IAM и применить ее к сегменту, но это выходит за рамки моих ограниченных знаний о S3, и я хочу убедиться, что я не оставляю дыры в разрешениях, которые позволяют людям делать больше, чем я хочу, чтобы они.

Я нашел много документации по анонимным загрузкам на S3 через сообщение формы HTTP. Я мог бы адаптировать это в код, но мне интересно, поскольку я нахожусь в коде приложения (, а не в сообщении HTTP-формы ), есть ли более простой способ?

16
задан Michal Klouda 27 August 2012 в 20:40
поделиться