@daysmart/cdk-certificate
Version:
You should explore the contents of this project. It demonstrates a CDK Construct Library that includes a construct (`CdkCertificate`) which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic.
51 lines • 8.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CdkCertificate = void 0;
const cdk = require("aws-cdk-lib");
const constructs_1 = require("constructs");
const route53 = require("aws-cdk-lib/aws-route53");
const acm = require("aws-cdk-lib/aws-certificatemanager");
class CdkCertificate extends constructs_1.Construct {
constructor(scope, id, props) {
super(scope, id);
const companyHostedZone = route53.HostedZone.fromHostedZoneAttributes(this, 'HostedZone', {
hostedZoneId: props.companyHostedZoneId,
zoneName: props.companyDomainName
});
let subjectAlternativeNames = [
`${props.stage}.${props.project}.${props.companyDomainName}`,
`*.${props.stage}.${props.project}.${props.companyDomainName}`
];
if (props.stage === 'prod') {
subjectAlternativeNames.push(`${props.project}.${props.companyDomainName}`, `*.${props.project}.${props.companyDomainName}`);
}
let certificateValidation;
if (props.projectDomainName && props.projectHostedZoneId) {
subjectAlternativeNames.push(props.projectDomainName, `${props.stage}.${props.projectDomainName}`, `*.${props.projectDomainName}`, `*.${props.stage}.${props.projectDomainName}`);
const projectHostedZone = route53.HostedZone.fromHostedZoneAttributes(this, 'Project HostedZone', {
hostedZoneId: props.projectHostedZoneId,
zoneName: props.projectDomainName
});
certificateValidation = acm.CertificateValidation.fromDnsMultiZone({
[props.companyDomainName]: companyHostedZone,
[props.projectDomainName]: projectHostedZone,
[`${props.stage}.${props.projectDomainName}`]: projectHostedZone
});
}
else {
certificateValidation = acm.CertificateValidation.fromDns(companyHostedZone);
}
;
const cert = new acm.Certificate(this, 'Certificate', {
domainName: props.companyDomainName,
subjectAlternativeNames: subjectAlternativeNames,
validation: certificateValidation
});
let output = new cdk.CfnOutput(this, "CertificateArn", {
value: cert.certificateArn
});
output.overrideLogicalId("CertificateArn");
}
}
exports.CdkCertificate = CdkCertificate;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW1DO0FBQ25DLDJDQUF1QztBQUN2QyxtREFBbUQ7QUFDbkQsMERBQXlEO0FBWXpELE1BQWEsY0FBZSxTQUFRLHNCQUFTO0lBRTNDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUN0RixZQUFZLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtZQUN2QyxRQUFRLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtTQUNwQyxDQUFDLENBQUM7UUFFSCxJQUFJLHVCQUF1QixHQUFHO1lBQzFCLEdBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtZQUM1RCxLQUFLLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUU7U0FDakUsQ0FBQztRQUVGLElBQUcsS0FBSyxDQUFDLEtBQUssS0FBSyxNQUFNLEVBQUU7WUFDdkIsdUJBQXVCLENBQUMsSUFBSSxDQUN4QixHQUFHLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFLEVBQzdDLEtBQUssS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FDbEQsQ0FBQztTQUNMO1FBRUQsSUFBSSxxQkFBZ0QsQ0FBQztRQUVyRCxJQUFHLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxLQUFLLENBQUMsbUJBQW1CLEVBQUU7WUFDckQsdUJBQXVCLENBQUMsSUFBSSxDQUN4QixLQUFLLENBQUMsaUJBQWlCLEVBQ3ZCLEdBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsRUFDM0MsS0FBSyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsRUFDOUIsS0FBSyxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUNoRCxDQUFDO1lBRUYsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRTtnQkFDOUYsWUFBWSxFQUFFLEtBQUssQ0FBQyxtQkFBbUI7Z0JBQ3ZDLFFBQVEsRUFBRSxLQUFLLENBQUMsaUJBQWlCO2FBQ3BDLENBQUMsQ0FBQztZQUVILHFCQUFxQixHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDL0QsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxpQkFBaUI7Z0JBQzVDLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsaUJBQWlCO2dCQUM1QyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLGlCQUFpQjthQUNuRSxDQUFDLENBQUM7U0FDTjthQUFNO1lBQ0gscUJBQXFCLEdBQUcsR0FBRyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ2hGO1FBQUEsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ2xELFVBQVUsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1lBQ25DLHVCQUF1QixFQUFFLHVCQUF1QjtZQUNoRCxVQUFVLEVBQUUscUJBQXFCO1NBQ3BDLENBQUMsQ0FBQztRQUVILElBQUksTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUM7WUFDbEQsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQzdCLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQXpERCx3Q0F5REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyByb3V0ZTUzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0ICogYXMgYWNtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyXCJcblxuXG5leHBvcnQgaW50ZXJmYWNlIENka0NlcnRpZmljYXRlUHJvcHMge1xuICAgIGNvbXBhbnlEb21haW5OYW1lOiBzdHJpbmc7XG4gICAgc3RhZ2U6IHN0cmluZztcbiAgICBwcm9qZWN0OiBzdHJpbmc7XG4gICAgY29tcGFueUhvc3RlZFpvbmVJZDogc3RyaW5nO1xuICAgIHByb2plY3REb21haW5OYW1lPzogc3RyaW5nO1xuICAgIHByb2plY3RIb3N0ZWRab25lSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBDZGtDZXJ0aWZpY2F0ZSBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENka0NlcnRpZmljYXRlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgY29tcGFueUhvc3RlZFpvbmUgPSByb3V0ZTUzLkhvc3RlZFpvbmUuZnJvbUhvc3RlZFpvbmVBdHRyaWJ1dGVzKHRoaXMsICdIb3N0ZWRab25lJywge1xuICAgICAgICBob3N0ZWRab25lSWQ6IHByb3BzLmNvbXBhbnlIb3N0ZWRab25lSWQsXG4gICAgICAgIHpvbmVOYW1lOiBwcm9wcy5jb21wYW55RG9tYWluTmFtZVxuICAgIH0pO1xuXG4gICAgbGV0IHN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzID0gW1xuICAgICAgICBgJHtwcm9wcy5zdGFnZX0uJHtwcm9wcy5wcm9qZWN0fS4ke3Byb3BzLmNvbXBhbnlEb21haW5OYW1lfWAsXG4gICAgICAgIGAqLiR7cHJvcHMuc3RhZ2V9LiR7cHJvcHMucHJvamVjdH0uJHtwcm9wcy5jb21wYW55RG9tYWluTmFtZX1gIFxuICAgIF07XG5cbiAgICBpZihwcm9wcy5zdGFnZSA9PT0gJ3Byb2QnKSB7XG4gICAgICAgIHN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzLnB1c2goXG4gICAgICAgICAgICBgJHtwcm9wcy5wcm9qZWN0fS4ke3Byb3BzLmNvbXBhbnlEb21haW5OYW1lfWAsXG4gICAgICAgICAgICBgKi4ke3Byb3BzLnByb2plY3R9LiR7cHJvcHMuY29tcGFueURvbWFpbk5hbWV9YFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGxldCBjZXJ0aWZpY2F0ZVZhbGlkYXRpb246IGFjbS5DZXJ0aWZpY2F0ZVZhbGlkYXRpb247XG5cbiAgICBpZihwcm9wcy5wcm9qZWN0RG9tYWluTmFtZSAmJiBwcm9wcy5wcm9qZWN0SG9zdGVkWm9uZUlkKSB7XG4gICAgICAgIHN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzLnB1c2goXG4gICAgICAgICAgICBwcm9wcy5wcm9qZWN0RG9tYWluTmFtZSwgXG4gICAgICAgICAgICBgJHtwcm9wcy5zdGFnZX0uJHtwcm9wcy5wcm9qZWN0RG9tYWluTmFtZX1gLCBcbiAgICAgICAgICAgIGAqLiR7cHJvcHMucHJvamVjdERvbWFpbk5hbWV9YCwgXG4gICAgICAgICAgICBgKi4ke3Byb3BzLnN0YWdlfS4ke3Byb3BzLnByb2plY3REb21haW5OYW1lfWBcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBwcm9qZWN0SG9zdGVkWm9uZSA9IHJvdXRlNTMuSG9zdGVkWm9uZS5mcm9tSG9zdGVkWm9uZUF0dHJpYnV0ZXModGhpcywgJ1Byb2plY3QgSG9zdGVkWm9uZScsIHtcbiAgICAgICAgICAgIGhvc3RlZFpvbmVJZDogcHJvcHMucHJvamVjdEhvc3RlZFpvbmVJZCxcbiAgICAgICAgICAgIHpvbmVOYW1lOiBwcm9wcy5wcm9qZWN0RG9tYWluTmFtZVxuICAgICAgICB9KTtcblxuICAgICAgICBjZXJ0aWZpY2F0ZVZhbGlkYXRpb24gPSBhY20uQ2VydGlmaWNhdGVWYWxpZGF0aW9uLmZyb21EbnNNdWx0aVpvbmUoe1xuICAgICAgICAgICAgW3Byb3BzLmNvbXBhbnlEb21haW5OYW1lXTogY29tcGFueUhvc3RlZFpvbmUsXG4gICAgICAgICAgICBbcHJvcHMucHJvamVjdERvbWFpbk5hbWVdOiBwcm9qZWN0SG9zdGVkWm9uZSxcbiAgICAgICAgICAgIFtgJHtwcm9wcy5zdGFnZX0uJHtwcm9wcy5wcm9qZWN0RG9tYWluTmFtZX1gXTogcHJvamVjdEhvc3RlZFpvbmVcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY2VydGlmaWNhdGVWYWxpZGF0aW9uID0gYWNtLkNlcnRpZmljYXRlVmFsaWRhdGlvbi5mcm9tRG5zKGNvbXBhbnlIb3N0ZWRab25lKTtcbiAgICB9O1xuXG4gICAgY29uc3QgY2VydCA9IG5ldyBhY20uQ2VydGlmaWNhdGUodGhpcywgJ0NlcnRpZmljYXRlJywge1xuICAgICAgICBkb21haW5OYW1lOiBwcm9wcy5jb21wYW55RG9tYWluTmFtZSxcbiAgICAgICAgc3ViamVjdEFsdGVybmF0aXZlTmFtZXM6IHN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzLFxuICAgICAgICB2YWxpZGF0aW9uOiBjZXJ0aWZpY2F0ZVZhbGlkYXRpb25cbiAgICB9KTtcblxuICAgIGxldCBvdXRwdXQgPSBuZXcgY2RrLkNmbk91dHB1dCh0aGlzLCBcIkNlcnRpZmljYXRlQXJuXCIse1xuICAgICAgICB2YWx1ZTogY2VydC5jZXJ0aWZpY2F0ZUFyblxuICAgIH0pO1xuICAgIG91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcIkNlcnRpZmljYXRlQXJuXCIpO1xuICB9XG59XG4iXX0=