in visualizeConnectData/scripts/quicksight/deploy.py [0:0]
def createDataSource(accountId, qsUserArn, name):
deleteDataSource(accountId, name)
cdsResp = qsClient.create_data_source(
AwsAccountId = accountId,
DataSourceId = name,
Name = name,
Type = 'ATHENA',
DataSourceParameters = {
'AthenaParameters': {
'WorkGroup': 'primary'
}
}
)
logger.info(cdsResp)
dsArn = cdsResp['Arn']
dsId = cdsResp['DataSourceId']
while True:
time.sleep(sleepTime)
ddsResp = qsClient.describe_data_source(
AwsAccountId = accountId,
DataSourceId = dsId
)
logger.info(ddsResp)
dsStatus = ddsResp['DataSource']['Status']
logger.info(dsStatus)
if dsStatus != 'CREATION_IN_PROGRESS':
break
if dsStatus == 'CREATION_SUCCESSFUL':
udspResp = qsClient.update_data_source_permissions(
AwsAccountId=accountId,
DataSourceId=dsId,
GrantPermissions=[
{
'Principal': qsUserArn,
'Actions': [
'quicksight:UpdateDataSourcePermissions',
'quicksight:DescribeDataSource',
'quicksight:DescribeDataSourcePermissions',
'quicksight:PassDataSource',
'quicksight:UpdateDataSource',
'quicksight:DeleteDataSource',
]
}
]
)
logger.info(udspResp)
return dsArn
else:
raise RuntimeError('{0} failed'.format(name))