UNPKG

failure-lambda

Version:

Failure injection for AWS Lambda - chaos engineering made simple

90 lines (86 loc) 3.42 kB
#!/usr/bin/env node 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