If your file is small (under 10MB due to API Gateway’s payload limit) and you need to perform logic before the download—like verifying a subscription—this is the most flexible route.
You must Base64-encode the file content in the Lambda response and set isBase64Encoded: true .
Your API triggers a Lambda function that fetches the file from storage (like S3).
For a more performant approach that skips Lambda execution costs, you can configure API Gateway to act as a direct proxy for Amazon S3.
Downloading a file from an API Gateway is a common requirement for modern applications, whether you're serving generated reports, user-uploaded images, or software packages. While API gateways are primarily designed for lightweight JSON data, they offer robust features for handling larger binary files.
Depending on your file size and security needs, there are three primary ways to implement this: 1. The Standard Lambda Proxy (Small Files < 10MB)
Use the Content-Disposition header set to attachment; filename="yourfile.ext" to force the browser to download the file rather than display it. 2. Direct S3 Proxy (Medium Files & Static Assets)
Create a resource in your API and set the integration type to AWS Service -> S3 .
You must go to your API's Settings and add the specific MIME type (e.g., application/pdf ) or use a wildcard */* under Binary Media Types . This tells the gateway not to corrupt the binary data by treating it as text. Pros: Lower latency and cost since no code is executed.
If your file is small (under 10MB due to API Gateway’s payload limit) and you need to perform logic before the download—like verifying a subscription—this is the most flexible route.
You must Base64-encode the file content in the Lambda response and set isBase64Encoded: true .
Your API triggers a Lambda function that fetches the file from storage (like S3). download file from api gateway
For a more performant approach that skips Lambda execution costs, you can configure API Gateway to act as a direct proxy for Amazon S3.
Downloading a file from an API Gateway is a common requirement for modern applications, whether you're serving generated reports, user-uploaded images, or software packages. While API gateways are primarily designed for lightweight JSON data, they offer robust features for handling larger binary files. If your file is small (under 10MB due
Depending on your file size and security needs, there are three primary ways to implement this: 1. The Standard Lambda Proxy (Small Files < 10MB)
Use the Content-Disposition header set to attachment; filename="yourfile.ext" to force the browser to download the file rather than display it. 2. Direct S3 Proxy (Medium Files & Static Assets) For a more performant approach that skips Lambda
Create a resource in your API and set the integration type to AWS Service -> S3 .
You must go to your API's Settings and add the specific MIME type (e.g., application/pdf ) or use a wildcard */* under Binary Media Types . This tells the gateway not to corrupt the binary data by treating it as text. Pros: Lower latency and cost since no code is executed.