UNPKG

@goldstack/template-s3

Version:

Building blocks for linking a package to an AWS S3 bucket.

75 lines 3.87 kB
"use strict"; /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.resetMockS3 = exports.getBucketName = exports.getSignedUrlS3 = exports.connect = void 0; const client_s3_1 = require("@aws-sdk/client-s3"); const credential_providers_1 = require("@aws-sdk/credential-providers"); const s3_request_presigner_1 = require("@aws-sdk/s3-request-presigner"); const utils_esbuild_1 = require("@goldstack/utils-esbuild"); const utils_log_1 = require("@goldstack/utils-log"); const utils_package_config_embedded_1 = require("@goldstack/utils-package-config-embedded"); const assert_1 = __importDefault(require("assert")); const connectLocal_1 = require("./connectLocal"); Object.defineProperty(exports, "resetMockS3", { enumerable: true, get: function () { return connectLocal_1.resetMockS3; } }); const connect = async (goldstackConfig, packageSchema, deploymentName) => { const packageConfig = new utils_package_config_embedded_1.EmbeddedPackageConfig({ goldstackJson: goldstackConfig, packageSchema, }); if (!deploymentName) { (0, assert_1.default)(process.env.GOLDSTACK_DEPLOYMENT, `Cannot connect to S3 bucket for package ${goldstackConfig.name}. Either specify a deploymentName or ensure environment variable GOLDSTACK_DEPLOYMENT is defined.`); deploymentName = process.env.GOLDSTACK_DEPLOYMENT; } if (deploymentName === 'local') { // only require this for local testing (0, utils_log_1.debug)(`connect() using mock S3 for package: ${goldstackConfig.name}, deployment: ${deploymentName}`); return (0, connectLocal_1.getMockedS3)(goldstackConfig); } else { (0, utils_log_1.debug)(`connect() using real S3 for package: ${goldstackConfig.name}, deployment: ${deploymentName}`); (0, connectLocal_1.resetMocksIfRequired)(deploymentName, goldstackConfig); } const deployment = packageConfig.getDeployment(deploymentName); let awsUser; if (process.env.AWS_ACCESS_KEY_ID) { awsUser = (0, credential_providers_1.fromEnv)(); } else { // load this in lazy to enable omitting the dependency when bundling lambdas const infraAWSLib = require((0, utils_esbuild_1.excludeInBundle)('@goldstack/infra-aws')); awsUser = await infraAWSLib.getAWSUser(deployment.awsUser); } const s3 = new client_s3_1.S3Client({ credentials: awsUser, region: deployment.awsRegion, }); return s3; }; exports.connect = connect; const getSignedUrlS3 = async (client, command, options = {}) => { if ((0, connectLocal_1.isMocked)(client)) { return 'http://localhost/mockedAWSS3'; } return (0, s3_request_presigner_1.getSignedUrl)(client, command, options); }; exports.getSignedUrlS3 = getSignedUrlS3; const getBucketName = async (goldstackConfig, packageSchema, deploymentName) => { const packageConfig = new utils_package_config_embedded_1.EmbeddedPackageConfig({ goldstackJson: goldstackConfig, packageSchema, }); if (!deploymentName) { (0, assert_1.default)(process.env.GOLDSTACK_DEPLOYMENT, `Cannot get S3 bucket name for package ${goldstackConfig.name}. Either specify a deploymentName or ensure environment variable GOLDSTACK_DEPLOYMENT is defined.`); deploymentName = process.env.GOLDSTACK_DEPLOYMENT; } if (deploymentName === 'local') { return (0, connectLocal_1.getLocalBucketName)(goldstackConfig); } const deployment = packageConfig.getDeployment(deploymentName); return deployment.configuration.bucketName; }; exports.getBucketName = getBucketName; //# sourceMappingURL=templateS3Bucket.js.map