EB

ElasticBeanstalk. You might get a new instance up and running- or terminated- at any moment, so you can't rely on the file system. That is why you have solutions like S3. I personally like the approach that Google took in its Google App Engine, where they provide a custom stream wrapper.

In node do not use fs.async, and try to abstract the filesystem. If you need to migrate an app to work on an autoscaling environment, you could monkeypatch file.readAsyn/file.writeAsync to use S3 or else on the background.

ELB

You might run behind load balancer. So you do not have guaranties that the same server is handling a user across the sessions livespan. Sticky sessions using a distributed memory caching system such as memcached, elasticcache, redis.

DNS router or proxying

Suddenly the X-Forwarded-* headers have a meaning. Those are important if you are handling HTTPS traffic. If you are in a load balanced setup some times SSL traffic is decrypted at the load balancer- SSL Termination. That means that when the request hits your application instance, it's being send over HTTP. If you don't have a way to know you could be sending a response that would be redirecting your users to the wrong port.