UNPKG

aws-cdk

Version:

CDK Toolkit, the command line tool for CDK apps

41 lines 6.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isHotswappableStateMachineChange = void 0; const common_1 = require("./common"); async function isHotswappableStateMachineChange(logicalId, change, evaluateCfnTemplate) { if (change.newValue.Type !== 'AWS::StepFunctions::StateMachine') { return []; } const ret = []; const classifiedChanges = (0, common_1.classifyChanges)(change, ['DefinitionString']); classifiedChanges.reportNonHotswappablePropertyChanges(ret); const namesOfHotswappableChanges = Object.keys(classifiedChanges.hotswappableProps); if (namesOfHotswappableChanges.length > 0) { const stateMachineNameInCfnTemplate = change.newValue?.Properties?.StateMachineName; const stateMachineArn = stateMachineNameInCfnTemplate ? await evaluateCfnTemplate.evaluateCfnExpression({ 'Fn::Sub': 'arn:${AWS::Partition}:states:${AWS::Region}:${AWS::AccountId}:stateMachine:' + stateMachineNameInCfnTemplate, }) : await evaluateCfnTemplate.findPhysicalNameFor(logicalId); ret.push({ hotswappable: true, resourceType: change.newValue.Type, propsChanged: namesOfHotswappableChanges, service: 'stepfunctions-service', resourceNames: [`${change.newValue.Type} '${stateMachineArn?.split(':')[6]}'`], apply: async (sdk) => { if (!stateMachineArn) { return; } // not passing the optional properties leaves them unchanged await sdk.stepFunctions().updateStateMachine({ stateMachineArn, definition: await evaluateCfnTemplate.evaluateCfnExpression(change.propertyUpdates.DefinitionString.newValue), }).promise(); }, }); } return ret; } exports.isHotswappableStateMachineChange = isHotswappableStateMachineChange; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcGZ1bmN0aW9ucy1zdGF0ZS1tYWNoaW5lcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0ZXBmdW5jdGlvbnMtc3RhdGUtbWFjaGluZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQTZGO0FBSXRGLEtBQUssVUFBVSxnQ0FBZ0MsQ0FDcEQsU0FBaUIsRUFBRSxNQUFtQyxFQUFFLG1CQUFtRDtJQUUzRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLGtDQUFrQyxFQUFFO1FBQy9ELE9BQU8sRUFBRSxDQUFDO0tBQ1g7SUFDRCxNQUFNLEdBQUcsR0FBd0IsRUFBRSxDQUFDO0lBQ3BDLE1BQU0saUJBQWlCLEdBQUcsSUFBQSx3QkFBZSxFQUFDLE1BQU0sRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztJQUN4RSxpQkFBaUIsQ0FBQyxvQ0FBb0MsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUU1RCxNQUFNLDBCQUEwQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNwRixJQUFJLDBCQUEwQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDekMsTUFBTSw2QkFBNkIsR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQztRQUNwRixNQUFNLGVBQWUsR0FBRyw2QkFBNkI7WUFDbkQsQ0FBQyxDQUFDLE1BQU0sbUJBQW1CLENBQUMscUJBQXFCLENBQUM7Z0JBQ2hELFNBQVMsRUFBRSw2RUFBNkUsR0FBRyw2QkFBNkI7YUFDekgsQ0FBQztZQUNGLENBQUMsQ0FBQyxNQUFNLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdELEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDUCxZQUFZLEVBQUUsSUFBSTtZQUNsQixZQUFZLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJO1lBQ2xDLFlBQVksRUFBRSwwQkFBMEI7WUFDeEMsT0FBTyxFQUFFLHVCQUF1QjtZQUNoQyxhQUFhLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLGVBQWUsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUM5RSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQVMsRUFBRSxFQUFFO2dCQUN6QixJQUFJLENBQUMsZUFBZSxFQUFFO29CQUNwQixPQUFPO2lCQUNSO2dCQUVELDREQUE0RDtnQkFDNUQsTUFBTSxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUMsa0JBQWtCLENBQUM7b0JBQzNDLGVBQWU7b0JBQ2YsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7aUJBQzlHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQXZDRCw0RUF1Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VIb3Rzd2FwUmVzdWx0LCBjbGFzc2lmeUNoYW5nZXMsIEhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZSB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IElTREsgfSBmcm9tICcuLi9hd3MtYXV0aCc7XG5pbXBvcnQgeyBFdmFsdWF0ZUNsb3VkRm9ybWF0aW9uVGVtcGxhdGUgfSBmcm9tICcuLi9ldmFsdWF0ZS1jbG91ZGZvcm1hdGlvbi10ZW1wbGF0ZSc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc0hvdHN3YXBwYWJsZVN0YXRlTWFjaGluZUNoYW5nZShcbiAgbG9naWNhbElkOiBzdHJpbmcsIGNoYW5nZTogSG90c3dhcHBhYmxlQ2hhbmdlQ2FuZGlkYXRlLCBldmFsdWF0ZUNmblRlbXBsYXRlOiBFdmFsdWF0ZUNsb3VkRm9ybWF0aW9uVGVtcGxhdGUsXG4pOiBQcm9taXNlPENoYW5nZUhvdHN3YXBSZXN1bHQ+IHtcbiAgaWYgKGNoYW5nZS5uZXdWYWx1ZS5UeXBlICE9PSAnQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmUnKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGNvbnN0IHJldDogQ2hhbmdlSG90c3dhcFJlc3VsdCA9IFtdO1xuICBjb25zdCBjbGFzc2lmaWVkQ2hhbmdlcyA9IGNsYXNzaWZ5Q2hhbmdlcyhjaGFuZ2UsIFsnRGVmaW5pdGlvblN0cmluZyddKTtcbiAgY2xhc3NpZmllZENoYW5nZXMucmVwb3J0Tm9uSG90c3dhcHBhYmxlUHJvcGVydHlDaGFuZ2VzKHJldCk7XG5cbiAgY29uc3QgbmFtZXNPZkhvdHN3YXBwYWJsZUNoYW5nZXMgPSBPYmplY3Qua2V5cyhjbGFzc2lmaWVkQ2hhbmdlcy5ob3Rzd2FwcGFibGVQcm9wcyk7XG4gIGlmIChuYW1lc09mSG90c3dhcHBhYmxlQ2hhbmdlcy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3Qgc3RhdGVNYWNoaW5lTmFtZUluQ2ZuVGVtcGxhdGUgPSBjaGFuZ2UubmV3VmFsdWU/LlByb3BlcnRpZXM/LlN0YXRlTWFjaGluZU5hbWU7XG4gICAgY29uc3Qgc3RhdGVNYWNoaW5lQXJuID0gc3RhdGVNYWNoaW5lTmFtZUluQ2ZuVGVtcGxhdGVcbiAgICAgID8gYXdhaXQgZXZhbHVhdGVDZm5UZW1wbGF0ZS5ldmFsdWF0ZUNmbkV4cHJlc3Npb24oe1xuICAgICAgICAnRm46OlN1Yic6ICdhcm46JHtBV1M6OlBhcnRpdGlvbn06c3RhdGVzOiR7QVdTOjpSZWdpb259OiR7QVdTOjpBY2NvdW50SWR9OnN0YXRlTWFjaGluZTonICsgc3RhdGVNYWNoaW5lTmFtZUluQ2ZuVGVtcGxhdGUsXG4gICAgICB9KVxuICAgICAgOiBhd2FpdCBldmFsdWF0ZUNmblRlbXBsYXRlLmZpbmRQaHlzaWNhbE5hbWVGb3IobG9naWNhbElkKTtcbiAgICByZXQucHVzaCh7XG4gICAgICBob3Rzd2FwcGFibGU6IHRydWUsXG4gICAgICByZXNvdXJjZVR5cGU6IGNoYW5nZS5uZXdWYWx1ZS5UeXBlLFxuICAgICAgcHJvcHNDaGFuZ2VkOiBuYW1lc09mSG90c3dhcHBhYmxlQ2hhbmdlcyxcbiAgICAgIHNlcnZpY2U6ICdzdGVwZnVuY3Rpb25zLXNlcnZpY2UnLFxuICAgICAgcmVzb3VyY2VOYW1lczogW2Ake2NoYW5nZS5uZXdWYWx1ZS5UeXBlfSAnJHtzdGF0ZU1hY2hpbmVBcm4/LnNwbGl0KCc6JylbNl19J2BdLFxuICAgICAgYXBwbHk6IGFzeW5jIChzZGs6IElTREspID0+IHtcbiAgICAgICAgaWYgKCFzdGF0ZU1hY2hpbmVBcm4pIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBub3QgcGFzc2luZyB0aGUgb3B0aW9uYWwgcHJvcGVydGllcyBsZWF2ZXMgdGhlbSB1bmNoYW5nZWRcbiAgICAgICAgYXdhaXQgc2RrLnN0ZXBGdW5jdGlvbnMoKS51cGRhdGVTdGF0ZU1hY2hpbmUoe1xuICAgICAgICAgIHN0YXRlTWFjaGluZUFybixcbiAgICAgICAgICBkZWZpbml0aW9uOiBhd2FpdCBldmFsdWF0ZUNmblRlbXBsYXRlLmV2YWx1YXRlQ2ZuRXhwcmVzc2lvbihjaGFuZ2UucHJvcGVydHlVcGRhdGVzLkRlZmluaXRpb25TdHJpbmcubmV3VmFsdWUpLFxuICAgICAgICB9KS5wcm9taXNlKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cbiJdfQ==