def SetupQuicksight()

in metrics-analytics/deploy/setup-s3-quicksight.py [0:0]


def SetupQuicksight(client, account_id, quicksight_user_arn, random_string, redshift_host, redshift_port, redshift_db_name, redshift_cluster_id, redshift_user_name, redshift_password):
    datasource_response = client.create_data_source(
        AwsAccountId=account_id,
        DataSourceId='MetricsDataSource-' + random_string,
        Name='MetricsDataSource-' + random_string,
        Type='REDSHIFT',
        DataSourceParameters={
            'RedshiftParameters': {
                'Host': redshift_host_name,
                'Port': redshift_port,
                'Database': redshift_db_name,
                'ClusterId': redshift_cluster_id
            }
        },
        Credentials={
            'CredentialPair': {
                'Username': redshift_user_name,
                'Password': redshift_password
            }
        },
        Permissions=[
            {
                'Principal': quicksight_user_arn,
                'Actions': ["quicksight:DescribeDataSource","quicksight:DescribeDataSourcePermissions","quicksight:PassDataSource","quicksight:UpdateDataSource","quicksight:DeleteDataSource","quicksight:UpdateDataSourcePermissions"]
            },
        ],
        
        SslProperties={
            'DisableSsl': False
        },
        Tags=[
            {
                'Key': 'Name',
                'Value': 'Metrics-Analytics'
            },
        ]
    )

    datasource_arn = datasource_response.get('Arn')

    time.sleep(1)

    response = client.create_data_set(
        AwsAccountId= account_id,
        DataSetId='MetricsDataSet-' + random_string,
        Name='MetricsDataSet-' +  random_string,
        PhysicalTableMap={
            'string': {
                'RelationalTable': {
                    'DataSourceArn': datasource_arn,
                    'Schema': 'public',
                    'Name': 'metrics',
                    'InputColumns': [
                        {
                            'Name': 'type',
                            'Type': 'STRING'
                        },
                        {
                            'Name': 'workload',
                            'Type': 'STRING'
                        },
                        {
                            'Name': 'context',
                            'Type': 'STRING'
                        },
                        {
                            'Name': 'tenant_id',
                            'Type': 'STRING'
                        },
                        {
                            'Name': 'tenant_name',
                            'Type': 'STRING'
                        },
                        {
                            'Name': 'tenant_tier',
                            'Type': 'STRING'
                        },
                        {
                            'Name': 'timerecorded',
                            'Type': 'DATETIME'
                        },
                        {
                            'Name': 'metric_name',
                            'Type': 'STRING'
                        },
                        {
                            'Name': 'metric_unit',
                            'Type': 'STRING'
                        },
                        {
                            'Name': 'metric_value',
                            'Type': 'INTEGER'
                        },
                        {
                            'Name': 'meta_data',
                            'Type': 'STRING'
                        },
                    ]
                }
            }
        },
        ImportMode='DIRECT_QUERY',
        Permissions=[
            {
                'Principal': quicksight_user_arn,
                'Actions': ["quicksight:DescribeDataSet","quicksight:DescribeDataSetPermissions","quicksight:PassDataSet","quicksight:DescribeIngestion","quicksight:ListIngestions","quicksight:UpdateDataSet","quicksight:DeleteDataSet","quicksight:CreateIngestion","quicksight:CancelIngestion","quicksight:UpdateDataSetPermissions"]
            },
        ],
        Tags=[
            {
                'Key': 'Name',
                'Value': 'Metrics-Analytics'
            },
        ]
    )