import { Logger } from "@smithy/types"; import { InstanceMetadataCredentials } from "../types"; const STATIC_STABILITY_REFRESH_INTERVAL_SECONDS = 5 * 60; const STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS = 5 * 60; const STATIC_STABILITY_DOC_URL = "https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html"; /** * @internal */ export const getExtendedInstanceMetadataCredentials = ( credentials: InstanceMetadataCredentials, logger: Logger ): InstanceMetadataCredentials => { const refreshInterval = STATIC_STABILITY_REFRESH_INTERVAL_SECONDS + Math.floor(Math.random() * STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS); const newExpiration = new Date(Date.now() + refreshInterval * 1000); logger.warn( "Attempting credential expiration extension due to a credential service availability issue. A refresh of these " + "credentials will be attempted after ${new Date(newExpiration)}.\nFor more information, please visit: " + STATIC_STABILITY_DOC_URL ); const originalExpiration = credentials.originalExpiration ?? credentials.expiration; return { ...credentials, ...(originalExpiration ? { originalExpiration } : {}), expiration: newExpiration, }; };