The context here is simple, there's a lambda (lambda1) that creates a file asynchronously and then uploads it to S3.
Then, another lambda (lambda2) receives the soon-to-exist file name and needs to keep checking S3 until the file exists.
I don't think S3 triggers will work because lambda2 is invoked by a client request
1) Do I get charged for this kind of request between lambda and S3? I will be polling it until the object exists
2) What other way could I achieve this that doesn't incur charges?
3) What method do I use to check if a file exists in S3? (just try to get it and check status code?)
Let me make sure I understand correctly. 

Client calls Lambda1. Lambda1 creates a file async and uploads to S3
the call to lambda one returns as soon as lambda1 has started it's async processing. 
Client calls lambda2, to pull the file from s3 that lambda1 is going to push there. 

Why not just wait for Lambda one to create the file and return it to client? Otherwise this is going to be an expensive file exchange.
Long polling AWS S3 to check if item exists?