in app/src/utils/sigv4.js [58:87]
export function createPresignedURL(method, host, path, service, payload, options) {
options = options || {};
options.key = options.key || process.env.AWS_ACCESS_KEY_ID;
options.secret = options.secret || process.env.AWS_SECRET_ACCESS_KEY;
options.protocol = options.protocol || 'https';
options.headers = options.headers || {};
options.timestamp = options.timestamp || Date.now();
options.region = options.region || process.env.AWS_REGION || 'us-east-1';
options.expires = options.expires || 86400; // 24 hours
options.headers = options.headers || {};
// host is required
options.headers.Host = host;
var query = options.query ? querystring.parse(options.query) : {};
query['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256';
query['X-Amz-Credential'] = options.key + '/' + createCredentialScope(options.timestamp, options.region, service);
query['X-Amz-Date'] = toTime(options.timestamp);
query['X-Amz-Expires'] = options.expires;
query['X-Amz-SignedHeaders'] = createSignedHeaders(options.headers);
if (options.sessionToken) {
query['X-Amz-Security-Token'] = options.sessionToken;
}
var canonicalRequest = createCanonicalRequest(method, path, query, options.headers, payload);
var stringToSign = createStringToSign(options.timestamp, options.region, service, canonicalRequest);
var signature = createSignature(options.secret, options.timestamp, options.region, service, stringToSign);
query['X-Amz-Signature'] = signature;
return options.protocol + '://' + host + path + '?' + querystring.stringify(query);
};