Comportamento estranho com Digital Ocean Spaces/S3 e muitas regras CORS duplicadas para `example.com`

Tive este erro em um bootstrap recente. Estou usando o Digital Ocean em 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.", "Attempting to apply BACKUP_DIRECT_UPLOAD S3 CORS ruleset in bucket pfaffmanager."]

Há algo que possa explicar isso e que tenha uma solução?

Hmm. Eu olhei as configurações e havia um monte de regras CORS aparentemente idênticas. Eu deletei uma delas e ela deletou todas elas. Este é um servidor de staging no qual eu fiz um zilhão (ou talvez uma centena, enfim?) de atualizações, então talvez isso eventualmente acontecesse com todo mundo que usa o Digital Ocean, mas para a maioria das pessoas levaria mais uns 10 anos do que 8 meses.

Depois de deletar as regras CORS, o próximo bootstrap foi bem-sucedido e havia então 2 regras CORS nas configurações para o bucket de espaços. Mas olhe — parece que as regras estão definidas para example.com. :man_shrugging:

Outro bucket em AMS3 que tenho certeza que já fiz bootstrap Bastantes Vezes tem 3 regras como a acima. Todas para example.com. Eu verifiquei o app.yml para ver se eu estava fazendo algo bobo (e se estivesse, faria sentido eu ter feito da mesma forma em vários lugares), mas não há example.com no yml.

Na reconstrução, vejo isso nos logs:


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.

Eu olhei no código em lugares como s3_backup_store.rb para example.com e não consigo encontrar uma explicação.

3 curtidas

Parece que devemos recomendar DISCOURSE_S3_INSTALL_CORS_RULE: false para DO, como já fazemos para GCP e BackBlaze em Usando Armazenamento de Objetos para Uploads (S3 e Clones) :thinking:

4 curtidas

Olá,

Desculpe por reavivar este tópico, mas acho que tive um problema semelhante há alguns dias.

Minha configuração:

Digital Ocean Spaces com s3:upload_assets e s3:expire_missing_assets.
CDN - Bunny

Parece que toda reconstrução ou atualização de administrador, quando carrega ativos, gera uma nova regra CORS. Na verdade, duplica a regra original. Infelizmente, não copiei a mensagem de erro do console, mas foi algo antes de carregar os ativos - atingiu o número máximo de 100 regras CORS, então fui ao Digital Ocean e verifiquei as regras e sim, eram 100. :smiley: Então fiz o mesmo que @pfaffman, removi uma e ele removeu todas as regras. Depois disso, os ativos foram carregados com sucesso na reconstrução.

Quando configurei isso, segui esta instrução aqui: Configure an S3 compatible object storage provider for uploads que ainda não contém esta linha.

Adicionar esta linha impedirá a geração de regras CORS duplicadas? Obrigado :slightly_smiling_face:

Atualizei o outro tópico, então espero que isso não aconteça com os usuários no futuro! Obrigado por apontar isso.

2 curtidas