mirror of
https://github.com/compiler-explorer/compiler-explorer.git
synced 2025-12-27 10:33:59 -05:00
Cache AWS creds at startup and reuse (#5814)
Also errors early if we can't get them at all, and configures retries and timeouts Mitigation for #5813
This commit is contained in:
40
lib/aws.ts
40
lib/aws.ts
@@ -27,6 +27,41 @@ import {SSM} from '@aws-sdk/client-ssm';
|
||||
import {unwrap} from './assert.js';
|
||||
import {logger} from './logger.js';
|
||||
import type {PropertyGetter} from './properties.interfaces.js';
|
||||
import {fromNodeProviderChain} from '@aws-sdk/credential-providers';
|
||||
import {AwsCredentialIdentityProvider} from '@smithy/types/dist-types/identity/awsCredentialIdentity.js';
|
||||
|
||||
let cachedCredentials: AwsCredentialIdentityProvider | undefined;
|
||||
|
||||
export function awsCredentials(): AwsCredentialIdentityProvider {
|
||||
if (!cachedCredentials) throw new Error("Attempt to get AWS credentials before they've been initialised");
|
||||
return cachedCredentials;
|
||||
}
|
||||
|
||||
export function fakeCredentialsForTest() {
|
||||
cachedCredentials = async () => {
|
||||
return {
|
||||
accessKeyId: 'not-a-real-key',
|
||||
secretAccessKey: 'not-a-real-secret',
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
async function initialiseAwsCredentials(region: string) {
|
||||
if (!cachedCredentials) {
|
||||
const provider = fromNodeProviderChain({
|
||||
logger: logger,
|
||||
timeout: 5000,
|
||||
maxRetries: 5,
|
||||
clientConfig: {region},
|
||||
});
|
||||
cachedCredentials = async (identityProperties?: Record<string, any>) => {
|
||||
logger.info(`Fetching AWS credentials for ${region}...`);
|
||||
const creds = await provider(identityProperties);
|
||||
logger.info(`Credentials: expiry:${creds.expiration}, keyId: ${creds.accessKeyId}`);
|
||||
return creds;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export class InstanceFetcher {
|
||||
ec2: EC2;
|
||||
@@ -36,7 +71,7 @@ export class InstanceFetcher {
|
||||
constructor(properties: PropertyGetter) {
|
||||
const region = properties<string>('region');
|
||||
logger.info(`New instance fetcher for region ${region}`);
|
||||
this.ec2 = new EC2({region: region});
|
||||
this.ec2 = new EC2({region: region, credentials: awsCredentials()});
|
||||
this.tagKey = properties<string>('tagKey');
|
||||
this.tagValue = properties<string>('tagValue');
|
||||
}
|
||||
@@ -59,7 +94,8 @@ let awsProps: PropertyGetter | null = null;
|
||||
async function loadAwsConfig(properties: PropertyGetter) {
|
||||
const region = properties<string>('region');
|
||||
if (!region) return {};
|
||||
const ssm = new SSM({region: region});
|
||||
await initialiseAwsCredentials(region);
|
||||
const ssm = new SSM({region: region, credentials: awsCredentials()});
|
||||
const path = '/compiler-explorer/';
|
||||
try {
|
||||
const response = await ssm.getParameters({Names: [path + 'sentryDsn']});
|
||||
|
||||
@@ -27,6 +27,7 @@ import {S3, NoSuchKey} from '@aws-sdk/client-s3';
|
||||
import type {GetResult} from '../types/cache.interfaces.js';
|
||||
|
||||
import type {S3HandlerOptions} from './s3-handler.interfaces.js';
|
||||
import {awsCredentials} from './aws.js';
|
||||
|
||||
const clientsByRegion: Map<string, S3> = new Map();
|
||||
|
||||
@@ -40,7 +41,7 @@ export class S3Bucket {
|
||||
if (maybeInstance) {
|
||||
this.instance = maybeInstance;
|
||||
} else {
|
||||
this.instance = new S3({region});
|
||||
this.instance = new S3({region, credentials: awsCredentials()});
|
||||
clientsByRegion.set(region, this.instance);
|
||||
}
|
||||
this.bucket = bucket;
|
||||
|
||||
@@ -33,6 +33,7 @@ import {S3Bucket} from '../s3-handler.js';
|
||||
import {anonymizeIp} from '../utils.js';
|
||||
|
||||
import {ExpandedShortLink, StorageBase} from './base.js';
|
||||
import {awsCredentials} from '../aws.js';
|
||||
|
||||
/*
|
||||
* NEVER CHANGE THIS VALUE
|
||||
@@ -75,7 +76,7 @@ export class StorageS3 extends StorageBase {
|
||||
`prefix ${this.prefix}, dynamo table ${this.table}`,
|
||||
);
|
||||
this.s3 = new S3Bucket(bucket, region);
|
||||
this.dynamoDb = new DynamoDB({region: region});
|
||||
this.dynamoDb = new DynamoDB({region: region, credentials: awsCredentials()});
|
||||
}
|
||||
|
||||
async storeItem(item, req) {
|
||||
|
||||
418
package-lock.json
generated
418
package-lock.json
generated
@@ -13,6 +13,7 @@
|
||||
"@aws-sdk/client-ec2": "^3.427.0",
|
||||
"@aws-sdk/client-s3": "^3.427.0",
|
||||
"@aws-sdk/client-ssm": "^3.427.0",
|
||||
"@aws-sdk/credential-providers": "^3.458.0",
|
||||
"@flatten-js/interval-tree": "^1.1.1",
|
||||
"@fortawesome/fontawesome-free": "^6.4.2",
|
||||
"@orchidjs/sifter": "^1.0.3",
|
||||
@@ -296,6 +297,209 @@
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
|
||||
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
|
||||
},
|
||||
"node_modules/@aws-sdk/client-cognito-identity": {
|
||||
"version": "3.458.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.458.0.tgz",
|
||||
"integrity": "sha512-fgtivHMM1JFp02fQBweDl8v/sqitVoNTW5E2Wq2qgpAgpabtWjp+/nJrPqvzf9g3HEVAMQC4HiHEFV5rkJNj1w==",
|
||||
"dependencies": {
|
||||
"@aws-crypto/sha256-browser": "3.0.0",
|
||||
"@aws-crypto/sha256-js": "3.0.0",
|
||||
"@aws-sdk/client-sts": "3.458.0",
|
||||
"@aws-sdk/core": "3.451.0",
|
||||
"@aws-sdk/credential-provider-node": "3.458.0",
|
||||
"@aws-sdk/middleware-host-header": "3.451.0",
|
||||
"@aws-sdk/middleware-logger": "3.451.0",
|
||||
"@aws-sdk/middleware-recursion-detection": "3.451.0",
|
||||
"@aws-sdk/middleware-signing": "3.451.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.451.0",
|
||||
"@aws-sdk/region-config-resolver": "3.451.0",
|
||||
"@aws-sdk/types": "3.451.0",
|
||||
"@aws-sdk/util-endpoints": "3.451.0",
|
||||
"@aws-sdk/util-user-agent-browser": "3.451.0",
|
||||
"@aws-sdk/util-user-agent-node": "3.451.0",
|
||||
"@smithy/config-resolver": "^2.0.18",
|
||||
"@smithy/fetch-http-handler": "^2.2.6",
|
||||
"@smithy/hash-node": "^2.0.15",
|
||||
"@smithy/invalid-dependency": "^2.0.13",
|
||||
"@smithy/middleware-content-length": "^2.0.15",
|
||||
"@smithy/middleware-endpoint": "^2.2.0",
|
||||
"@smithy/middleware-retry": "^2.0.20",
|
||||
"@smithy/middleware-serde": "^2.0.13",
|
||||
"@smithy/middleware-stack": "^2.0.7",
|
||||
"@smithy/node-config-provider": "^2.1.5",
|
||||
"@smithy/node-http-handler": "^2.1.9",
|
||||
"@smithy/protocol-http": "^3.0.9",
|
||||
"@smithy/smithy-client": "^2.1.15",
|
||||
"@smithy/types": "^2.5.0",
|
||||
"@smithy/url-parser": "^2.0.13",
|
||||
"@smithy/util-base64": "^2.0.1",
|
||||
"@smithy/util-body-length-browser": "^2.0.0",
|
||||
"@smithy/util-body-length-node": "^2.1.0",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.19",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.25",
|
||||
"@smithy/util-endpoints": "^1.0.4",
|
||||
"@smithy/util-retry": "^2.0.6",
|
||||
"@smithy/util-utf8": "^2.0.2",
|
||||
"tslib": "^2.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/client-sso": {
|
||||
"version": "3.458.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.458.0.tgz",
|
||||
"integrity": "sha512-GTiIH4So0PTU5oAldtOacO/cBonu4NWGfvN3+BUaAb5Ybb9yQiwcO08PS/pXZ0cw4UTVK+zr22WVLR0reomUTA==",
|
||||
"dependencies": {
|
||||
"@aws-crypto/sha256-browser": "3.0.0",
|
||||
"@aws-crypto/sha256-js": "3.0.0",
|
||||
"@aws-sdk/core": "3.451.0",
|
||||
"@aws-sdk/middleware-host-header": "3.451.0",
|
||||
"@aws-sdk/middleware-logger": "3.451.0",
|
||||
"@aws-sdk/middleware-recursion-detection": "3.451.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.451.0",
|
||||
"@aws-sdk/region-config-resolver": "3.451.0",
|
||||
"@aws-sdk/types": "3.451.0",
|
||||
"@aws-sdk/util-endpoints": "3.451.0",
|
||||
"@aws-sdk/util-user-agent-browser": "3.451.0",
|
||||
"@aws-sdk/util-user-agent-node": "3.451.0",
|
||||
"@smithy/config-resolver": "^2.0.18",
|
||||
"@smithy/fetch-http-handler": "^2.2.6",
|
||||
"@smithy/hash-node": "^2.0.15",
|
||||
"@smithy/invalid-dependency": "^2.0.13",
|
||||
"@smithy/middleware-content-length": "^2.0.15",
|
||||
"@smithy/middleware-endpoint": "^2.2.0",
|
||||
"@smithy/middleware-retry": "^2.0.20",
|
||||
"@smithy/middleware-serde": "^2.0.13",
|
||||
"@smithy/middleware-stack": "^2.0.7",
|
||||
"@smithy/node-config-provider": "^2.1.5",
|
||||
"@smithy/node-http-handler": "^2.1.9",
|
||||
"@smithy/protocol-http": "^3.0.9",
|
||||
"@smithy/smithy-client": "^2.1.15",
|
||||
"@smithy/types": "^2.5.0",
|
||||
"@smithy/url-parser": "^2.0.13",
|
||||
"@smithy/util-base64": "^2.0.1",
|
||||
"@smithy/util-body-length-browser": "^2.0.0",
|
||||
"@smithy/util-body-length-node": "^2.1.0",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.19",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.25",
|
||||
"@smithy/util-endpoints": "^1.0.4",
|
||||
"@smithy/util-retry": "^2.0.6",
|
||||
"@smithy/util-utf8": "^2.0.2",
|
||||
"tslib": "^2.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/client-sts": {
|
||||
"version": "3.458.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.458.0.tgz",
|
||||
"integrity": "sha512-c34zmQxcP7AM62S7SAiOztxTaHJOG+0aIb2GYUeag5sQzG7FnGGwZ7hA0ggCQc7iMkDL9UYHKKtLs1ynQenW+A==",
|
||||
"dependencies": {
|
||||
"@aws-crypto/sha256-browser": "3.0.0",
|
||||
"@aws-crypto/sha256-js": "3.0.0",
|
||||
"@aws-sdk/core": "3.451.0",
|
||||
"@aws-sdk/credential-provider-node": "3.458.0",
|
||||
"@aws-sdk/middleware-host-header": "3.451.0",
|
||||
"@aws-sdk/middleware-logger": "3.451.0",
|
||||
"@aws-sdk/middleware-recursion-detection": "3.451.0",
|
||||
"@aws-sdk/middleware-sdk-sts": "3.451.0",
|
||||
"@aws-sdk/middleware-signing": "3.451.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.451.0",
|
||||
"@aws-sdk/region-config-resolver": "3.451.0",
|
||||
"@aws-sdk/types": "3.451.0",
|
||||
"@aws-sdk/util-endpoints": "3.451.0",
|
||||
"@aws-sdk/util-user-agent-browser": "3.451.0",
|
||||
"@aws-sdk/util-user-agent-node": "3.451.0",
|
||||
"@smithy/config-resolver": "^2.0.18",
|
||||
"@smithy/fetch-http-handler": "^2.2.6",
|
||||
"@smithy/hash-node": "^2.0.15",
|
||||
"@smithy/invalid-dependency": "^2.0.13",
|
||||
"@smithy/middleware-content-length": "^2.0.15",
|
||||
"@smithy/middleware-endpoint": "^2.2.0",
|
||||
"@smithy/middleware-retry": "^2.0.20",
|
||||
"@smithy/middleware-serde": "^2.0.13",
|
||||
"@smithy/middleware-stack": "^2.0.7",
|
||||
"@smithy/node-config-provider": "^2.1.5",
|
||||
"@smithy/node-http-handler": "^2.1.9",
|
||||
"@smithy/protocol-http": "^3.0.9",
|
||||
"@smithy/smithy-client": "^2.1.15",
|
||||
"@smithy/types": "^2.5.0",
|
||||
"@smithy/url-parser": "^2.0.13",
|
||||
"@smithy/util-base64": "^2.0.1",
|
||||
"@smithy/util-body-length-browser": "^2.0.0",
|
||||
"@smithy/util-body-length-node": "^2.1.0",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.19",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.25",
|
||||
"@smithy/util-endpoints": "^1.0.4",
|
||||
"@smithy/util-retry": "^2.0.6",
|
||||
"@smithy/util-utf8": "^2.0.2",
|
||||
"fast-xml-parser": "4.2.5",
|
||||
"tslib": "^2.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-ini": {
|
||||
"version": "3.458.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.458.0.tgz",
|
||||
"integrity": "sha512-M293Im4k6QrKlWaPfElYKRPlBXMaXbkqns4YgLGBpabfIVIZEguGj/kVm7gkEKdt8rCHbBqqXgsQrtQbfDkkBQ==",
|
||||
"dependencies": {
|
||||
"@aws-sdk/credential-provider-env": "3.451.0",
|
||||
"@aws-sdk/credential-provider-process": "3.451.0",
|
||||
"@aws-sdk/credential-provider-sso": "3.458.0",
|
||||
"@aws-sdk/credential-provider-web-identity": "3.451.0",
|
||||
"@aws-sdk/types": "3.451.0",
|
||||
"@smithy/credential-provider-imds": "^2.0.0",
|
||||
"@smithy/property-provider": "^2.0.0",
|
||||
"@smithy/shared-ini-file-loader": "^2.0.6",
|
||||
"@smithy/types": "^2.5.0",
|
||||
"tslib": "^2.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-node": {
|
||||
"version": "3.458.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.458.0.tgz",
|
||||
"integrity": "sha512-psNXL3/GAoDAqRusdy5umglXTOvxtE9XQTtmOPn4O/H2NpXqe+cB2/W+H+uikgyyck9Lu4DwMk+voFz2Hl8znw==",
|
||||
"dependencies": {
|
||||
"@aws-sdk/credential-provider-env": "3.451.0",
|
||||
"@aws-sdk/credential-provider-ini": "3.458.0",
|
||||
"@aws-sdk/credential-provider-process": "3.451.0",
|
||||
"@aws-sdk/credential-provider-sso": "3.458.0",
|
||||
"@aws-sdk/credential-provider-web-identity": "3.451.0",
|
||||
"@aws-sdk/types": "3.451.0",
|
||||
"@smithy/credential-provider-imds": "^2.0.0",
|
||||
"@smithy/property-provider": "^2.0.0",
|
||||
"@smithy/shared-ini-file-loader": "^2.0.6",
|
||||
"@smithy/types": "^2.5.0",
|
||||
"tslib": "^2.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-sso": {
|
||||
"version": "3.458.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.458.0.tgz",
|
||||
"integrity": "sha512-dyRAKvMLF9Ur6M0YtWSU4E5YDVEFO7Rfg5FOTk+Lwnk24UQ0RoHg3c6HZ8sPTNx16cgx4YY68UYi/HTZf56z2g==",
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-sso": "3.458.0",
|
||||
"@aws-sdk/token-providers": "3.451.0",
|
||||
"@aws-sdk/types": "3.451.0",
|
||||
"@smithy/property-provider": "^2.0.0",
|
||||
"@smithy/shared-ini-file-loader": "^2.0.6",
|
||||
"@smithy/types": "^2.5.0",
|
||||
"tslib": "^2.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/client-dynamodb": {
|
||||
"version": "3.454.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.454.0.tgz",
|
||||
@@ -627,6 +831,21 @@
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/credential-provider-cognito-identity": {
|
||||
"version": "3.458.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.458.0.tgz",
|
||||
"integrity": "sha512-jFAu6chvwWDJr9OuPbCNRHonzR19R28udmZWh3u2lFm9q7xbIId7U3w+0NFNq7Ud/DpOBk05bORcJVQFmIeoUg==",
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-cognito-identity": "3.458.0",
|
||||
"@aws-sdk/types": "3.451.0",
|
||||
"@smithy/property-provider": "^2.0.0",
|
||||
"@smithy/types": "^2.5.0",
|
||||
"tslib": "^2.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/credential-provider-env": {
|
||||
"version": "3.451.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.451.0.tgz",
|
||||
@@ -641,6 +860,25 @@
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/credential-provider-http": {
|
||||
"version": "3.451.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.451.0.tgz",
|
||||
"integrity": "sha512-q82kEzymqimkJ2dHmuN2RGpi9HTFSxwwoXALnzPRaRcvR/v+YY8FMgSTfwXzPkHUDf/q8J+aDz6lPcYlnsP3sQ==",
|
||||
"dependencies": {
|
||||
"@aws-sdk/types": "3.451.0",
|
||||
"@smithy/fetch-http-handler": "^2.2.6",
|
||||
"@smithy/node-http-handler": "^2.1.9",
|
||||
"@smithy/property-provider": "^2.0.0",
|
||||
"@smithy/protocol-http": "^3.0.9",
|
||||
"@smithy/smithy-client": "^2.1.15",
|
||||
"@smithy/types": "^2.5.0",
|
||||
"@smithy/util-stream": "^2.0.20",
|
||||
"tslib": "^2.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/credential-provider-ini": {
|
||||
"version": "3.451.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.451.0.tgz",
|
||||
@@ -728,6 +966,186 @@
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/credential-providers": {
|
||||
"version": "3.458.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.458.0.tgz",
|
||||
"integrity": "sha512-yjNjgXwQUwoOCZVLI33T0XjyHisH+S866qoUiK4TwJMJOPHDfl21PxzfXtVI0nhQuuu7g2bgTDaB3YD8Xx1Krg==",
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-cognito-identity": "3.458.0",
|
||||
"@aws-sdk/client-sso": "3.458.0",
|
||||
"@aws-sdk/client-sts": "3.458.0",
|
||||
"@aws-sdk/credential-provider-cognito-identity": "3.458.0",
|
||||
"@aws-sdk/credential-provider-env": "3.451.0",
|
||||
"@aws-sdk/credential-provider-http": "3.451.0",
|
||||
"@aws-sdk/credential-provider-ini": "3.458.0",
|
||||
"@aws-sdk/credential-provider-node": "3.458.0",
|
||||
"@aws-sdk/credential-provider-process": "3.451.0",
|
||||
"@aws-sdk/credential-provider-sso": "3.458.0",
|
||||
"@aws-sdk/credential-provider-web-identity": "3.451.0",
|
||||
"@aws-sdk/types": "3.451.0",
|
||||
"@smithy/credential-provider-imds": "^2.0.0",
|
||||
"@smithy/property-provider": "^2.0.0",
|
||||
"@smithy/types": "^2.5.0",
|
||||
"tslib": "^2.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/client-sso": {
|
||||
"version": "3.458.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.458.0.tgz",
|
||||
"integrity": "sha512-GTiIH4So0PTU5oAldtOacO/cBonu4NWGfvN3+BUaAb5Ybb9yQiwcO08PS/pXZ0cw4UTVK+zr22WVLR0reomUTA==",
|
||||
"dependencies": {
|
||||
"@aws-crypto/sha256-browser": "3.0.0",
|
||||
"@aws-crypto/sha256-js": "3.0.0",
|
||||
"@aws-sdk/core": "3.451.0",
|
||||
"@aws-sdk/middleware-host-header": "3.451.0",
|
||||
"@aws-sdk/middleware-logger": "3.451.0",
|
||||
"@aws-sdk/middleware-recursion-detection": "3.451.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.451.0",
|
||||
"@aws-sdk/region-config-resolver": "3.451.0",
|
||||
"@aws-sdk/types": "3.451.0",
|
||||
"@aws-sdk/util-endpoints": "3.451.0",
|
||||
"@aws-sdk/util-user-agent-browser": "3.451.0",
|
||||
"@aws-sdk/util-user-agent-node": "3.451.0",
|
||||
"@smithy/config-resolver": "^2.0.18",
|
||||
"@smithy/fetch-http-handler": "^2.2.6",
|
||||
"@smithy/hash-node": "^2.0.15",
|
||||
"@smithy/invalid-dependency": "^2.0.13",
|
||||
"@smithy/middleware-content-length": "^2.0.15",
|
||||
"@smithy/middleware-endpoint": "^2.2.0",
|
||||
"@smithy/middleware-retry": "^2.0.20",
|
||||
"@smithy/middleware-serde": "^2.0.13",
|
||||
"@smithy/middleware-stack": "^2.0.7",
|
||||
"@smithy/node-config-provider": "^2.1.5",
|
||||
"@smithy/node-http-handler": "^2.1.9",
|
||||
"@smithy/protocol-http": "^3.0.9",
|
||||
"@smithy/smithy-client": "^2.1.15",
|
||||
"@smithy/types": "^2.5.0",
|
||||
"@smithy/url-parser": "^2.0.13",
|
||||
"@smithy/util-base64": "^2.0.1",
|
||||
"@smithy/util-body-length-browser": "^2.0.0",
|
||||
"@smithy/util-body-length-node": "^2.1.0",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.19",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.25",
|
||||
"@smithy/util-endpoints": "^1.0.4",
|
||||
"@smithy/util-retry": "^2.0.6",
|
||||
"@smithy/util-utf8": "^2.0.2",
|
||||
"tslib": "^2.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/client-sts": {
|
||||
"version": "3.458.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.458.0.tgz",
|
||||
"integrity": "sha512-c34zmQxcP7AM62S7SAiOztxTaHJOG+0aIb2GYUeag5sQzG7FnGGwZ7hA0ggCQc7iMkDL9UYHKKtLs1ynQenW+A==",
|
||||
"dependencies": {
|
||||
"@aws-crypto/sha256-browser": "3.0.0",
|
||||
"@aws-crypto/sha256-js": "3.0.0",
|
||||
"@aws-sdk/core": "3.451.0",
|
||||
"@aws-sdk/credential-provider-node": "3.458.0",
|
||||
"@aws-sdk/middleware-host-header": "3.451.0",
|
||||
"@aws-sdk/middleware-logger": "3.451.0",
|
||||
"@aws-sdk/middleware-recursion-detection": "3.451.0",
|
||||
"@aws-sdk/middleware-sdk-sts": "3.451.0",
|
||||
"@aws-sdk/middleware-signing": "3.451.0",
|
||||
"@aws-sdk/middleware-user-agent": "3.451.0",
|
||||
"@aws-sdk/region-config-resolver": "3.451.0",
|
||||
"@aws-sdk/types": "3.451.0",
|
||||
"@aws-sdk/util-endpoints": "3.451.0",
|
||||
"@aws-sdk/util-user-agent-browser": "3.451.0",
|
||||
"@aws-sdk/util-user-agent-node": "3.451.0",
|
||||
"@smithy/config-resolver": "^2.0.18",
|
||||
"@smithy/fetch-http-handler": "^2.2.6",
|
||||
"@smithy/hash-node": "^2.0.15",
|
||||
"@smithy/invalid-dependency": "^2.0.13",
|
||||
"@smithy/middleware-content-length": "^2.0.15",
|
||||
"@smithy/middleware-endpoint": "^2.2.0",
|
||||
"@smithy/middleware-retry": "^2.0.20",
|
||||
"@smithy/middleware-serde": "^2.0.13",
|
||||
"@smithy/middleware-stack": "^2.0.7",
|
||||
"@smithy/node-config-provider": "^2.1.5",
|
||||
"@smithy/node-http-handler": "^2.1.9",
|
||||
"@smithy/protocol-http": "^3.0.9",
|
||||
"@smithy/smithy-client": "^2.1.15",
|
||||
"@smithy/types": "^2.5.0",
|
||||
"@smithy/url-parser": "^2.0.13",
|
||||
"@smithy/util-base64": "^2.0.1",
|
||||
"@smithy/util-body-length-browser": "^2.0.0",
|
||||
"@smithy/util-body-length-node": "^2.1.0",
|
||||
"@smithy/util-defaults-mode-browser": "^2.0.19",
|
||||
"@smithy/util-defaults-mode-node": "^2.0.25",
|
||||
"@smithy/util-endpoints": "^1.0.4",
|
||||
"@smithy/util-retry": "^2.0.6",
|
||||
"@smithy/util-utf8": "^2.0.2",
|
||||
"fast-xml-parser": "4.2.5",
|
||||
"tslib": "^2.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-ini": {
|
||||
"version": "3.458.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.458.0.tgz",
|
||||
"integrity": "sha512-M293Im4k6QrKlWaPfElYKRPlBXMaXbkqns4YgLGBpabfIVIZEguGj/kVm7gkEKdt8rCHbBqqXgsQrtQbfDkkBQ==",
|
||||
"dependencies": {
|
||||
"@aws-sdk/credential-provider-env": "3.451.0",
|
||||
"@aws-sdk/credential-provider-process": "3.451.0",
|
||||
"@aws-sdk/credential-provider-sso": "3.458.0",
|
||||
"@aws-sdk/credential-provider-web-identity": "3.451.0",
|
||||
"@aws-sdk/types": "3.451.0",
|
||||
"@smithy/credential-provider-imds": "^2.0.0",
|
||||
"@smithy/property-provider": "^2.0.0",
|
||||
"@smithy/shared-ini-file-loader": "^2.0.6",
|
||||
"@smithy/types": "^2.5.0",
|
||||
"tslib": "^2.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-node": {
|
||||
"version": "3.458.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.458.0.tgz",
|
||||
"integrity": "sha512-psNXL3/GAoDAqRusdy5umglXTOvxtE9XQTtmOPn4O/H2NpXqe+cB2/W+H+uikgyyck9Lu4DwMk+voFz2Hl8znw==",
|
||||
"dependencies": {
|
||||
"@aws-sdk/credential-provider-env": "3.451.0",
|
||||
"@aws-sdk/credential-provider-ini": "3.458.0",
|
||||
"@aws-sdk/credential-provider-process": "3.451.0",
|
||||
"@aws-sdk/credential-provider-sso": "3.458.0",
|
||||
"@aws-sdk/credential-provider-web-identity": "3.451.0",
|
||||
"@aws-sdk/types": "3.451.0",
|
||||
"@smithy/credential-provider-imds": "^2.0.0",
|
||||
"@smithy/property-provider": "^2.0.0",
|
||||
"@smithy/shared-ini-file-loader": "^2.0.6",
|
||||
"@smithy/types": "^2.5.0",
|
||||
"tslib": "^2.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-sso": {
|
||||
"version": "3.458.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.458.0.tgz",
|
||||
"integrity": "sha512-dyRAKvMLF9Ur6M0YtWSU4E5YDVEFO7Rfg5FOTk+Lwnk24UQ0RoHg3c6HZ8sPTNx16cgx4YY68UYi/HTZf56z2g==",
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-sso": "3.458.0",
|
||||
"@aws-sdk/token-providers": "3.451.0",
|
||||
"@aws-sdk/types": "3.451.0",
|
||||
"@smithy/property-provider": "^2.0.0",
|
||||
"@smithy/shared-ini-file-loader": "^2.0.6",
|
||||
"@smithy/types": "^2.5.0",
|
||||
"tslib": "^2.5.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@aws-sdk/endpoint-cache": {
|
||||
"version": "3.310.0",
|
||||
"resolved": "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.310.0.tgz",
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
"@aws-sdk/client-ec2": "^3.427.0",
|
||||
"@aws-sdk/client-s3": "^3.427.0",
|
||||
"@aws-sdk/client-ssm": "^3.427.0",
|
||||
"@aws-sdk/credential-providers": "^3.458.0",
|
||||
"@flatten-js/interval-tree": "^1.1.1",
|
||||
"@fortawesome/fontawesome-free": "^6.4.2",
|
||||
"@orchidjs/sifter": "^1.0.3",
|
||||
|
||||
27
test/_setup-fake-aws.ts
Normal file
27
test/_setup-fake-aws.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
// Copyright (c) 2023, Compiler Explorer Authors
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright notice,
|
||||
// this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above copyright
|
||||
// notice, this list of conditions and the following disclaimer in the
|
||||
// documentation and/or other materials provided with the distribution.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
// POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
import {fakeCredentialsForTest} from '../lib/aws.js';
|
||||
|
||||
fakeCredentialsForTest();
|
||||
Reference in New Issue
Block a user