This repository contains CloudFormation templates, Terraform modules, and a Command Line tool (cid-cmd) for managing various dashboards provided in AWS Well Architected LAB Cloud Intelligence Dashboards.
There are several ways we can manage dashboards:
- CloudFormation Template (using cid-cmd tool in lambda)
- Terraform module (wrapper around CloudFormation Template)
- Using cid-cmd tool from command line
We recommend cid-cmd tool via AWS CloudShell.
Dashboard documentation | Demo URL | Prerequisites URL |
---|---|---|
CUDOS Dashboard | demo | link (Steps 1 and 2) |
Cost Intelligence Dashboard | demo | link (Steps 1 and 2) |
Trusted Advisor Organisation (TAO) Dashboard | demo | link |
Trends Dashboard | demo | link (Steps 1 and 2) |
KPI Dashboard | demo | link (Steps 1 and 2) |
Compute Optimizer Dashboard | demo | link |
Cost Anomaly Dashboard | demo | link |
Data Transfer Cost Dashboard | demo | link (Steps 1 and 2) |
AWS Budgets Dashboard | demo | link |
See more dashboards on the workshop page.
- ❗ Complete the prerequisites for respective dashboard (see above).
- ❗ Specifying a Query Result Location Using a Workgroup
- ❗ Make sure QuickSight Enterprise edition is activated.
-
Launch AWS CloudShell or your local shell
Automation requires Python 3
-
Make sure you have the latest pip package installed
python3 -m ensurepip --upgrade
-
Install CID Python automation PyPI package
pip3 install --upgrade cid-cmd
cid-cmd deploy
Update only Dashboard
cid-cmd update
Update dashboard and all dependencies (Datasets and Athena View). WARNING: this will override any customization of SQL files and Datasets.
cid-cmd update --force --recursive
Show dashboards status
cid-cmd status
cid-cmd share
One time action to initialize Amazon QuickSight Enterprise Edition.
cid-cmd init-qs
One time action to initialize Athena table and Crawler from s3 with CUR data. Currently only CUR1 supported.
cid-cmd init-cur
There are 2 CUR formats that cid-cmd
supports. CUR1 and CUR2 have slightly different fields structure. Each dashboard can be developed using CUR2 or CUR1, but on installation cid-cmd
will deploy a special Athena View "CUR proxy". This View will play a role of compatibility layer between the CUR version used by Dashboard and available CUR. This View can be extended as new dashboard request CUR fields.
Please note that Cost Allocation Tags and Cost Categories are not present in CUR Proxy by default. You will need to add these fields by modifying CUR Proxy in Athena or using cid-cmd
tool:
For CUR2 proxy (using CUR1 data as source)
cid-cmd create-cur-proxy -vv \
--cur-version '2' \
--cur-table-name 'mycur1' \
--athena-workgroup 'primary' \
--fields "resource_tags['user_cost_center'],resource_tags['user_owner']"
For CUR1 proxy (using CUR2 data as source)
cid-cmd create-cur-proxy -vv \
--cur-version '1' \
--cur-table-name 'mycur2' \
--athena-workgroup 'primary' \
--fields "resource_tags_user_cost_center,resource_tags_user_owner"
Delete Dashboards and all dependencies unused by other CID-managed dashboards.(including QuickSight datasets, Athena views and tables)
cid-cmd delete
--dashboard-id TEXT QuickSight dashboard id
--athena-database TEXT Athena database
The command export
lets you download or share a customized dashboard with another AWS Account. It takes the QuickSight Analysis as an input and generates all the assets needed to deploy your Analysis into another AWS Account. This command will generate a yaml file with a description of the Dashboard and all required Datasets. Also this command generates a QuickSight Template in the current AWS Account that can be used for Dashboard deployment in other accounts. The resource file can be used with all other cid commands. Both accounts must have relevant Athena Views and Tables.
Export from account A:
cid-cmd export
Deployment to account B:
cid-cmd deploy --resources ./mydashboard.yaml
cid-cmd --help
Generate and SQL file for Athena View for CSV file
cid-cmd csv2view --input my_mapping.csv --name my_mapping
This command generates a SQL file that you can execute. Please mind Athena Service Limit for Query Size.
CID is also provided in a form of CloudFormation templates. See detailed instructions in the Well Architected Labs site.
CID offers a set of Terraform modules to deploy CUR replication and CID dashboards. Refer to these deployment instructions for details of how to deploy CID dashboards with these modules.
- Create a bucket for consolidating CUR terraform-modules/cur-setup-destination/
- Create a CUR in Payer Account(s) terraform-modules/cur-setup-source/
- Create Dashboards (wrapper around CloudFormation) terraform-modules/cid-dashboards/
The ownership of CID is usually with the FinOps team, who do not have administrative access. However, they require specific privileges to install and operate CID dashboards. To assist the Admin team in granting the necessary privileges to the CID owners, a CFN template is provided. This template, located at CFN template, takes an IAM role name as a parameter and adds the required policies to the role.
If you experience unexpected behaviour of the cid-cmd
script please run cid-cmd
in debug mode:
cid-cmd -vv [command]
This will produce a log file in the same directory that were at the tile of launch of cid-cmd.
❗Inspect the produced debug log for any sensitive information and anonymize it.
We encourage you to open new issue with description of the problem and attached debug log file.