| | | 1 | | /** |
| | | 2 | | * Thrown when an AWS request fails because the credentials or security token |
| | | 3 | | * are expired or invalid (for example, an expired SSO session). |
| | | 4 | | */ |
| | | 5 | | export class ExpiredCredentialsError extends Error { |
| | | 6 | | readonly cause?: unknown; |
| | | 7 | | |
| | | 8 | | constructor(cause?: unknown) { |
| | 1 | 9 | | super( |
| | | 10 | | 'AWS credentials are expired or invalid. Your security token or SSO ' + |
| | | 11 | | 'session may have expired. Refresh your credentials and retry ' + |
| | | 12 | | '(for SSO, run: aws sso login).', |
| | | 13 | | ); |
| | 1 | 14 | | this.name = 'ExpiredCredentialsError'; |
| | 1 | 15 | | this.cause = cause; |
| | | 16 | | } |
| | | 17 | | } |
| | | 18 | | |
| | 5 | 19 | | const EXPIRED_CREDENTIAL_ERROR_NAMES = new Set([ |
| | | 20 | | 'ExpiredToken', |
| | | 21 | | 'ExpiredTokenException', |
| | | 22 | | ]); |
| | | 23 | | |
| | | 24 | | /** |
| | | 25 | | * Detects whether an unknown error represents expired or invalid AWS |
| | | 26 | | * credentials, by inspecting its AWS error name. |
| | | 27 | | */ |
| | | 28 | | export function isExpiredCredentialsError(error: unknown): boolean { |
| | 8 | 29 | | if (typeof error !== 'object' || error === null || !('name' in error)) { |
| | 1 | 30 | | return false; |
| | | 31 | | } |
| | 7 | 32 | | const name = String((error as { name?: unknown }).name); |
| | 7 | 33 | | return EXPIRED_CREDENTIAL_ERROR_NAMES.has(name); |
| | | 34 | | } |