mirror of
https://github.com/diced/zipline.git
synced 2025-12-21 23:00:40 -08:00
feat(api): S3 endpoint support (#152)
* S3 endpoint support Adding endpoint support to S3 allows for other S3-compatible uploaders to be used * Fix formatting error
This commit is contained in:
@@ -9,11 +9,13 @@ export class S3 extends Datasource {
|
|||||||
public constructor(
|
public constructor(
|
||||||
public accessKey: string,
|
public accessKey: string,
|
||||||
public secretKey: string,
|
public secretKey: string,
|
||||||
|
public endpoint: string,
|
||||||
public bucket: string,
|
public bucket: string,
|
||||||
) {
|
) {
|
||||||
super();
|
super();
|
||||||
this.s3 = new AWS.S3({
|
this.s3 = new AWS.S3({
|
||||||
accessKeyId: accessKey,
|
accessKeyId: accessKey,
|
||||||
|
endpoint: endpoint,
|
||||||
secretAccessKey: secretKey,
|
secretAccessKey: secretKey,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ if (!global.datasource) {
|
|||||||
switch (config.datasource.type) {
|
switch (config.datasource.type) {
|
||||||
case 's3':
|
case 's3':
|
||||||
Logger.get('datasource').info(`Using S3(${config.datasource.s3.bucket}) datasource`);
|
Logger.get('datasource').info(`Using S3(${config.datasource.s3.bucket}) datasource`);
|
||||||
global.datasource = new S3(config.datasource.s3.access_key_id, config.datasource.s3.secret_access_key, config.datasource.s3.bucket);
|
global.datasource = new S3(config.datasource.s3.access_key_id, config.datasource.s3.secret_access_key, config.datasource.s3.endpoint, config.datasource.s3.bucket);
|
||||||
break;
|
break;
|
||||||
case 'local':
|
case 'local':
|
||||||
Logger.get('datasource').info(`Using local(${config.datasource.local.directory}) datasource`);
|
Logger.get('datasource').info(`Using local(${config.datasource.local.directory}) datasource`);
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ function tryReadEnv(): Config {
|
|||||||
s3: {
|
s3: {
|
||||||
access_key_id: undefined,
|
access_key_id: undefined,
|
||||||
secret_access_key: undefined,
|
secret_access_key: undefined,
|
||||||
|
endpoint: undefined,
|
||||||
bucket: undefined,
|
bucket: undefined,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ export interface ConfigLocalDatasource {
|
|||||||
export interface ConfigS3Datasource {
|
export interface ConfigS3Datasource {
|
||||||
access_key_id: string;
|
access_key_id: string;
|
||||||
secret_access_key: string;
|
secret_access_key: string;
|
||||||
|
endpoint: string;
|
||||||
bucket: string;
|
bucket: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ const validator = object({
|
|||||||
s3: object({
|
s3: object({
|
||||||
access_key_id: string(),
|
access_key_id: string(),
|
||||||
secret_access_key: string(),
|
secret_access_key: string(),
|
||||||
|
endpoint: string(),
|
||||||
bucket: string(),
|
bucket: string(),
|
||||||
}).notRequired(),
|
}).notRequired(),
|
||||||
}).required(),
|
}).required(),
|
||||||
@@ -48,6 +49,7 @@ export default function validate(config): Config {
|
|||||||
const errors = [];
|
const errors = [];
|
||||||
if (!validated.datasource.s3.access_key_id) errors.push('datasource.s3.access_key_id is a required field');
|
if (!validated.datasource.s3.access_key_id) errors.push('datasource.s3.access_key_id is a required field');
|
||||||
if (!validated.datasource.s3.secret_access_key) errors.push('datasource.s3.secret_access_key is a required field');
|
if (!validated.datasource.s3.secret_access_key) errors.push('datasource.s3.secret_access_key is a required field');
|
||||||
|
if (!validated.datasource.s3.endpoint) errors.push('datasource.s3.endpoint is a required field');
|
||||||
if (!validated.datasource.s3.bucket) errors.push('datasource.s3.bucket is a required field');
|
if (!validated.datasource.s3.bucket) errors.push('datasource.s3.bucket is a required field');
|
||||||
if (errors.length) throw { errors };
|
if (errors.length) throw { errors };
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user