UNPKG

@aws-cdk/core

Version:

AWS Cloud Development Kit Core Library

60 lines 8.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const cfn_element_1 = require("./cfn-element"); const util_1 = require("./util"); /** * The Rules that define template constraints in an AWS Service Catalog portfolio describe when * end users can use the template and which values they can specify for parameters that are declared * in the AWS CloudFormation template used to create the product they are attempting to use. Rules * are useful for preventing end users from inadvertently specifying an incorrect value. * For example, you can add a rule to verify whether end users specified a valid subnet in a * given VPC or used m1.small instance types for test environments. AWS CloudFormation uses * rules to validate parameter values before it creates the resources for the product. * * A rule can include a RuleCondition property and must include an Assertions property. * For each rule, you can define only one rule condition; you can define one or more asserts within the Assertions property. * You define a rule condition and assertions by using rule-specific intrinsic functions. * * @link https://docs.aws.amazon.com/servicecatalog/latest/adminguide/reference-template_constraint_rules.html */ class CfnRule extends cfn_element_1.CfnRefElement { /** * Creates and adds a rule. * @param scope The parent construct. * @param props The rule props. */ constructor(scope, id, props) { super(scope, id); this.ruleCondition = props && props.ruleCondition; this.assertions = props && props.assertions; } /** * Adds an assertion to the rule. * @param condition The expression to evaluation. * @param description The description of the assertion. */ addAssertion(condition, description) { if (!this.assertions) { this.assertions = []; } this.assertions.push({ assert: condition, assertDescription: description }); } /** * @internal */ _toCloudFormation() { return { Rules: { [this.logicalId]: { RuleCondition: this.ruleCondition, Assertions: util_1.capitalizePropertyNames(this, this.assertions) } } }; } } exports.CfnRule = CfnRule; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZuLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZm4tcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLCtDQUE4QztBQUU5QyxpQ0FBaUQ7QUF3Q2pEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBYSxPQUFRLFNBQVEsMkJBQWE7SUFJeEM7Ozs7T0FJRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ2xELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxZQUFZLENBQUMsU0FBa0MsRUFBRSxXQUFtQjtRQUN6RSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztTQUN0QjtRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ25CLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLGlCQUFpQixFQUFFLFdBQVc7U0FDL0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksaUJBQWlCO1FBQ3RCLE9BQU87WUFDTCxLQUFLLEVBQUU7Z0JBQ0wsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQ2hCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtvQkFDakMsVUFBVSxFQUFFLDhCQUF1QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO2lCQUMzRDthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTdDRCwwQkE2Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQ2ZuQ29uZGl0aW9uRXhwcmVzc2lvbiB9IGZyb20gJy4vY2ZuLWNvbmRpdGlvbic7XG5pbXBvcnQgeyBDZm5SZWZFbGVtZW50IH0gZnJvbSAnLi9jZm4tZWxlbWVudCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICcuL2NvbnN0cnVjdC1jb21wYXQnO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZVByb3BlcnR5TmFtZXMgfSBmcm9tICcuL3V0aWwnO1xuXG4vKipcbiAqIEEgcnVsZSBjYW4gaW5jbHVkZSBhIFJ1bGVDb25kaXRpb24gcHJvcGVydHkgYW5kIG11c3QgaW5jbHVkZSBhbiBBc3NlcnRpb25zIHByb3BlcnR5LlxuICogRm9yIGVhY2ggcnVsZSwgeW91IGNhbiBkZWZpbmUgb25seSBvbmUgcnVsZSBjb25kaXRpb247IHlvdSBjYW4gZGVmaW5lIG9uZSBvciBtb3JlIGFzc2VydHMgd2l0aGluIHRoZSBBc3NlcnRpb25zIHByb3BlcnR5LlxuICogWW91IGRlZmluZSBhIHJ1bGUgY29uZGl0aW9uIGFuZCBhc3NlcnRpb25zIGJ5IHVzaW5nIHJ1bGUtc3BlY2lmaWMgaW50cmluc2ljIGZ1bmN0aW9ucy5cbiAqXG4gKiBZb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIHJ1bGUtc3BlY2lmaWMgaW50cmluc2ljIGZ1bmN0aW9ucyB0byBkZWZpbmUgcnVsZSBjb25kaXRpb25zIGFuZCBhc3NlcnRpb25zOlxuICpcbiAqICBGbjo6QW5kXG4gKiAgRm46OkNvbnRhaW5zXG4gKiAgRm46OkVhY2hNZW1iZXJFcXVhbHNcbiAqICBGbjo6RWFjaE1lbWJlckluXG4gKiAgRm46OkVxdWFsc1xuICogIEZuOjpJZlxuICogIEZuOjpOb3RcbiAqICBGbjo6T3JcbiAqICBGbjo6UmVmQWxsXG4gKiAgRm46OlZhbHVlT2ZcbiAqICBGbjo6VmFsdWVPZkFsbFxuICpcbiAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZXJ2aWNlY2F0YWxvZy9sYXRlc3QvYWRtaW5ndWlkZS9yZWZlcmVuY2UtdGVtcGxhdGVfY29uc3RyYWludF9ydWxlcy5odG1sXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2ZuUnVsZVByb3BzIHtcbiAgLyoqXG4gICAqIElmIHRoZSBydWxlIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gZmFsc2UsIHRoZSBydWxlIGRvZXNuJ3QgdGFrZSBlZmZlY3QuXG4gICAqIElmIHRoZSBmdW5jdGlvbiBpbiB0aGUgcnVsZSBjb25kaXRpb24gZXZhbHVhdGVzIHRvIHRydWUsIGV4cHJlc3Npb25zIGluIGVhY2ggYXNzZXJ0IGFyZSBldmFsdWF0ZWQgYW5kIGFwcGxpZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gUnVsZSdzIGFzc2VydGlvbnMgd2lsbCBhbHdheXMgdGFrZSBlZmZlY3QuXG4gICAqL1xuICByZWFkb25seSBydWxlQ29uZGl0aW9uPzogSUNmbkNvbmRpdGlvbkV4cHJlc3Npb247XG5cbiAgLyoqXG4gICAqIEFzc2VydGlvbnMgd2hpY2ggZGVmaW5lIHRoZSBydWxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGFzc2VydGlvbnMgZm9yIHRoZSBydWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXJ0aW9ucz86IENmblJ1bGVBc3NlcnRpb25bXTtcbn1cblxuLyoqXG4gKiBUaGUgUnVsZXMgdGhhdCBkZWZpbmUgdGVtcGxhdGUgY29uc3RyYWludHMgaW4gYW4gQVdTIFNlcnZpY2UgQ2F0YWxvZyBwb3J0Zm9saW8gZGVzY3JpYmUgd2hlblxuICogZW5kIHVzZXJzIGNhbiB1c2UgdGhlIHRlbXBsYXRlIGFuZCB3aGljaCB2YWx1ZXMgdGhleSBjYW4gc3BlY2lmeSBmb3IgcGFyYW1ldGVycyB0aGF0IGFyZSBkZWNsYXJlZFxuICogaW4gdGhlIEFXUyBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZSB1c2VkIHRvIGNyZWF0ZSB0aGUgcHJvZHVjdCB0aGV5IGFyZSBhdHRlbXB0aW5nIHRvIHVzZS4gUnVsZXNcbiAqIGFyZSB1c2VmdWwgZm9yIHByZXZlbnRpbmcgZW5kIHVzZXJzIGZyb20gaW5hZHZlcnRlbnRseSBzcGVjaWZ5aW5nIGFuIGluY29ycmVjdCB2YWx1ZS5cbiAqIEZvciBleGFtcGxlLCB5b3UgY2FuIGFkZCBhIHJ1bGUgdG8gdmVyaWZ5IHdoZXRoZXIgZW5kIHVzZXJzIHNwZWNpZmllZCBhIHZhbGlkIHN1Ym5ldCBpbiBhXG4gKiBnaXZlbiBWUEMgb3IgdXNlZCBtMS5zbWFsbCBpbnN0YW5jZSB0eXBlcyBmb3IgdGVzdCBlbnZpcm9ubWVudHMuIEFXUyBDbG91ZEZvcm1hdGlvbiB1c2VzXG4gKiBydWxlcyB0byB2YWxpZGF0ZSBwYXJhbWV0ZXIgdmFsdWVzIGJlZm9yZSBpdCBjcmVhdGVzIHRoZSByZXNvdXJjZXMgZm9yIHRoZSBwcm9kdWN0LlxuICpcbiAqIEEgcnVsZSBjYW4gaW5jbHVkZSBhIFJ1bGVDb25kaXRpb24gcHJvcGVydHkgYW5kIG11c3QgaW5jbHVkZSBhbiBBc3NlcnRpb25zIHByb3BlcnR5LlxuICogRm9yIGVhY2ggcnVsZSwgeW91IGNhbiBkZWZpbmUgb25seSBvbmUgcnVsZSBjb25kaXRpb247IHlvdSBjYW4gZGVmaW5lIG9uZSBvciBtb3JlIGFzc2VydHMgd2l0aGluIHRoZSBBc3NlcnRpb25zIHByb3BlcnR5LlxuICogWW91IGRlZmluZSBhIHJ1bGUgY29uZGl0aW9uIGFuZCBhc3NlcnRpb25zIGJ5IHVzaW5nIHJ1bGUtc3BlY2lmaWMgaW50cmluc2ljIGZ1bmN0aW9ucy5cbiAqXG4gKiBAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZWNhdGFsb2cvbGF0ZXN0L2FkbWluZ3VpZGUvcmVmZXJlbmNlLXRlbXBsYXRlX2NvbnN0cmFpbnRfcnVsZXMuaHRtbFxuICovXG5leHBvcnQgY2xhc3MgQ2ZuUnVsZSBleHRlbmRzIENmblJlZkVsZW1lbnQge1xuICBwcml2YXRlIHJ1bGVDb25kaXRpb24/OiBJQ2ZuQ29uZGl0aW9uRXhwcmVzc2lvbjtcbiAgcHJpdmF0ZSBhc3NlcnRpb25zPzogQ2ZuUnVsZUFzc2VydGlvbltdO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuZCBhZGRzIGEgcnVsZS5cbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgY29uc3RydWN0LlxuICAgKiBAcGFyYW0gcHJvcHMgVGhlIHJ1bGUgcHJvcHMuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IENmblJ1bGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnJ1bGVDb25kaXRpb24gPSBwcm9wcyAmJiBwcm9wcy5ydWxlQ29uZGl0aW9uO1xuICAgIHRoaXMuYXNzZXJ0aW9ucyA9IHByb3BzICYmIHByb3BzLmFzc2VydGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBhc3NlcnRpb24gdG8gdGhlIHJ1bGUuXG4gICAqIEBwYXJhbSBjb25kaXRpb24gVGhlIGV4cHJlc3Npb24gdG8gZXZhbHVhdGlvbi5cbiAgICogQHBhcmFtIGRlc2NyaXB0aW9uIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYXNzZXJ0aW9uLlxuICAgKi9cbiAgcHVibGljIGFkZEFzc2VydGlvbihjb25kaXRpb246IElDZm5Db25kaXRpb25FeHByZXNzaW9uLCBkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLmFzc2VydGlvbnMpIHtcbiAgICAgIHRoaXMuYXNzZXJ0aW9ucyA9IFtdO1xuICAgIH1cblxuICAgIHRoaXMuYXNzZXJ0aW9ucy5wdXNoKHtcbiAgICAgIGFzc2VydDogY29uZGl0aW9uLFxuICAgICAgYXNzZXJ0RGVzY3JpcHRpb246IGRlc2NyaXB0aW9uXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3RvQ2xvdWRGb3JtYXRpb24oKTogb2JqZWN0IHtcbiAgICByZXR1cm4ge1xuICAgICAgUnVsZXM6IHtcbiAgICAgICAgW3RoaXMubG9naWNhbElkXToge1xuICAgICAgICAgIFJ1bGVDb25kaXRpb246IHRoaXMucnVsZUNvbmRpdGlvbixcbiAgICAgICAgICBBc3NlcnRpb25zOiBjYXBpdGFsaXplUHJvcGVydHlOYW1lcyh0aGlzLCB0aGlzLmFzc2VydGlvbnMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQSBydWxlIGFzc2VydGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZm5SdWxlQXNzZXJ0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBhc3NlcnRpb24uXG4gICAqL1xuICByZWFkb25seSBhc3NlcnQ6IElDZm5Db25kaXRpb25FeHByZXNzaW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgYXNzZXJ0aW9uIGRlc2NyaXB0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXJ0RGVzY3JpcHRpb246IHN0cmluZztcbn1cbiJdfQ==