title: CSV Export using Api Gateway and Lambda
body: <p><strong>What I would like to do:</strong></p>
  
  <p>What I would like to do is have a url which would return to the caller a CSV file which is essentially a export of data. I would like this to remain to be a serverless solution.</p>
  
  <p><strong>What I have done:</strong></p>
  
  <p>I have created an AWS API Gateway with the URL I want. I have created a lambda that will query the database and create a CSV string of that data. That data is placed in a JSON object and returned. API gateway then gets the CSV data from the json object and returns CSV to the caller with appropriate headers to indicate tht it is a CSV and attachment. Testing from the browser I get the download automatically just like I intended.</p>
  
  <p><strong>The problem I see:</strong></p>
  
  <p>This works well until there is a sizable amount of data at which point I start getting "body size is too long". </p>
  
  <p><strong>My attempts to resolve:</strong></p>
  
  <p>I did some googling around and I see others have had similar issues. In one solution I saw that they return a link to the file that they created. This solution seems viable for them because they had a server. For my serverless architecture it seems to be a little trickier. I could take and store the file into S3 but then i would have to return a link to S3. That seems like it could work but doesn't feel right like im missing a configuration option. It also feels like im exposing the implementation by returning the s3 urls as well.</p>
  
  <p>I have looked around for tutorials and example of people doing similar things and i haven't found any.</p>
  
  <p><strong>My Questions:</strong></p>
  
  <p>Is there a way to do this?
  Is there another solution that i dont know of?
  How do i return a file, in this case CSV, from API Gateway of a larger size</p>