How to Create QuickSight Dashboard that allows you to download files from AWS S3?

HI All,
I need to create a Dashboard that allows a data reader to be able to choose from a list of files stored in S3 and once the dataset is selected the user should have the ability to download it.

Here is an example of what we are planning to create.


Thanks for taking the time to answer my question.

1 Like

Hi @ROBERT_J_ESTEVES,

This solution requires several services and steps, ensuring the security of files stored in S3, using unique session-based naming for single one-time downloads, and dynamically generating IDs stored in a database for QuickSight. Please consult your cloud architect, IT security, and compliance teams, as sharing files through URLs has significant security implications.

Disclaimer: These are suggestions; a rigorous architectural review is required before production.

1. Securing Files in S3

  • Ensure S3 bucket policies and access controls are in place to restrict unauthorized access.
  • Utilize IAM roles and policies for controlled access.

2. Generating Presigned URLs for One-Time Downloads

  • Generate presigned URLs for S3 files, allowing temporary, secure access.
  • Ensure URLs have expiration times for short-term validity.

More details: AWS Documentation on Presigned URLs

3. Storing Session-Based Information in a Database

  • Store unique session-based information, including user details, file info, and presigned URLs, in a database like DynamoDB.

4. Integrating with QuickSight

  • Create a QuickSight data source connected to your database (DynamoDB).
  • Use parameters and controls in QuickSight for users to select files.
  • Configure QuickSight actions to generate presigned URLs upon selection.

More details: AWS QuickSight Actions

5. Field Styling in QuickSight

  • Customize QuickSight dashboard appearance for a better user experience.
  • Use field styling options to format data and controls.

More details: AWS QuickSight Field Styling

Step-by-Step Implementation

  1. Set Up S3 Bucket and Policies:
  • Create an S3 bucket and configure policies to restrict access.
  1. Generate Presigned URLs:
  • Use AWS SDKs or CLI to create presigned URLs for S3 files.
  • Store presigned URLs in a DynamoDB table with session-based metadata.
  1. Create DynamoDB Table:
  • Design a table to store session-based metadata, including user details, file info, and presigned URLs.
  1. Configure QuickSight:
  • Connect QuickSight to your DynamoDB table.
  • Create datasets and analyses to display the list of files.
  • Add controls for users to select files.
  1. Implement QuickSight Actions:
  • Set up actions in QuickSight to generate presigned URLs when a user selects a file.
  • Display the presigned URL to the user or trigger the download directly.

Also, row-level, tag-level security with anonymous embedding using the QS SDK can further secure and make the solution extensible.

Did this solution work for you? I am marking this reply as, “Solution,” but let us know if this is not resolved. Thanks for posting your questions on the QuickSight Community!

1 Like

Thank Xclipse for your assistance and support. I’m glad we can do this in QuickSight.

1 Like