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.

33 lines (32 loc) 1.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fromTokenFile = void 0; const client_1 = require("@aws-sdk/core/client"); const property_provider_1 = require("@smithy/property-provider"); const fs_1 = require("fs"); const fromWebToken_1 = require("./fromWebToken"); const ENV_TOKEN_FILE = "AWS_WEB_IDENTITY_TOKEN_FILE"; const ENV_ROLE_ARN = "AWS_ROLE_ARN"; const ENV_ROLE_SESSION_NAME = "AWS_ROLE_SESSION_NAME"; const fromTokenFile = (init = {}) => async () => { init.logger?.debug("@aws-sdk/credential-provider-web-identity - fromTokenFile"); const webIdentityTokenFile = init?.webIdentityTokenFile ?? process.env[ENV_TOKEN_FILE]; const roleArn = init?.roleArn ?? process.env[ENV_ROLE_ARN]; const roleSessionName = init?.roleSessionName ?? process.env[ENV_ROLE_SESSION_NAME]; if (!webIdentityTokenFile || !roleArn) { throw new property_provider_1.CredentialsProviderError("Web identity configuration not specified", { logger: init.logger, }); } const credentials = await (0, fromWebToken_1.fromWebToken)({ ...init, webIdentityToken: (0, fs_1.readFileSync)(webIdentityTokenFile, { encoding: "ascii" }), roleArn, roleSessionName, })(); if (webIdentityTokenFile === process.env[ENV_TOKEN_FILE]) { (0, client_1.setCredentialFeature)(credentials, "CREDENTIALS_ENV_VARS_STS_WEB_ID_TOKEN", "h"); } return credentials; }; exports.fromTokenFile = fromTokenFile;