S3 configuration for minio (#213)

* 🛠️S3 configuraiton for minio have to have strict types
This commit is contained in:
Anton Shepilov
2023-09-27 09:20:57 +02:00
committed by GitHub
parent c8f4eccf87
commit a6fa4240b5
3 changed files with 21 additions and 5 deletions
@@ -21,7 +21,7 @@ export class Configuration implements TdriveServiceConfiguration {
if (name) {
value =
this.serviceConfiguration &&
(this.serviceConfiguration.get(name) || configuration.get(name));
(this.serviceConfiguration.get<T>(name) || configuration.get<T>(name));
}
} catch {
value = defaultValue || null;
@@ -3,14 +3,22 @@ import { logger } from "../../../../../../core/platform/framework";
import { Readable } from "stream";
import { StorageConnectorAPI, WriteMetadata } from "../../provider";
export type S3Configuration = Minio.ClientOptions & { bucket: string };
export type S3Configuration = {
bucket: string;
region: string;
endPoint: string;
port: number;
useSSL: boolean;
accessKey: string;
secretKey: string;
};
export default class S3ConnectorService implements StorageConnectorAPI {
client: Minio.Client;
minioConfiguration: S3Configuration;
constructor(S3Configuration: S3Configuration) {
this.client = new Minio.Client({ ...S3Configuration });
this.client = new Minio.Client(S3Configuration);
this.minioConfiguration = S3Configuration;
}
@@ -3,7 +3,7 @@ import { Stream, Readable } from "stream";
import Multistream from "multistream";
import { Consumes, logger, TdriveService } from "../../framework";
import LocalConnectorService, { LocalConfiguration } from "./connectors/local/service";
import S3ConnectorService, { S3Configuration } from "./connectors/S3/service";
import S3ConnectorService from "./connectors/S3/service";
import StorageAPI, {
DeleteOptions,
ReadOptions,
@@ -37,7 +37,15 @@ export default class StorageService extends TdriveService<StorageAPI> implements
const type = this.getConnectorType();
if (type === "S3") {
logger.info("Using 'S3' connector for storage.");
return new S3ConnectorService(this.configuration.get<S3Configuration>("S3"));
return new S3ConnectorService({
bucket: this.configuration.get<string>("S3.bucket"),
region: this.configuration.get<string>("S3.region"),
endPoint: this.configuration.get<string>("S3.endPoint"),
port: Number(this.configuration.get<number>("S3.port")),
useSSL: Boolean(this.configuration.get<boolean>("S3.useSSL")),
accessKey: this.configuration.get<string>("S3.accessKey"),
secretKey: this.configuration.get<string>("S3.secretKey"),
});
}
logger.info(
`Using 'local' connector for storage${