Начало работы
Вам потребуется:
- Экземпляр Discourse с доступом к app.yml
- Аккаунт AWS
Стратегия именования
Множество мест, где можно допустить ошибки. Использование стратегии именования, которая имеет смысл для вас и, возможно, для других, поможет вам в устранении неполадок, особенно если вы настраиваете несколько экземпляров Discourse.
- Пользователь IAM: ваш-пользователь-iam
- Политика: s3-discourse-policy-ваш-пользователь-iam
- Ведро для резервных копий: вашдомен-поддомен-backups
- Ведро для загрузок: вашдомен-поддомен-uploads
- CDN-распределения: cdn-вашдомен-поддомен и s3-вашдомен-поддомен-uploads
Опционально: Ведро процесса конфигурации: a-origin-config-bucket
Конфигурация AWS
Используйте настройки по умолчанию на страницах конфигурации AWS, если не указано иное.
Имена S3, имена, имена
- Домен экземпляра Discourse: поддомен.вашдомен.тлд (поддомен.вашдомен.тлд, включая www.вашдомен.тлд)
- Пользователь IAM: вашдомен-поддомен (вашдомен-discourse, вашдомен-forum или Discourse в корне/апексе: вашдомен-тлд-www)
- Политика для пользователя IAM: s3-discourse-policy-вашдомен-поддомен
- Ведро для загрузок: вашдомен-поддомен-uploads Примечание: Не забудьте установить «Все (публичный доступ)» на «Чтение» в Ведро > Разрешения: Список контроля доступа (ACL) - Список контроля доступа (ACL) - Получатель.
- Ведро для резервных копий: вашдомен-поддомен-backups
- CDN-распределения: cdn-вашдомен-поддомен и s3-вашдомен-поддомен-uploads
- Ведро процесса конфигурации: a-origin-config-bucket
Пользователи IAM
- Перейдите в IAM > Пользователи > Выберите «Создать пользователя»
- IAM > Пользователи > Создать пользователя > Указать детали пользователя > Детали пользователя > Имя пользователя > Введите имя, например ваш-пользователь-iam > Выберите «Далее»
- IAM > Пользователи > Создать пользователя > Установить разрешения > Варианты разрешений > Выберите «Прикрепить политики напрямую» > Выберите «Создать политику» > Откроется страница «Создать политику» (Альтернативно, политику можно создать сначала в Политики, а затем выбрать при создании пользователя в «Политики разрешений».)
- IAM > Пользователи > Создать пользователя > Установить разрешения > Политики разрешений > Отфильтровать по выпадающему списку «Тип» > Выберите «Управляемая клиентом» > Выберите недавно созданную политику > Выберите «Далее» > Выберите «Создать пользователя»
- IAM > Пользователи > ваш-пользователь-iam > Учетные данные безопасности > Ключи доступа > Выберите «Создать ключ доступа»
- IAM > Пользователи > ваш-пользователь-iam > Создать ключ доступа > Лучшие практики и альтернативы ключей доступа > Выберите «Другое» > Выберите «Далее»
- IAM > Пользователи > ваш-пользователь-iam > Создать ключ доступа > Установить тег описания > Выберите «Создать ключ доступа»
- IAM > Пользователи > ваш-пользователь-iam > Создать ключ доступа > Получить ключи доступа > Безопасно сохраните ключ доступа и секретный ключ доступа для использования в app.yml приложения Discourse > Выберите «Готово»
Политики
- Измените s3-discourse-policy-ваш-пользователь-iam.txt, добавив имя вашего пользователя IAM и имена ведер.
- Перейдите в IAM > Политики > Создать политику
- IAM > Политики > Создать политику > Указать разрешения > Редактор политик > Выберите «JSON» в редакторе политик > Скопируйте политику из s3-discourse-policy-ваш-пользователь-iam.txt и вставьте в JSON-редактор, заменив существующий JSON > Выберите «Далее»
- IAM > Политики > Создать политику > Проверить и создать > Детали политики > Имя политики > Введите имя политики, например s3-discourse-policy-ваш-пользователь-iam > Выберите «Далее»
- Перейдите к Пользователи IAM: 4. IAM > Пользователи > Создать пользователя, чтобы продолжить процесс создания пользователя
Ведро Amazon S3
Создайте и настройте ведро для резервных копий, ведро для загрузок и опциональное, но полезное ведро процесса конфигурации.
Создать ведро для резервных копий вашдомен-поддомен-backups
- Перейдите в Amazon S3 Ведро > Выберите «Создать ведро»
- Amazon S3 > Ведро > Создать ведро > Общая конфигурация > Подтвердите выбор «Общего назначения»
- Amazon S3 > Ведро > Создать ведро > Общая конфигурация > Имя ведра > Введите имя ведра для резервных копий, например вашдомен-поддомен-backups
- Amazon S3 > Ведро > Создать ведро > Общая конфигурация > Подтвердите выбор «ACL отключены (рекомендуется)»
- Amazon S3 > Ведро > Создать ведро > Настройки блокировки публичного доступа для этого ведра > Снимите галочку с «Блокировать весь публичный доступ», затем выберите «Блокировать публичный доступ к ведрам и объектам, предоставленным через новые политики публичного ведра или точки доступа» и «Блокировать публичный и межучетный доступ к ведрам и объектам через любые политики публичного ведра или точки доступа»
- Amazon S3 > Ведро > Создать ведро > Настройки блокировки публичного доступа для этого ведра > Отключение блокировки всего публичного доступа может привести к тому, что это ведро и объекты внутри него станут публичными > Выберите «Я подтверждаю, что текущие настройки могут привести к тому, что это ведро и объекты внутри него станут публичными.»
- Amazon S3 > Ведро > Создать ведро > Версионирование ведра > Версионирование ведра > Выберите «Включить» Инфо: Версионирование ведра требуется для «Правил жизненного цикла»
- Amazon S3 > Ведро > Создать ведро > Выберите «Создать ведро»
Конфигурация правил жизненного цикла
Правило хранения резервных копий
- Amazon S3 > Ведро > Выберите недавно созданное ведро, например вашдомен-поддомен-backups
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Выберите «Создать правило жизненного цикла»
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Имя правила жизненного цикла > Введите имя правила, например backup retention
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Выбрать область действия правила > Выберите «Применить ко всем объектам в ведре»
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Выбрать область действия правила > Применить ко всем объектам в ведре > Выберите «Я подтверждаю, что это правило будет применяться ко всем объектам в ведре.»
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Действия правила жизненного цикла > Выберите «Переход неактуальных версий объектов между классами хранения», «Истечение срока действия текущих версий объектов» и «Полное удаление неактуальных версий объектов»
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Действия правила жизненного цикла > Переходы оплачиваются за запрос > Выберите «Я подтверждаю, что это правило жизненного цикла повлечет за собой стоимость перехода за запрос.»
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Переход неактуальных версий объектов между классами хранения > Выбрать переходы классов хранения > Выберите «Glacier Instant Retrieval»
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Переход неактуальных версий объектов между классами хранения > Дней после того, как объекты станут неактуальными > Введите «1»
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Истечение срока действия текущих версий объектов > Дней после создания объекта > Введите «7» или 15 или 30 или ???
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Полное удаление неактуальных версий объектов > Дней после того, как объекты станут неактуальными > Введите «91»
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Подтвердите, что «Проверка действий перехода и истечения срока действия» верна > Выберите «Создать правило»
Правило очистки
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Выберите «Создать правило жизненного цикла»
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Имя правила жизненного цикла > Введите имя правила cleanup
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Выбрать область действия правила > Выберите «Применить ко всем объектам в ведре»
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Выбрать область действия правила > Применить ко всем объектам в ведре > Выберите «Я подтверждаю, что это правило будет применяться ко всем объектам в ведре.»
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Действия правила жизненного цикла > Выберите «Полное удаление неактуальных версий объектов» и «Удалить истекшие маркеры удаления объектов или незавершенные многокомпонентные загрузки»
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Полное удаление неактуальных версий объектов > Дней после того, как объекты станут неактуальными > Введите «92»
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Полное удаление неактуальных версий объектов > Удалить истекшие маркеры удаления объектов или незавершенные многокомпонентные загрузки > Истекшие маркеры удаления объектов > Выберите «Удалить истекшие маркеры удаления объектов»
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Полное удаление неактуальных версий объектов > Удалить истекшие маркеры удаления объектов или незавершенные многокомпонентные загрузки > Незавершенные многокомпонентные загрузки > Выберите «Удалить незавершенные многокомпонентные загрузки»
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Полное удаление неактуальных версий объектов > Удалить истекшие маркеры удаления объектов или незавершенные многокомпонентные загрузки > Незавершенные многокомпонентные загрузки > Удалить незавершенные многокомпонентные загрузки > Количество дней > Введите «3» или ???
- Amazon S3 > Ведро > вашдомен-поддомен-backups > Управление > Конфигурация жизненного цикла > Подтвердите, что «Проверка действий перехода и истечения срока действия» верна > Выберите «Создать правило»
Создать ведро для загрузок вашдомен-поддомен-uploads
- Перейдите в Amazon S3 > Ведро > Выберите «Создать ведро»
- Amazon S3 > Ведро > Создать ведро > Общая конфигурация > Подтвердите выбор «Общего назначения»
- Amazon S3 > Ведро > Создать ведро > Общая конфигурация > Имя ведра > Введите имя ведра для загрузок, например вашдомен-поддомен-uploads
- Amazon S3 > Ведро > Создать ведро > Общая конфигурация Выберите «ACL включены»
- Amazon S3 > Ведро > Создать ведро > Настройки блокировки публичного доступа для этого ведра > Снимите галочку с «Блокировать весь публичный доступ», затем выберите «Блокировать публичный доступ к ведрам и объектам, предоставленным через новые политики публичного ведра или точки доступа» и «Блокировать публичный и межучетный доступ к ведрам и объектам через любые политики публичного ведра или точки доступа»
- Amazon S3 > Ведро > Создать ведро > Настройки блокировки публичного доступа для этого ведра > Отключение блокировки всего публичного доступа может привести к тому, что это ведро и объекты внутри него станут публичными > Выберите «Я подтверждаю, что текущие настройки могут привести к тому, что это ведро и объекты внутри него станут публичными.»
- Amazon S3 > Ведро > Создать ведро > Выберите «Создать ведро»
- Amazon S3 > Ведро > Экран ведер > Выберите недавно созданное ведро, например вашдомен-поддомен-uploads
Вернитесь к выполнению шага 9 после создания Распределения #2 - Amazon S3 > Ведро > вашдомен-поддомен-uploads > Разрешения > Политика ведра > Выберите Изменить > Вставьте JSON из Создать распределение #2 11. CloudFront > Распределения > ID распределения > Изменить источник > Контроль доступа к источнику > Выберите «Сохранить изменения»
- Amazon S3 > Ведро > вашдомен-поддомен-uploads > Разрешения > Список контроля доступа (ACL) > Выберите Изменить > Все (публичный доступ) > Выберите «Чтение» > Когда вы предоставляете доступ группе получателей «Все» или «Прошедшие аутентификацию пользователи», любой человек в мире может получить доступ к объектам в этом ведре. Выберите «Я понимаю последствия этих изменений для моих объектов и ведер.» > Выберите «Сохранить изменения»
Создать ведро процесса конфигурации a-origin-config-bucket
Создайте ведро, которое будет использоваться в процессе конфигурации Распределения #1. Имя и конфигурация не важны, так как ведро используется временно в качестве начального источника, который будет удален в процессе конфигурации.
1. Перейдите в Amazon S3 > Ведро > Выберите «Создать ведро»
2. Amazon S3 > Ведро > Создать ведро > Общая конфигурация > Подтвердите выбор «Общего назначения»
3. Amazon S3 > Ведро > Создать ведро > Общая конфигурация > Имя ведра > Введите имя ведра для загрузок, например a-origin-config-bucket
4. Переключитесь по страницам конфигурации и нажмите «Создать ведро»
Распределения CloudFront
Создайте два распределения AWS S3 CloudFront. Одно для обслуживания ресурсов веб-сайта, а второе — для обслуживания ресурсов ведра загрузок.
Создать распределение #1
Распределение #1
DISCOURSE_CDN_URL
Имя распределения: cdn-вашдомен-поддомен
Источник: поддомен.вашдомен.тлд
Доменное имя распределения (URL Cloudfront): AWS-assigned.cloudfront.net
Альтернативные доменные имена: discourse-cdn.вашдомен.тлд
- Перейдите в CloudFront > Распределения > Выберите «Создать»
- CloudFront > Распределения > Создать распределение > Выбрать план > Выберите «Платить по факту использования» > Выберите «Далее»
- CloudFront > Распределения > Создать распределение > Начать работу > Варианты распределения > Имя распределения > Введите имя распределения, например cdn-вашдомен-поддомен
- CloudFront > Распределения > Создать распределение > Начать работу > Варианты распределения > Описание - необязательно > Введите «cdn-вашдомен-поддомен» (Необязательно, но помогает с видимостью)
- CloudFront > Распределения > Создать распределение > Начать работу > Варианты распределения > Тип распределения > Подтвердите выбор «Один веб-сайт или приложение» > Выберите «Далее»
- CloudFront > Распределения > Создать распределение > Указать источник > Тип источника > Выберите «Другое» Обратитесь к любому источнику AWS или не AWS через его общедоступно разрешимый URL.
- CloudFront > Распределения > Создать распределение > Указать источник > Источник > Пользовательский источник > Введите домен, например поддомен.вашдомен.тлд
- CloudFront > Распределения > Создать распределение > Указать источник > Настройки > Настройки кэширования > Выберите «Настроить настройки кэширования»
- CloudFront > Распределения > Создать распределение > Указать источник > Настройки > Настройки кэширования > Политика кэширования > Из выпадающего списка выберите «CachingOptimized» > Выберите «Далее»
- CloudFront > Распределения > Создать распределение > Включить безопасность > сделайте свой выбор - для этого руководства > Выберите «Не включать меры безопасности» > Выберите «Далее»
- CloudFront > Распределения > Создать распределение > Проверить и создать > Выберите «Создать распределение»
Если используется брендированный URL CDN → Шаг 12 - CloudFront > Распределения > ID распределения > Альтернативные доменные имена > Выберите «Добавить домен»
- CloudFront > Распределения > ID распределения > Альтернативные доменные имена > Добавить домен > Настроить домены > Домены > Домены для обслуживания > Введите DISCOURSE_CDN_URL, например discourse-cdn.вашдомен.тлд > Выберите «Далее»
Неполно: Альтернативные доменные имена: discourse-cdn.вашдомен.тлд
Создать распределение #2
Распределение #2
DISCOURSE_S3_CDN_URL
Имя распределения: s3-вашдомен-поддомен-uploads
Источник: вашдомен-поддомен-uploads
Доменное имя распределения (URL Cloudfront): AWS-assigned.cloudfront.net
Альтернативные доменные имена: s3-cdn.вашдомен.тлд
- CloudFront > Распределения > Создать распределение
- CloudFront > Распределения > Создать распределение > Выбрать план > Выберите «Платить по факту использования» > Выберите «Далее»
- CloudFront > Распределения > Создать распределение > Начать работу > Варианты распределения > Имя распределения > Введите имя распределения, например s3-вашдомен-поддомен-uploads
- CloudFront > Распределения > Создать распределение > Начать работу > Варианты распределения > Описание - необязательно > Введите «s3-вашдомен-поддомен-uploads» (Необязательно, но помогает с видимостью)
- CloudFront > Распределения > Создать распределение > Начать работу > Варианты распределения > Тип распределения > Подтвердите выбор «Один веб-сайт или приложение» > Выберите «Далее»
- CloudFront > Распределения > Создать распределение > Указать источник > Тип источника > Подтвердите выбор «Amazon S3»
- CloudFront > Распределения > Создать распределение > Указать источник > Источник > Источник S3 > Выберите «Обзор S3» > Выберите ведро загрузок «вашдомен-поддомен-uploads» > Выберите «Выбрать» > Выберите «Далее»
- CloudFront > Распределения > Создать распределение > Включить безопасность > сделайте свой выбор - для этого руководства > Выберите «Не включать меры безопасности» > Выберите «Далее»
- CloudFront > Распределения > Создать распределение > Проверить и создать > Подтвердите, что «Проверка и создание: верна» > Выберите «Создать распределение» → Страница информации о недавно созданном распределении должна открыться в CloudFront > Распределения > ID распределения
- CloudFront > Распределения > ID распределения > Источники > Выберите источник > Выберите «Изменить»
- CloudFront > Распределения > ID распределения > Изменить источник > Контроль доступа к источнику > ! Вы должны разрешить доступ CloudFront с помощью этой политики… > Выберите «Копировать политику» > Перейдите к Создать ведро для загрузок 9. Amazon S3 > Ведро > вашдомен-поддомен-uploads > Разрешения > Политика ведра
Неполно: Альтернативные доменные имена: s3-cdn.вашдомен.тлд
Администратор Discourse
Актуально на версию Discourse: 2025.12.0-latest
Внесите эти изменения в Административный интерфейс Discourse
Настройки резервных копий /admin/backups/settings
- Максимальное количество резервных копий > Введите количество резервных копий, которые нужно хранить локально
- Резервное копирование с загрузками > Выберите «Включать загрузки в запланированные резервные копии. Отключение этого параметра приведет к резервному копированию только базы данных.»
Настройки S3 /admin/site_settings/category/all_results?filter=S3
- S3 использовать URL CDN для всех загрузок > Выберите «Использовать URL CDN для всех файлов, загруженных в S3, а не только для изображений.» (В Discourse по умолчанию не выбрано)
Редактирование конфигурации (app.yml) Небрендированные URL
Отредактируйте app.yml, внеся изменения ниже для брендированных URL или небрендированных URL Cloudfront.
Небрендированные URL Discourse
Используйте это для небрендированных распределений Cloudfront. Ваш DISCOURSE_S3_REGION может отличаться.
DISCOURSE_CDN_URL: https://amazonassigned.cloudfront.net
Конфигурация хранения S3 (небрендированная)
## Конфигурация хранения S3
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: us-east-1
DISCOURSE_S3_ACCESS_KEY_ID: ключ скрыт
DISCOURSE_S3_SECRET_ACCESS_KEY: ключ скрыт
DISCOURSE_S3_CDN_URL: https://amazonassigned.cloudfront.net
DISCOURSE_S3_BUCKET: имя-вашего-ведра-uploads
DISCOURSE_S3_BACKUP_BUCKET: имя-вашего-ведра-backups
DISCOURSE_BACKUP_LOCATION: s3
Брендированные URL Discourse
Конфигурация DNS
Если вы предпочитаете использовать URL на основе вашегодомен.ком для CDN, вам необходимо внести некоторые изменения в DNS и настроить ваши URL CDN.
Совет: Не забудьте добавить discourse-cdn.вашдомен.ком и s3-cdn.вашдомен.ком в качестве доменного имени в «Альтернативные доменные имена» для соответствующих распределений Cloudfront.
Конфигурация DNS, если вы хотите использовать брендированные распределения Cloudfront.
DISCOURSE_CDN_URL
Существующая запись: A discourseinstance.вашдомен.ком ip-адрес экземпляра Примечание: Это текущий IP-адрес установленной версии Discourse.
Новая запись: A discourse-cdn-cloudfront.вашдомен.ком ip-адрес экземпляра
Новая запись: CNAME discourse-cdn.вашдомен.ком -> amazonassigned.cloudfront.net
DISCOURSE_S3_CDN_URL
Новая запись: CNAME s3-cdn-cloudfront.вашдомен.ком -> amazonassigned.cloudfront.net
Новая запись: CNAME s3-cdn.вашдомен.ком -> s3-cdn-cloudfront.вашдомен.ком
Редактирование конфигурации (app.yml) Брендированные URL
После завершения изменений DNS вы можете отредактировать ваш app.yml, внеся изменения ниже.
Измените DISCOURSE_CDN_URL и/или DISCOURSE_S3_CDN_URL, если вы используете доменные CNAME для распределения Cloudfront (amazonassigned.cloudfront.net).
DISCOURSE_CDN_URL: https://discourse-cdn.вашдомен.ком
Конфигурация хранения S3 (брендированная)
## Конфигурация хранения S3
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: us-east-1
DISCOURSE_S3_ACCESS_KEY_ID: ключ скрыт
DISCOURSE_S3_SECRET_ACCESS_KEY: ключ скрыт
DISCOURSE_S3_CDN_URL: https://s3-cdn.вашдомен.ком
DISCOURSE_S3_BUCKET: имя-вашего-ведра-uploads
DISCOURSE_S3_BACKUP_BUCKET: имя-вашего-ведра-backups
DISCOURSE_BACKUP_LOCATION: s3
Дополнительные правки конфигурации (app.yml)
Независимо от того, какой подход вы используете, брендированные или URL Cloudfront, вам понадобится раздел after_assets_precompile ниже, чтобы убедиться, что все остается актуальным при последующих пересборках.
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
-у вас может быть больше плагинов
after_assets_precompile:
- exec:
cd: $home
cmd:
- sudo -E -u discourse bundle exec rake s3:upload_assets
- sudo -E -u discourse bundle exec rake s3:expire_missing_assets
Пересоберите ваш экземпляр с помощью ./launcher rebuild app
После успешного завершения ./launcher rebuild app выполните следующие rake-задачи.
./launcher enter app
rake posts:rebake
rake uploads:migrate_to_s3
rake posts:rebake_uncooked_posts
rake s3:upload_assets
rake s3:expire_missing_assets
Если rake-задачи выполняются без ошибок, значит, все готово.
На некоторых сайтах начальная пересборка завершится ошибкой, связанной с s3:upload_assets. Если это произойдет,
проверьте настройку «чтение» в ведре загрузок. Если она установлена правильно, то,
закомментируйте или удалите раздел after_assets_precompile:
after_assets_precompile:
- exec:
cd: $home
cmd:
- sudo -E -u discourse bundle exec rake s3:upload_assets
- sudo -E -u discourse bundle exec rake s3:expire_missing_assets
и снова выполните ./launcher rebuild app. Затем выполните «rake s3:upload_assets» и «rake s3:expire_missing_assets».
Если обе rake-задачи выполняются без ошибок, снова добавьте или раскомментируйте раздел after_assets_precompile, снова выполните пересборку и выполните все rake-задачи, перечисленные выше.
Если любая из rake-задач выдаст ошибку или пересборка снова завершится неудачей, значит, в вашем app.yml и/или конфигурациях AWS S3 и/или записях DNS что-то не так. Удачи в поиске! ![]()
s3-discourse-policy-ваш-пользователь-iam.txt|вложение (697 Байт)