failure-lambda
Version:
Failure injection for AWS Lambda - chaos engineering made simple
90 lines (86 loc) • 3.42 kB
JavaScript
import {
externalDataInterceptor,
getProfileName,
parseKnownFiles
} from "./chunk-52D4AVIU.js";
import {
setCredentialFeature
} from "./chunk-S6KKH4HA.js";
import {
CredentialsProviderError
} from "./chunk-M4AFYEP7.js";
import "./chunk-UT3JLF3M.js";
// node_modules/@aws-sdk/credential-provider-process/dist-es/resolveProcessCredentials.js
import { exec } from "child_process";
import { promisify } from "util";
// node_modules/@aws-sdk/credential-provider-process/dist-es/getValidatedProcessCredentials.js
var getValidatedProcessCredentials = (profileName, data, profiles) => {
if (data.Version !== 1) {
throw Error(`Profile ${profileName} credential_process did not return Version 1.`);
}
if (data.AccessKeyId === void 0 || data.SecretAccessKey === void 0) {
throw Error(`Profile ${profileName} credential_process returned invalid credentials.`);
}
if (data.Expiration) {
const currentTime = /* @__PURE__ */ new Date();
const expireTime = new Date(data.Expiration);
if (expireTime < currentTime) {
throw Error(`Profile ${profileName} credential_process returned expired credentials.`);
}
}
let accountId = data.AccountId;
if (!accountId && profiles?.[profileName]?.aws_account_id) {
accountId = profiles[profileName].aws_account_id;
}
const credentials = {
accessKeyId: data.AccessKeyId,
secretAccessKey: data.SecretAccessKey,
...data.SessionToken && { sessionToken: data.SessionToken },
...data.Expiration && { expiration: new Date(data.Expiration) },
...data.CredentialScope && { credentialScope: data.CredentialScope },
...accountId && { accountId }
};
setCredentialFeature(credentials, "CREDENTIALS_PROCESS", "w");
return credentials;
};
// node_modules/@aws-sdk/credential-provider-process/dist-es/resolveProcessCredentials.js
var resolveProcessCredentials = async (profileName, profiles, logger) => {
const profile = profiles[profileName];
if (profiles[profileName]) {
const credentialProcess = profile["credential_process"];
if (credentialProcess !== void 0) {
const execPromise = promisify(externalDataInterceptor?.getTokenRecord?.().exec ?? 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, profiles);
} catch (error) {
throw new CredentialsProviderError(error.message, { logger });
}
} else {
throw new CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`, { logger });
}
} else {
throw new CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`, {
logger
});
}
};
// node_modules/@aws-sdk/credential-provider-process/dist-es/fromProcess.js
var fromProcess = (init = {}) => async ({ callerClientConfig } = {}) => {
init.logger?.debug("@aws-sdk/credential-provider-process - fromProcess");
const profiles = await parseKnownFiles(init);
return resolveProcessCredentials(getProfileName({
profile: init.profile ?? callerClientConfig?.profile
}), profiles, init.logger);
};
export {
fromProcess
};
//# sourceMappingURL=dist-es-DDAANG67.js.map