@goldstack/template-s3
Version:
Building blocks for linking a package to an AWS S3 bucket.
71 lines • 3.41 kB
JavaScript
;
/* 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.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_package_config_embedded_1 = require("@goldstack/utils-package-config-embedded");
const assert_1 = __importDefault(require("assert"));
const connectLocal_1 = require("./connectLocal");
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
return (0, connectLocal_1.getMockedS3)(goldstackConfig);
}
else {
(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