in packages/apps/datalake/datalake-app/lib/datalake-config.ts [146:200]
constructor(stack: Stack, props: MdaaAppConfigParserProps) {
super(stack, props, configSchema as Schema);
this.roles = 'roles' in this.configContents ? this.configContents['roles'] : {};
this.accessPolicies =
'accessPolicies' in this.configContents ? this.buildAccessPolicies(this.configContents.accessPolicies) : {};
this.lifecycleConfigurations = this.configContents.lifecycleConfigurations
? this.buildLifecycleConfigurations(this.configContents.lifecycleConfigurations)
: undefined;
this.buckets = Object.entries(this.configContents.buckets).map(zoneAndBucketConfig => {
const bucketZone: string = zoneAndBucketConfig[0];
const configBucketProps: BucketConfig = zoneAndBucketConfig[1];
const accessPolicies = configBucketProps.accessPolicies.map(accessPolicyName => {
if (!(accessPolicyName in this.accessPolicies)) {
throw new Error(
`${accessPolicyName} is required in 'buckets' definition ${bucketZone} but not defined in 'accessPolicies'`,
);
}
return {
...this.accessPolicies[accessPolicyName],
...{
name: accessPolicyName,
},
};
});
const lakeFormationLocations = Object.fromEntries(
Object.keys(configBucketProps.lakeFormationLocations || {}).map(lfLocationName => {
const lfLocation = (configBucketProps.lakeFormationLocations || {})[lfLocationName];
return [
lfLocationName,
{
prefix: lfLocation.prefix,
write: lfLocation.write,
},
];
}),
);
const lifecycleConfiguration: LifecycleConfigurationRuleProps[] =
configBucketProps.lifecycleConfiguration && this.lifecycleConfigurations
? this.lifecycleConfigurations[configBucketProps.lifecycleConfiguration]
: [];
return {
...configBucketProps,
...{
bucketZone: bucketZone,
accessPolicies: accessPolicies,
lakeFormationLocations: lakeFormationLocations,
lifecycleConfiguration: lifecycleConfiguration,
},
};
});
}