constructor()

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,
        },
      };
    });
  }