logrotate
, o que significa, como você apontou corretamente, que os logs mais recentes pode não estar no S3 quando a instância terminar.
Você pode criar um script de desligamento (por exemplo, aqui ) que fará o upload de todos os arquivos de log para o S3 quando a instância estiver sendo desligada normalmente . Pode não ser executado se a instância falhar ou falhar de alguma forma abrupta, mas esse é um evento bastante raro.
No entanto, Elastic Beanstalk suporta CloudWatch Log Streaming que alimenta os logs para os registros do CloudWatch em tempo real, assim que são gerados. Isso significa que, mesmo em caso de desligamento, você ainda terá os logs mais recentes do CloudWatch Logs até o ponto em que o agente awslogs
será encerrado.
Dê uma olhada aqui como para configurá-lo.
Também é mais fácil pesquisar registros do CloudWatch do que do S3, observar uma determinada palavra-chave (por exemplo, "Erro") e ação (por exemplo, enviar e-mail ou executar a função Lambda) etc.
Você provavelmente pode ter registros do S3 e do CloudWatch ativados em seu aplicativo Elastic Beanstalk ao mesmo tempo.
Espero que ajude:)