Estou atualmente configurando a imagem oficial do Docker no AWS ECS.
Ao rodar no EC2, a imagem do docker funciona perfeitamente.
No entanto, após iniciá-la no ECS com a mesma configuração, acabo com imagens de avatar quebradas.
Erros relacionados:
Could not find file in the store located at url: //x-dev-xx-xxx-x.s3.dualstack.eu-central-1.amazonaws.com/original/1X/761c151e2d0ebedff3330dc6ec7a27050fef43f9.jpeg
e
Failed to process hijacked response correctly : FinalDestination::SSRFDetector::LookupFailedError : FinalDestination: lookup failed
O arquivo está no bucket e os direitos de acesso são os mesmos da instância EC2.
Alguém pode me indicar onde posso investigar mais a fundo e encontrar a causa raiz?
Sim. Eu uso as variáveis de ambiente que o comando run-cmd gera. Não consegui identificar nenhum erro até agora.
Infelizmente, não consegui encontrar exemplos de ECS para Discourse até agora.
Encontrei a causa raiz. Devido à minha configuração do plugin Discourse AI, adicionei uma Zona privada à VPC para disponibilizar os diversos serviços internamente na VPC.
Ao executar o Discourse em uma instância EC2 em um contêiner Docker, o contêiner recebe um nome de host como 12-34-56-78-app. Ao executar como uma tarefa ECS, no entanto, você não pode definir o nome do host quando está no modo awsvpc, nem pode configurar o domínio de pesquisa DNS. Isso leva ao fato de que a resolução DNS é diferente no ECS, no meu caso, adicionando um domínio de pesquisa como xxxx.internal.
Após investigar, descobri usando tcpdump que o Discourse tenta resolver seu próprio FQDN como parte das verificações SSRF. Se isso falhar, a verificação falha. Como um erro subsequente, a chamada para S3 falha com a mensagem de erro inválida acima.
A correção no meu caso foi adicionar o registro FQDN, que é um alias para minha distribuição Cloudfront, à minha zona DNS privada.
Olá @nodomain,
Experimentei exatamente o mesmo erro que no seu post abaixo. A solicitação para o avatar do usuário, por exemplo, https://example.com/user_avatar/example.com/myself/96/215_2.png responde com 500. No meu caso, o nome de domínio example.com não está configurado no DNS público; na fase de testes, eu falsifico o example.com no meu arquivo host localmente. Este problema não aparecerá quando o nome de domínio example.com for configurado no DNS público?