Я пытаюсь понять, как настроить ведро, которое обычно является приватным, но позволяет анонимные загрузки с ограничениями. Конкретными критериями являются:
- Ведро в основном закрыто и требует моего ключа/секрета для добавления/удаления/обновления/списка файлов.
- Существует "каталог" (т.е. префикс ключа), называемый "входящий", который позволит анонимным пользователям загружать контент, но не список.
- Ведро имеет однодневное истечение всего содержимого. В качестве бонуса я бы хотел, чтобы "входящий" каталог имел истечение 30 минут, хотя, если это невозможно, будет выполняться однодневное истечение для всего ведра.
- Файлы с "входящим" префиксом будут ограничены по размеру для каждого объекта.
- Я могу также ограничить объекты с помощью "входящего" префикса только определенными типами контента.
Вопросы, которые у меня есть:
- Было бы лучше просто создать два ведра. Один для моих входящих файлов и один для моей личной обработки и хранения?
- Что бы код выглядел так, чтобы файл был загружен во входящий каталог. В идеале я хотел бы избежать зависимости от библиотеки S3 и просто использовать HTTP-вызовы. Бонусные баллы, если вы можете показать мне правильное направление на этом в Ruby.:)
Истечение срока действия может быть установлено с помощью консоли управления S3, но ограничено только одним днем как наименьшим сроком действия. Могу ли я поместить десятичное число в это поле? Разрешения, похоже, применяются ко всему ведру, а не только к префиксу. Это заставляет меня думать, что мне просто нужны два ведра. Если я держусь с одним ведром, я думаю, что мне нужно создать политику IAM и применить ее к ведро, но это выходит за рамки моих ограниченных знаний о S3, и я хочу, чтобы я не оставил дыры в разрешениях, которые позволяют людям делать больше, чем я хочу.
Я нашел много документации по выполнению анонимных загрузок на S3 через сообщение формы HTTP. Я мог бы адаптировать это к коду, но мне интересно, так как я нахожусь в коде приложения (а не в сообщении HTTP-формы), есть ли более простой способ?