UNPKG

serverless-spy

Version:

CDK-based library for writing elegant integration tests on AWS serverless architecture and an additional web console to monitor events in real time.

31 lines (30 loc) 1.37 kB
import { setCredentialFeature } from "@aws-sdk/core/client"; export const getValidatedProcessCredentials = (profileName, data, profiles) => { if (data.Version !== 1) { throw Error(`Profile ${profileName} credential_process did not return Version 1.`); } if (data.AccessKeyId === undefined || data.SecretAccessKey === undefined) { throw Error(`Profile ${profileName} credential_process returned invalid credentials.`); } if (data.Expiration) { const currentTime = 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; };