in source/lambda/solution-helper/create-quicksight.ts [246:296]
async function createAllDataSources(props: ICreateQuickSightRequestProps, quickSightHelper: QuickSightHelper): Promise<{[key: string]: QuickSight.CreateDataSourceResponse}> {
const metadata = props.Metadata;
const machineInformationId = `${props.StackName}-MachineInformation`;
const machineConfigInformationId = `${props.StackName}-MachineConfigInformation`;
const athenaId = `${props.StackName}-Athena`;
// Machine information data source which contains machine ID, name, location, and line
const machineInformationDataSourceParams: IQuickSightCreateDataSourceProps = {
name: machineInformationId,
type: QuickSightDataSourceType.S3,
dataSourceParameters: {
S3Parameters: {
ManifestFileLocation: {
Bucket: metadata.BucketName,
Key: `${metadata.ManifestPrefix}/${metadata.MachineInformationPrefix}_${metadata.ManifestPrefix}.json`
}
}
}
};
// Machine config information data source which contains machine ID, down status tag, and down values
const machineConfigInformationDataSourceParams = {
name: machineConfigInformationId,
type: QuickSightDataSourceType.S3,
dataSourceParameters: {
S3Parameters: {
ManifestFileLocation: {
Bucket: metadata.BucketName,
Key: `${metadata.ManifestPrefix}/${metadata.MachineConfigInformationPrefix}_${metadata.ManifestPrefix}.json`
}
}
}
};
// Athena data source from the parquet data
const athenaDataSourceParams = {
name: athenaId,
type: QuickSightDataSourceType.ATHENA,
dataSourceParameters: {
AthenaParameters: { WorkGroup: 'primary' }
}
};
const [machineInformationDataSource, machineConfigInformationDataSource, athenaDataSource] = await Promise.all([
quickSightHelper.createDataSource(machineInformationDataSourceParams),
quickSightHelper.createDataSource(machineConfigInformationDataSourceParams),
quickSightHelper.createDataSource(athenaDataSourceParams)
]);
return { machineInformationDataSource, machineConfigInformationDataSource, athenaDataSource };
}