#!/usr/bin/env node const { S3Client, PutObjectCommand } = require('@aws-sdk/client-s3') const { fromIni } = require('@aws-sdk/credential-provider-ini') const path = require('path') const fs = require('fs') const crypto = require('crypto') function getMD5HashFromFile(data) { const hash = crypto.createHash('md5').update(data).digest('base64') return hash } (async function () { const s3Client = new S3Client({ region: 'us-east-2', credentials: fromIni({ profile: 'gl-logs-for-panther' }), }) try { const file = 'gl-dependency-scanning-report.json' const data = fs.readFileSync(file) const [filename, fileext] = path.basename(file).split('.') const uniqueId = process.env['CI_PIPELINE_ID'] && process.env['CI_JOB_ID'] ? process.env['CI_PIPELINE_ID'] + '-' + process.env['CI_JOB_ID'] : Date.now() const key = path.join('package_hunter_test', filename + '-' + uniqueId + '.' + fileext) const responseData = await s3Client.send( new PutObjectCommand({ Bucket: 'gl-logs-for-panther-test', Key: key, Body: data, ContentMD5: getMD5HashFromFile(data), }), ) console.log('Successfully uploaded %s to %s', file, key) } catch (err) { if (err.name === 'CredentialsProviderError' || err.name === 'AuthorizationHeaderMalformed') console.log('Could not upload the report. Are AWS credentials configured in ~/.aws/credentials?') else console.log('Unexpected error during upload: ', err.message) process.exit(1) } })()