style: add eslint styling
This commit is contained in:
@ -1,21 +1,17 @@
|
||||
import {
|
||||
RDSClient,
|
||||
DescribeDBClusterSnapshotsCommand,
|
||||
CopyDBClusterSnapshotCommand
|
||||
} from '@aws-sdk/client-rds';
|
||||
import { BPSet, BPSetMetadata, BPSetStats } from '../../types';
|
||||
import { Memorizer } from '../../Memorizer';
|
||||
import { RDSClient, DescribeDBClusterSnapshotsCommand, CopyDBClusterSnapshotCommand } from '@aws-sdk/client-rds'
|
||||
import { BPSet, BPSetMetadata, BPSetStats } from '../../types'
|
||||
import { Memorizer } from '../../Memorizer'
|
||||
|
||||
export class RDSSnapshotEncrypted implements BPSet {
|
||||
private readonly client = new RDSClient({});
|
||||
private readonly memoClient = Memorizer.memo(this.client);
|
||||
private readonly client = new RDSClient({})
|
||||
private readonly memoClient = Memorizer.memo(this.client)
|
||||
|
||||
private readonly stats: BPSetStats = {
|
||||
compliantResources: [],
|
||||
nonCompliantResources: [],
|
||||
status: 'LOADED',
|
||||
errorMessage: []
|
||||
};
|
||||
}
|
||||
|
||||
public readonly getMetadata = (): BPSetMetadata => ({
|
||||
name: 'RDSSnapshotEncrypted',
|
||||
@ -47,83 +43,81 @@ export class RDSSnapshotEncrypted implements BPSet {
|
||||
}
|
||||
],
|
||||
adviseBeforeFixFunction: 'Ensure that the KMS key is properly configured and accessible.'
|
||||
});
|
||||
})
|
||||
|
||||
public readonly getStats = () => this.stats;
|
||||
public readonly getStats = () => this.stats
|
||||
|
||||
public readonly clearStats = () => {
|
||||
this.stats.compliantResources = [];
|
||||
this.stats.nonCompliantResources = [];
|
||||
this.stats.status = 'LOADED';
|
||||
this.stats.errorMessage = [];
|
||||
};
|
||||
this.stats.compliantResources = []
|
||||
this.stats.nonCompliantResources = []
|
||||
this.stats.status = 'LOADED'
|
||||
this.stats.errorMessage = []
|
||||
}
|
||||
|
||||
public readonly check = async () => {
|
||||
this.stats.status = 'CHECKING';
|
||||
this.stats.status = 'CHECKING'
|
||||
|
||||
await this.checkImpl()
|
||||
.then(() => {
|
||||
this.stats.status = 'FINISHED';
|
||||
this.stats.status = 'FINISHED'
|
||||
})
|
||||
.catch((err) => {
|
||||
this.stats.status = 'ERROR';
|
||||
this.stats.status = 'ERROR'
|
||||
this.stats.errorMessage.push({
|
||||
date: new Date(),
|
||||
message: err.message
|
||||
});
|
||||
});
|
||||
};
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
private readonly checkImpl = async () => {
|
||||
const compliantResources: string[] = [];
|
||||
const nonCompliantResources: string[] = [];
|
||||
const snapshots = await this.getDBClusterSnapshots();
|
||||
const compliantResources: string[] = []
|
||||
const nonCompliantResources: string[] = []
|
||||
const snapshots = await this.getDBClusterSnapshots()
|
||||
|
||||
for (const snapshot of snapshots) {
|
||||
if (snapshot.StorageEncrypted) {
|
||||
compliantResources.push(snapshot.DBClusterSnapshotArn!);
|
||||
compliantResources.push(snapshot.DBClusterSnapshotArn!)
|
||||
} else {
|
||||
nonCompliantResources.push(snapshot.DBClusterSnapshotArn!);
|
||||
nonCompliantResources.push(snapshot.DBClusterSnapshotArn!)
|
||||
}
|
||||
}
|
||||
|
||||
this.stats.compliantResources = compliantResources;
|
||||
this.stats.nonCompliantResources = nonCompliantResources;
|
||||
};
|
||||
this.stats.compliantResources = compliantResources
|
||||
this.stats.nonCompliantResources = nonCompliantResources
|
||||
}
|
||||
|
||||
public readonly fix = async (
|
||||
nonCompliantResources: string[],
|
||||
requiredParametersForFix: { name: string; value: string }[]
|
||||
) => {
|
||||
this.stats.status = 'CHECKING';
|
||||
this.stats.status = 'CHECKING'
|
||||
|
||||
await this.fixImpl(nonCompliantResources, requiredParametersForFix)
|
||||
.then(() => {
|
||||
this.stats.status = 'FINISHED';
|
||||
this.stats.status = 'FINISHED'
|
||||
})
|
||||
.catch((err) => {
|
||||
this.stats.status = 'ERROR';
|
||||
this.stats.status = 'ERROR'
|
||||
this.stats.errorMessage.push({
|
||||
date: new Date(),
|
||||
message: err.message
|
||||
});
|
||||
});
|
||||
};
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
private readonly fixImpl = async (
|
||||
nonCompliantResources: string[],
|
||||
requiredParametersForFix: { name: string; value: string }[]
|
||||
) => {
|
||||
const kmsKeyId = requiredParametersForFix.find(
|
||||
(param) => param.name === 'kms-key-id'
|
||||
)?.value;
|
||||
const kmsKeyId = requiredParametersForFix.find((param) => param.name === 'kms-key-id')?.value
|
||||
|
||||
if (!kmsKeyId) {
|
||||
throw new Error("Required parameter 'kms-key-id' is missing.");
|
||||
throw new Error("Required parameter 'kms-key-id' is missing.")
|
||||
}
|
||||
|
||||
for (const arn of nonCompliantResources) {
|
||||
const snapshotId = arn.split(':snapshot:')[1];
|
||||
const snapshotId = arn.split(':snapshot:')[1]
|
||||
|
||||
await this.client.send(
|
||||
new CopyDBClusterSnapshotCommand({
|
||||
@ -131,12 +125,12 @@ export class RDSSnapshotEncrypted implements BPSet {
|
||||
TargetDBClusterSnapshotIdentifier: `${snapshotId}-encrypted`,
|
||||
KmsKeyId: kmsKeyId
|
||||
})
|
||||
);
|
||||
)
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private readonly getDBClusterSnapshots = async () => {
|
||||
const response = await this.memoClient.send(new DescribeDBClusterSnapshotsCommand({}));
|
||||
return response.DBClusterSnapshots || [];
|
||||
};
|
||||
const response = await this.memoClient.send(new DescribeDBClusterSnapshotsCommand({}))
|
||||
return response.DBClusterSnapshots || []
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user