S3 CDN URL ignored when uploading into posts

All of our traffic goes through CloudFront, and static content is fetched by CloudFront from one of several S3 buckets.

With uploads being sent to S3, Discourse embeds the content with a generic bucket URL despite our having s3 cdn url set. Once submitted, posts appear to use the correct URL set in s3 cdn url, although this may also be because we have DISCOURSE_CDN_URL set as well (both are set to the same URL).

The post preview window references the standard S3 URL seen in the unbaked post, though. This is a problem because we use a private ACL on files uploaded to our Discourse uploads bucket, as content on this bucket should never be accessed outside of CloudFront. The result is a broken image in the preview window.

2 curtidas

É decepcionante que isso tenha sido relatado há tantos anos sem nenhuma correção.

@DanielMarquard Você conseguiu encontrar uma solução alternativa ou foi forçado a deixar sua ACL do S3 pública?

Não tenho certeza de que seja justo dizer que isso está quebrado, já que a implementação mais complexa não é totalmente suportada.

Os uploads para o S3, conforme documentado, funcionam e se comportam corretamente.

@Stephen, certamente está sujeito a interpretação…

Para mim, parece “quebrado” que ele use a URL do CDN em uma instância e não na outra, além de forçar uma configuração do S3 que a AWS realmente recomenda evitar (ACL pública para um bucket S3).

Sou novo no projeto Discourse em geral, mas certamente posso trabalhar em um PR.

Pode valer a pena corrigir isso agora: a AWS está ficando mais séria ao informar as pessoas sobre ACLs de leitura pública.

4 curtidas

Dado que nossa implementação atual não possui mais uma tag IMG, por exemplo:

![image|690x298,50%](upload://eGAOR4Xy4aRM2lwPIuTokBf60jS.png)

Deveria ser bastante fácil aplicar uma CDN ao código acima, o que economiza tráfego.

@vinothkannans, você pode corrigir isso para que a pré-visualização use a URL da CDN?

Em vez de a pré-visualização mostrar:

<img src="//assets-meta-cdck-prod-meta.s3.dualstack.us-west-1.amazonaws.com/original/3X/6/6/66ef078b3ef9da9aa1b3356cb21fe22a0d25eaf0.png" alt="image" class="resizable" width="345" height="149">

Devemos mostrar a URL da CDN, que é esta:

<img src="https://d11a6trkgmumsb.cloudfront.net/original/3X/6/6/66ef078b3ef9da9aa1b3356cb21fe22a0d25eaf0.png" alt="image" class="resizable" width="345" height="149">
6 curtidas

Agora está corrigido conforme o commit abaixo

6 curtidas

Este tópico foi automaticamente fechado após 32 horas. Novas respostas não são mais permitidas.

Continuando a discussão de URL do CDN S3 ignorada ao fazer upload em posts:

Parece que esse problema regressou; consegui reproduzi-lo aqui no meta.

3 curtidas

Podemos verificar isso, @vinothkannans ou @falco?

3 curtidas

De acordo com a alteração recente, agora estamos obtendo a URL do arquivo enviado diretamente da solicitação de upload inicial. Anteriormente, recebíamos essa informação do endpoint /uploads/lookup-urls.json. Este commit deve corrigir o problema.

5 curtidas

Parece que essa correção não cobre emojis personalizados na prévia, por exemplo :allthethings:.

4 curtidas

Isso também não inclui anexos, como exportações de dados ou qualquer outro arquivo anexado. Esses ainda vêm do S3.

Eu posso consertar isso!

3 curtidas