Usage
Once deployed, you should see the following in your AWS account. MDAA applies a consistent naming convention to every resource, so you can locate them in the console or by SSM parameter without searching.
Naming convention: <org>-<env>-<domain>-<module>-<resource>
SSM parameters: /<org>/<domain>/<module>/<resource-type>/<resource-name>/<attribute>
Deployed Resources
| Resource | Deployed Name / SSM Path | Config Reference |
|---|---|---|
| Raw S3 bucket | <org>-<env>-data-datalake-raw/<org>/data/datalake/bucket/raw/name |
buckets.raw in data/datalake.yaml |
| Transformed S3 bucket | <org>-<env>-data-datalake-transformed/<org>/data/datalake/bucket/transformed/name |
buckets.transformed in data/datalake.yaml |
| Athena workgroup | <org>-<env>-data-athena/<org>/data/athena/bucket/name (results bucket) |
deployed by data/athena.yaml |
| Redshift cluster | <org>-<env>-data-redshift/<org>/data/redshift/cluster/endpoint |
deployed by data/redshift.yaml |
data-admin IAM role |
<org>-<env>-governance-roles-data-admin/<org>/governance/generated-role/data-admin/id |
generateRoles.data-admin in governance/roles.yaml |
data-user IAM role |
<org>-<env>-governance-roles-data-user/<org>/governance/generated-role/data-user/id |
generateRoles.data-user in governance/roles.yaml |
glue-etl IAM role |
<org>-<env>-governance-roles-glue-etl/<org>/governance/generated-role/glue-etl/id |
generateRoles.glue-etl in governance/roles.yaml |
| Glue database | sample-databasedeployed within example-project |
databases.sample-database in dataops/project.yaml |
| Glue crawler | <org>-<env>-dataops-example-crawler-crawler1 |
crawlers.crawler1 in dataops/crawler.yaml |
| QuickSight Athena data source | created in QuickSight (identity region) | deployed by consumption/quicksight-athena.yaml |
| QuickSight Redshift data source | created in QuickSight (identity region) | deployed by consumption/quicksight-redshift.yaml |
Which role to use
data-admin— the only role with write access to the data lake. Assume it to upload data. All other roles (including existing account administrators) are denied write access.data-user— read access for querying via Athena. Assume it to run queries.glue-etl— service role assumed by Glue jobs and the crawler. You do not assume this directly.
Post-Deployment Steps
1. Add your QuickSight users to a group
The deploy creates the readers and authors QuickSight groups and grants them access to the data sources and folders, but does not add any members — so the data sources stay invisible until you join a group. Add each BI user (including yourself) to readers (read-only) or authors (read/write):
aws quicksight create-group-membership \
--aws-account-id <account-id> --namespace default \
--group-name authors --member-name "<your-quicksight-username>" \
--region <identity-region>
Resolve your QuickSight username with aws quicksight list-users --aws-account-id <account-id> --namespace default --region <identity-region>. The data sources then appear under Datasets → New dataset → FROM EXISTING DATA SOURCES.
2. Load sample data and run the pipeline
- Follow
DATASETS.mdto create asample_datafolder with sample CSVs. - Assume the
data-adminrole (it has AssumeRole trust to the local account by default, and is the only role with data lake write access). - Upload the
sample_datafolder to<transformed_bucket>/data/sample_data(resolve the bucket name from/<org>/data/datalake/bucket/transformed/name). - In the Glue console, run the crawler (
<org>-<env>-dataops-example-crawler-crawler1). On success, its CloudWatch logs show the tables that were created. (Thecreate_table.shpostdeploy hook also performs this on first deploy.)
3. Query the data
- Assume the
data-userrole (AssumeRole trust to the local account by default). - In the Athena Query Editor, select the MDAA-deployed workgroup from the dropdown.
- The tables created by the crawler are available for query under the MDAA-created database.
Troubleshooting
For QuickSight visibility, identity-region, and Redshift/Secrets Manager issues, see the Troubleshooting section in the README.