Erro ao carregar imagem: O bucket não permite ACLs

Usuários e até mesmo administradores não conseguem mais fazer upload de imagens.
O log de erros diz erro de hotlink.
Limite de 4 MB, mas tentei fazer upload de um arquivo de 800 KB como teste depois que um usuário reclamou.

Fizemos uma atualização recente há alguns dias (2.9.0.beta4).
Recentemente configuramos buckets S3.

Notei uma correção recente no GitHub de 15 dias atrás para hotlink.
Não consigo criar problemas no GitHub. Este é o lugar para relatar bugs?

Mensagem (2 cópias relatadas)

padrão: Falha ao buscar imagem hotlinked (https://jackrail.space/images/discourse-logo-sketch-small.png) post: 586
O bucket não permite ACLs
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/seahorse/client/plugins/raise_response_errors.rb:17:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.96.1/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.96.1/lib/aws-sdk-s3/plugins/dualstack.rb:36:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.96.1/lib/aws-sdk-s3/plugins/accelerate.rb:50:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:22:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/aws-sdk-core/plugins/idempotency_token.rb:19:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/aws-sdk-core/plugins/param_converter.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/seahorse/client/plugins/request_callback.rb:71:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/aws-sdk-core/plugins/response_paging.rb:12:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/seahorse/client/plugins/response_target.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-core-3.121.2/lib/seahorse/client/request.rb:72:in `send_request'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.96.1/lib/aws-sdk-s3/client.rb:11274:in `put_object'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/aws-sdk-s3-1.96.1/lib/aws-sdk-s3/object.rb:1329:in `put'
/var/www/discourse/lib/s3_helper.rb:74:in `upload'
/var/www/discourse/lib/file_store/s3_store.rb:116:in `store_file'
/var/www/discourse/lib/file_store/s3_store.rb:30:in `store_upload'
/var/www/discourse/lib/upload_creator.rb:212:in `block (2 levels) in cr...

Backtrace

/var/www/discourse/app/jobs/regular/pull_hotlinked_images.rb:243:in `public_send'
/var/www/discourse/app/jobs/regular/pull_hotlinked_images.rb:243:in `log'
/var/www/discourse/app/jobs/regular/pull_hotlinked_images.rb:58:in `rescue in block in execute'
/var/www/discourse/app/jobs/regular/pull_hotlinked_images.rb:35:in `block in execute'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.13.4-x86_64-linux/lib/nokogiri/xml/node_set.rb:234:in `block in each'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.13.4-x86_64-linux/lib/nokogiri/xml/node_set.rb:233:in `upto'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.13.4-x86_64-linux/lib/nokogiri/xml/node_set.rb:233:in `each'
/var/www/discourse/app/jobs/regular/pull_hotlinked_images.rb:34:in `execute'
/var/www/discourse/app/jobs/base.rb:232:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:80:in `with_connection'

Acho que consertei, mas não tenho certeza do que essa funcionalidade faz ou se ela desabilita meus backups do s3.
“habilitar uploads s3”
Eu habilitei isso pensando que fazia parte do procedimento de backup.
Eu desabilitei isso e não recebo mais esse erro quando faço upload de uma imagem de teste.

Essa configuração coloca seus uploads no bucket S3 e é separada dos uploads. Parece que esse bucket não está codificado corretamente para uploads (veja Usando Armazenamento de Objetos para Uploads (S3 e Clones) para informações).\n\nVocê ainda deve verificar se seus backups estão funcionando.

1 curtida

Acho que esse era o problema e está confirmado como corrigido pelo usuário que reclamou.

Não tenho certeza do que este upload de imagens faz, mas acho que é algum recurso extra que servidores complexos podem precisar. Acho que nossos 40 usuários não precisam de um discourse com esse recurso complexo. Estamos mais interessados em curtidas com emoji.

No entanto, quando segui as instruções do s3, tive que voltar e criar um novo bucket para “backups”, enquanto o original era para uploads (porque fiz na ordem em que apareceu para as configurações). Acho que provavelmente adicionarei mais algumas informações às instruções do s3 como uma resposta para ajudar a tornar isso mais fácil para outros seguirem. Além disso, a política de permissão listada nesse tópico de ajuda não existia, e acabei encontrando uma solução de “*” de outro site. Tentarei ajudar a esclarecer isso nesse tópico. Funcionou, mas exigiu trabalho e ajustes nas instruções.

Essas ações não funcionaram… Usei “*” em vez disso.

"Action": [
           "s3:ListAllMyBuckets",
           "s3:HeadBucket"
       ],

O tópico que usei para configurar e seguir as instruções está aqui

Ele também tem o upload de s3 habilitado marcado como selecionado. Parece que tornar as coisas muito complexas para o usuário médio.
Por outro lado, espero que meus backups estejam funcionando bem sem isso.

Por que você usou * em vez disso?

Encontrei em algum lugar enquanto pesquisava no Google, apenas para que ele aceitasse o código. Se você olhar a minha postagem que você cita, eu forneci o link. Eu apenas pesquiso no Google e copio e colo na maioria das vezes. :slight_smile:
No entanto, notei mais tarde que o upload de imagens não era necessário para que os backups funcionassem. Eu ainda não sei por que alguém usaria isso. Você realmente só precisa do backup. Você não precisa de dois buckets. Eu desmarquei essa parte nas configurações porque ainda tinha erros de upload e as imagens não eram permitidas pelos usuários. Desmarcar esse item corrigiu isso. Temos um pequeno grupo de servidores, então devemos ficar bem por um longo tempo.