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'
},
]
)