in Migration-scripts/cdk/lambda/quicksight_migration/quicksight_migration/quicksight_utils.py [0:0]
def create_dashboard(session, dashboard, name,
principal, source_entity, version, theme_arn, filter='ENABLED',
csv='ENABLED', sheetcontrol='EXPANDED'):
qs_client = session.client('quicksight')
sts_client = session.client("sts")
account_id = sts_client.get_caller_identity()["Account"]
try:
if theme_arn == '':
response = qs_client.create_dashboard(
AwsAccountId=account_id,
DashboardId=dashboard,
Name=name,
Permissions=[
{
'Principal': principal,
'Actions': [
'quicksight:DescribeDashboard',
'quicksight:ListDashboardVersions',
'quicksight:UpdateDashboardPermissions',
'quicksight:QueryDashboard',
'quicksight:UpdateDashboard',
'quicksight:DeleteDashboard',
'quicksight:DescribeDashboardPermissions',
'quicksight:UpdateDashboardPublishedVersion'
]
},
],
SourceEntity=source_entity,
VersionDescription=version,
DashboardPublishOptions={
'AdHocFilteringOption': {
'AvailabilityStatus': filter
},
'ExportToCSVOption': {
'AvailabilityStatus': csv
},
'SheetControlsOption': {
'VisibilityState': sheetcontrol
}
}
)
else:
response = qs_client.create_dashboard(
AwsAccountId=account_id,
DashboardId=dashboard,
Name=name,
Permissions=[
{
'Principal': principal,
'Actions': [
'quicksight:DescribeDashboard',
'quicksight:ListDashboardVersions',
'quicksight:UpdateDashboardPermissions',
'quicksight:QueryDashboard',
'quicksight:UpdateDashboard',
'quicksight:DeleteDashboard',
'quicksight:DescribeDashboardPermissions',
'quicksight:UpdateDashboardPublishedVersion'
]
},
],
SourceEntity=source_entity,
VersionDescription=version,
DashboardPublishOptions={
'AdHocFilteringOption': {
'AvailabilityStatus': filter
},
'ExportToCSVOption': {
'AvailabilityStatus': csv
},
'SheetControlsOption': {
'VisibilityState': sheetcontrol
}
},
ThemeArn=theme_arn
)
except ClientError as exc:
logger.error("Failed to create dashboard %s", dashboard)
logger.error(exc.response['Error']['Message'])
return response