Странное поведение с Digital Ocean Spaces/S3 и множество дублирующихся правил CORS для `example.com`

При последней инициализации я столкнулся с этой ошибкой. Я использую Digital Ocean в регионе SFO3.

"Tasks: TOP => s3:upload_assets => s3:ensure_cors_rules", "(See full trace by running
 task with --trace)", "I, [2021-12-16T21:19:05.748497 #1]  INFO -- : Installing CORS rules...", "Attempting to apply ASSETS S3 CORS ruleset in bucket pfaffmanager.", "At
tempting to apply BACKUP_DIRECT_UPLOAD S3 CORS ruleset in bucket pfaffmanager."]

Есть ли какое-то объяснение, которое можно решить?

Хм. Я посмотрел настройки и обнаружил множество, казалось бы, идентичных правил CORS. Я удалил одно из них, и оно удалило все остальные. Это тестовый сервер, на котором я запускал обновления уже бесчисленное количество раз (или, может быть, сотню, в любом случае?), так что, возможно, это в конечном итоге случится со всеми, кто использует Digital Ocean, но для большинства людей это заняло бы больше похоже на 10 лет, чем 8 месяцев.

После удаления правил CORS следующая инициализация прошла успешно, и в настройках для бакета Spaces теперь было 2 правила CORS. Но посмотрите — похоже, что правила установлены для example.com. :man_shrugging:

В другом бакете в регионе AMS3, который я, уверен, инициализировал очень много раз, также есть 3 правила, подобные вышеуказанному. Все они для example.com. Я проверил файл app.yml, чтобы убедиться, что я не делаю какой-то глупости (и если бы делал, то имело бы смысл, что я сделал бы это одинаково в нескольких местах), но в yml нет example.com.

При повторной сборке в логах я вижу следующее:

                                                                                                                                                                         
I, [2021-12-16T21:46:58.038151 #1]  INFO -- : > cd /var/www/discourse && sudo -E -u discourse bundle exec rake s3:upload_assets                                          
I, [2021-12-16T21:47:39.039145 #1]  INFO -- : Installing CORS rules...                                                                                                   
Attempting to apply ASSETS S3 CORS ruleset in bucket pfaffmanager.                                                                                                       
Attempting to apply BACKUP_DIRECT_UPLOAD S3 CORS ruleset in bucket pfaffmanager.                                                                                         
Assets rules status: rules_applied.                                                 
Backup rules status: rules_applied.                                                                                                                                      
Direct upload rules status: rules_skipped_from_settings.

Я просмотрел код в таких файлах, как s3_backup_store.rb, в поисках example.com, но не смог найти объяснения.

Похоже, мы должны рекомендовать DISCOURSE_S3_INSTALL_CORS_RULE: false для DO, как мы уже делаем для GCP и BackBlaze, в Использование объектного хранилища для загрузки (S3 и аналоги) :thinking:

Здравствуйте,

Извините, что воскрешаю эту тему, но у меня несколько дней назад была похожая проблема.

Моя конфигурация:

Digital Ocean Spaces с настройками s3:upload_assets и s3:expire_missing_assets.
CDN — Bunny.

Похоже, что при каждой пересборке или обновлении в админке, когда загружаются активы, создается новое правило CORS. По сути, оно дублирует исходное правило. К сожалению, я не скопировал сообщение об ошибке из консоли, но оно было связано с загрузкой активов: достигнут максимальный лимит в 100 правил CORS. Я зашел в Digital Ocean, проверил правила, и действительно, их было 100. :smiley: Тогда я поступил так же, как и @pfaffman: удалил одно правило, и все правила исчезли. После этого активы успешно загружались при пересборке.

При настройке я следовал этой инструкции: Configure an S3 compatible object storage provider for uploads, но в ней пока отсутствует эта строка:

Добавление этой строки остановит создание дублирующихся правил CORS? Спасибо :slightly_smiling_face:

Я обновил другую тему, так что надеюсь, что в будущем пользователи с этим не столкнутся! Спасибо, что обратили на это внимание.