in core/src/data-lake-storage.ts [71:159]
constructor(scope: Construct, id: string, props: DataLakeStorageProps) {
super(scope, id);
// Prepare Amazon S3 Lifecycle Rules for raw data
const rawTransitions = [
{
storageClass: StorageClass.INFREQUENT_ACCESS,
transitionAfter: Duration.days(props.rawInfrequentAccessDelay || 30),
},
{
storageClass: StorageClass.GLACIER,
transitionAfter: Duration.days(props.rawArchiveDelay || 90),
},
];
// Create the raw data bucket with the raw transitions
this.rawBucket = new Bucket(this, 'RawBucket', {
bucketName: 'ara-raw-' + Aws.ACCOUNT_ID,
encryption: BucketEncryption.KMS_MANAGED,
enforceSSL: true,
removalPolicy: RemovalPolicy.DESTROY,
autoDeleteObjects: true,
lifecycleRules: [
{
transitions: rawTransitions,
},
],
});
// Prepare Amazon S3 Lifecycle Rules for clean data
const cleanTransitions = [
{
storageClass: StorageClass.INFREQUENT_ACCESS,
transitionAfter: Duration.days(props.cleanInfrequentAccessDelay || 90),
},
];
if ( props.cleanArchiveDelay ) {
cleanTransitions.push(
{
storageClass: StorageClass.GLACIER,
transitionAfter: Duration.days(props.cleanArchiveDelay),
},
);
}
// Create the clean data bucket
this.cleanBucket = new Bucket(this, 'CleanBucket', {
bucketName: 'ara-clean-' + Aws.ACCOUNT_ID,
encryption: BucketEncryption.KMS_MANAGED,
enforceSSL: true,
removalPolicy: RemovalPolicy.DESTROY,
autoDeleteObjects: true,
lifecycleRules: [
{
transitions: cleanTransitions,
},
],
});
// Prepare Amazon S3 Lifecycle Rules for clean data
const transformTransitions = [
{
storageClass: StorageClass.INFREQUENT_ACCESS,
transitionAfter: Duration.days(props.transformInfrequentAccessDelay || 90),
},
];
if ( props.transformArchiveDelay ) {
transformTransitions.push(
{
storageClass: StorageClass.GLACIER,
transitionAfter: Duration.days(props.transformArchiveDelay),
},
);
}
// Create the transform data bucket
this.transformBucket = new Bucket(this, 'TransformBucket', {
bucketName: 'ara-transform-' + Aws.ACCOUNT_ID,
encryption: BucketEncryption.KMS_MANAGED,
enforceSSL: true,
removalPolicy: RemovalPolicy.DESTROY,
autoDeleteObjects: true,
lifecycleRules: [
{
transitions: transformTransitions,
},
],
});
}