clients/s3-client.ts (28 lines of code) (raw):
import AWS from 'aws-sdk';
import { IClient } from "../core/ext-types.js"
import { IExecutionResult } from "../core/pipeline-types.js";
const environmentClient: IClient = {
name: "s3",
makeCommandGenerator: (async function*() {
const s3 = new AWS.S3();
const bucket = process.env.CLIENT_S3_BUCKET || 'firelens-datajet';
const file = process.env.CLIENT_S3_FILE || 'firelens-datajet.json';
try {
const s3Response = await s3.getObject({
Bucket: bucket,
Key: file
}).promise();
const config = JSON.parse(s3Response.Body.toString());
console.log("Retrieved datajet configuration file from s3: ");
console.log(JSON.stringify(config, null, 2));
yield {
pipelineConfiguration: config,
handleExecutionResult: async (_: IExecutionResult) => {},
};
} catch (e) {
console.log(`Unable to fetch configuration file from S3 bucket: ${e}`);
return;
}
})
};
export default environmentClient;