UNPKG

aws-spa

Version:

A no-brainer script to deploy a single page app on AWS

95 lines (72 loc) 3.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.upsertOriginAccessControl = exports.getOriginAccessControlName = exports.getExistingOAC = exports.createOAC = exports.cleanExistingOriginAccessControl = void 0; var _awsServices = require("../aws-services"); var _logger = require("../logger"); const getExistingOAC = async originAccessControlName => { const { OriginAccessControlList } = await _awsServices.cloudfront.listOriginAccessControls(); const existingOACSummary = OriginAccessControlList?.Items?.find(oac => oac.Name === originAccessControlName); if (!existingOACSummary) { return null; } const oac = await _awsServices.cloudfront.getOriginAccessControl({ Id: existingOACSummary.Id }); return { originAccessControl: oac.OriginAccessControl, ETag: oac.ETag }; }; exports.getExistingOAC = getExistingOAC; const createOAC = async (originAccessControlName, domainName, distributionId) => { try { _logger.logger.info(`[Cloudfront] ✏️ Creating an Origin Access Control for "${domainName}"...`); const oac = await _awsServices.cloudfront.createOriginAccessControl({ OriginAccessControlConfig: { Name: originAccessControlName, OriginAccessControlOriginType: 's3', SigningBehavior: 'always', SigningProtocol: 'sigv4', Description: `OAC used by ${domainName} associated to distributionId: ${distributionId}` } }); return { originAccessControl: oac.OriginAccessControl, ETag: oac.ETag }; } catch (error) { throw error; } }; exports.createOAC = createOAC; const getOriginAccessControlName = (domainName, distributionId) => `${domainName}-${distributionId}`; exports.getOriginAccessControlName = getOriginAccessControlName; const upsertOriginAccessControl = async (domainName, distributionId) => { _logger.logger.info(`[Cloudfront] ✨ Upserting Origin Access Control for "${domainName}"...`); const originAccessControlName = getOriginAccessControlName(domainName, distributionId); const existingOAC = await getExistingOAC(originAccessControlName); if (existingOAC !== null) { _logger.logger.info(`[Cloudfront] ✅ Origin Access Control "${originAccessControlName}" already exists.`); return existingOAC; } return await createOAC(originAccessControlName, domainName, distributionId); }; exports.upsertOriginAccessControl = upsertOriginAccessControl; const cleanExistingOriginAccessControl = async (domainName, distributionId) => { const originAccessControlName = getOriginAccessControlName(domainName, distributionId); const existingOAC = await getExistingOAC(originAccessControlName); if (existingOAC === null) { return; } _logger.logger.info(`[Cloudfront] 🧹 Deleting Origin Access Control "${originAccessControlName}"...`); await _awsServices.cloudfront.deleteOriginAccessControl({ Id: existingOAC.originAccessControl.Id, IfMatch: existingOAC.ETag }); return; }; exports.cleanExistingOriginAccessControl = cleanExistingOriginAccessControl;