I was able to reduce the chance of the problem happening by reducing the start up time. I did this by disabling TLD scanning.
The problem still happens occasionally, which is obviously unacceptable. The best workaround I could find was to restart the Tomcat server straight after deployment had finished using ELB deployment hooks.
This solution is rather brittle as it relies on implementation details of the AWS Tomcat AMI stack. This really needs addressing in Lucee if it’s going to be a reliable platform for scalable cloud-based web servers.