querypal
querypal copied to clipboard
Web UI for Amazon Athena
Querypal
Querypal is a web-based, query execution tool which leverages Amazon Athena to make authoring queries and retrieving results simple for users. Querypal provides the ability to find tables, see metadata, browse sample rows, write and edit queries, then submit queries all in a web interface. Once queries are running, users can track query progress and when finished, get the results back through the browser as a table.
- Features
- Requirements
- Project setup
Features
- Fully serverless and can be hosted as an Amazon S3 static website.
- Authentication is managed by Amazon Cognito and can be customized.
- Table explorer to visualize schema of table and first 1000 rows.
- Syntax highlighting
- Global Query Timeline: The query timeline allows users to share queries with their colleagues. Shared queries are visible to all users and can help speed up analysis.
TODOs
- [x] Saved queries
- [x] Query history for self
- [ ] Result export to CSV
- [ ] Auto-suggestions
- [ ] Remove dependency on AWS SSM Parameter store for GitHub Access Token
Requirements:
- AWS Account
- NPM or Node
- VueJS
- AWS Amplify
- Yarn package manager
- See project setup below
- AWS SAM CLI
Deployment
To deploy the infrastructure and code, you'll need an AWS account and a correctly configured AWS profile with enough permissions to create the architecture below (Administrator rights are recommended).
bash ./deploy.sh -t <GitHubToken>
Shell Script Parameters
Parameter | Description | Mandatory |
---|---|---|
n | CloudFormation stack name | No |
p | AWS CLI Profile | No |
r | AWS CLI Region | No |
e | GitHub Branch to deploy QueryPal from | No |
t | GitHub Token in plain text. AWS Amplify needs this to access to repository | Yes |
a | AWS Amplify App name, i.e. querypal | No |
Before executing the shell command above, you MUST provide a GitHub Access token
that will be used to create a webhook and read-only deploy key by AWS Amplify. See screenshot with permissions required
below:
All arguments to the deploy.sh
script are optional. The default AWS profile and region are used if none are provided.
The script will:
- Create a CloudFormation stack named
querypal-web-ui
holding the following:- AWS Amplify App for Querypal
- IAM Service to be assumed by AWS Amplify for managing deployments
- SSM Parameter containing the AWS Amplify App ID which will be used later
- A Lambda function and an AWS CloudFormation custom resource that will the trigger the deployment job in AWS Amplify.
- Print out Querypal AWS Amplify Default Domain URL.
The initial deployment can take 10-15 minutes. The same command can be used for both creating and updating infrastructure.
Development
Project setup
yarn install
Compiles and hot-reloads for development
yarn run serve
Compiles and minifies for production
yarn run build
Run your tests
yarn run test
Lints and fixes files
yarn run lint