This repository has been archived on 2024-09-11. You can view files and clone it, but cannot push or open issues or pull requests.
svrjs-blog-newsletter/cronjob/node_modules/@aws-sdk/credential-provider-process/dist-es/resolveProcessCredentials.js

34 lines
1.3 KiB
JavaScript
Raw Permalink Normal View History

2024-05-26 22:54:55 +02:00
import { CredentialsProviderError } from "@smithy/property-provider";
import { exec } from "child_process";
import { promisify } from "util";
import { getValidatedProcessCredentials } from "./getValidatedProcessCredentials";
export const resolveProcessCredentials = async (profileName, profiles) => {
const profile = profiles[profileName];
if (profiles[profileName]) {
const credentialProcess = profile["credential_process"];
if (credentialProcess !== undefined) {
const execPromise = promisify(exec);
try {
const { stdout } = await execPromise(credentialProcess);
let data;
try {
data = JSON.parse(stdout.trim());
}
catch {
throw Error(`Profile ${profileName} credential_process returned invalid JSON.`);
}
return getValidatedProcessCredentials(profileName, data);
}
catch (error) {
throw new CredentialsProviderError(error.message);
}
}
else {
throw new CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`);
}
}
else {
throw new CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`);
}
};