UNPKG

@aws/cloudfront-hosting-toolkit

Version:

CloudFront Hosting Toolkit offers the convenience of a managed frontend hosting service while retaining full control over the hosting and deployment infrastructure to make it your own.

70 lines 11.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RepositoryConnection = void 0; const aws_cdk_lib_1 = require("aws-cdk-lib"); const constructs_1 = require("constructs"); const helper_1 = require("../bin/cli/utils/helper"); const constants_1 = require("../bin/cli/shared/constants"); /** * Custom CDK Construct for setting up a repository connection. * * This construct creates a connection to a hosting repository using the provided configuration. * * @param scope - The Construct scope in which this construct is defined. * @param id - The identifier for this construct within the scope. * @param params - Parameters for configuring the repository connection. * - `repoUrl` (optional): The URL of the hosting repository. * - `branchName` (optional): The name of the branch in the repository. * - `framework` (optional): The framework used for hosting. * - `s3bucket` (optional): The name of the Amazon S3 bucket for hosting content. * - `s3path` (optional): The path within the S3 bucket where content is stored. * - `domainName` (optional): The domain name associated with the hosting. * - `hostedZoneId` (optional): The ID of the Route 53 hosted zone associated with the domain. */ class RepositoryConnection extends constructs_1.Construct { constructor(scope, id, hostingConfiguration) { super(scope, id); if ((0, helper_1.isRepoConfig)(hostingConfiguration)) { const repoUrl = hostingConfiguration.repoUrl; const parsedUrl = (0, helper_1.parseRepositoryUrl)(repoUrl); if (parsedUrl) { const { repoName } = parsedUrl; const conn = new aws_cdk_lib_1.aws_codestarconnections.CfnConnection(this, "MyCfnConnection" + repoName, { connectionName: (0, helper_1.calculateCodeStarConnectionStackName)(hostingConfiguration.repoUrl, hostingConfiguration.branchName), providerType: "GitHub", }); this.connectionArn = conn.attrConnectionArn; this.repoUrl = hostingConfiguration.repoUrl; new aws_cdk_lib_1.CfnOutput(this, "ConnectionArn", { value: conn.attrConnectionArn, }); new aws_cdk_lib_1.CfnOutput(this, "ConnectionName", { value: conn.connectionName, }); const stackName = (0, helper_1.calculateConnectionStackName)(hostingConfiguration.repoUrl, hostingConfiguration.branchName); new aws_cdk_lib_1.aws_ssm.StringParameter(this, "SSMConnectionArn", { parameterName: "/" + stackName + "/" + constants_1.SSM_CONNECTION_ARN_STR, stringValue: conn.attrConnectionArn, }); new aws_cdk_lib_1.aws_ssm.StringParameter(this, "SSMConnectionName", { parameterName: "/" + stackName + "/" + constants_1.SSM_CONNECTION_NAME_STR, stringValue: conn.connectionName, }); new aws_cdk_lib_1.aws_ssm.StringParameter(this, "SSMConnectionRegion", { parameterName: "/" + stackName + "/" + constants_1.SSM_CONNECTION_REGION_STR, stringValue: aws_cdk_lib_1.Aws.REGION, }); } } else { // Handle case where the URL did not match the expected format console.log(`The configuration for repository URL is invalid, exiting.`); process.exit(0); } new aws_cdk_lib_1.CfnOutput(this, "HostingRegion", { value: aws_cdk_lib_1.Aws.REGION, }); } } exports.RepositoryConnection = RepositoryConnection; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3NpdG9yeV9jb25uZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVwb3NpdG9yeV9jb25uZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQVFxQjtBQUVyQiwyQ0FBdUM7QUFDdkMsb0RBS2lDO0FBQ2pDLDJEQUlxQztBQUdyQzs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFhLG9CQUFxQixTQUFRLHNCQUFTO0lBSWpELFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLG9CQUEwQztRQUUxQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksSUFBQSxxQkFBWSxFQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztZQUN2QyxNQUFNLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxPQUFPLENBQUM7WUFDN0MsTUFBTSxTQUFTLEdBQUcsSUFBQSwyQkFBa0IsRUFBQyxPQUFpQixDQUFDLENBQUM7WUFFeEQsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDZCxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsU0FBUyxDQUFDO2dCQUMvQixNQUFNLElBQUksR0FBRyxJQUFJLHFDQUFtQixDQUFDLGFBQWEsQ0FDaEQsSUFBSSxFQUNKLGlCQUFpQixHQUFHLFFBQVEsRUFDNUI7b0JBQ0UsY0FBYyxFQUFFLElBQUEsNkNBQW9DLEVBQ2xELG9CQUFvQixDQUFDLE9BQU8sRUFDNUIsb0JBQW9CLENBQUMsVUFBVSxDQUNoQztvQkFDRCxZQUFZLEVBQUUsUUFBUTtpQkFDdkIsQ0FDRixDQUFDO2dCQUVGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO2dCQUM1QyxJQUFJLENBQUMsT0FBTyxHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQztnQkFFNUMsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7b0JBQ25DLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCO2lCQUM5QixDQUFDLENBQUM7Z0JBRUgsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtvQkFDcEMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjO2lCQUMzQixDQUFDLENBQUM7Z0JBRUgsTUFBTSxTQUFTLEdBQUcsSUFBQSxxQ0FBNEIsRUFDNUMsb0JBQW9CLENBQUMsT0FBTyxFQUM1QixvQkFBb0IsQ0FBQyxVQUFVLENBQ2hDLENBQUM7Z0JBRUYsSUFBSSxxQkFBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7b0JBQ2hELGFBQWEsRUFBRSxHQUFHLEdBQUcsU0FBUyxHQUFHLEdBQUcsR0FBRyxrQ0FBc0I7b0JBQzdELFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCO2lCQUNwQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxxQkFBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7b0JBQ2pELGFBQWEsRUFBRSxHQUFHLEdBQUcsU0FBUyxHQUFHLEdBQUcsR0FBRyxtQ0FBdUI7b0JBQzlELFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYztpQkFDakMsQ0FBQyxDQUFDO2dCQUVILElBQUkscUJBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFO29CQUNuRCxhQUFhLEVBQUUsR0FBRyxHQUFHLFNBQVMsR0FBRyxHQUFHLEdBQUcscUNBQXlCO29CQUNoRSxXQUFXLEVBQUUsaUJBQUcsQ0FBQyxNQUFNO2lCQUN4QixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTiw4REFBOEQ7WUFDOUQsT0FBTyxDQUFDLEdBQUcsQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1lBQ3pFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztRQUNELElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO1lBQ25DLEtBQUssRUFBRSxpQkFBRyxDQUFDLE1BQU07U0FDbEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBcEVELG9EQW9FQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFN0YWNrLFxuICBTdGFja1Byb3BzLFxuICBhd3NfY2xvdWRmcm9udCBhcyBjbG91ZGZyb250LFxuICBhd3Nfc3NtIGFzIHNzbSxcbiAgQ2ZuT3V0cHV0LFxuICBBd3MsXG4gIGF3c19jb2Rlc3RhcmNvbm5lY3Rpb25zIGFzIGNvZGVzdGFyY29ubmVjdGlvbnMsXG59IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgY2FsY3VsYXRlQ29kZVN0YXJDb25uZWN0aW9uU3RhY2tOYW1lLFxuICBjYWxjdWxhdGVDb25uZWN0aW9uU3RhY2tOYW1lLFxuICBpc1JlcG9Db25maWcsXG4gIHBhcnNlUmVwb3NpdG9yeVVybCxcbn0gZnJvbSBcIi4uL2Jpbi9jbGkvdXRpbHMvaGVscGVyXCI7XG5pbXBvcnQge1xuICBTU01fQ09OTkVDVElPTl9BUk5fU1RSLFxuICBTU01fQ09OTkVDVElPTl9OQU1FX1NUUixcbiAgU1NNX0NPTk5FQ1RJT05fUkVHSU9OX1NUUixcbn0gZnJvbSBcIi4uL2Jpbi9jbGkvc2hhcmVkL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgSG9zdGluZ0NvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vYmluL2NsaS9zaGFyZWQvdHlwZXNcIjtcblxuLyoqXG4gKiBDdXN0b20gQ0RLIENvbnN0cnVjdCBmb3Igc2V0dGluZyB1cCBhIHJlcG9zaXRvcnkgY29ubmVjdGlvbi5cbiAqXG4gKiBUaGlzIGNvbnN0cnVjdCBjcmVhdGVzIGEgY29ubmVjdGlvbiB0byBhIGhvc3RpbmcgcmVwb3NpdG9yeSB1c2luZyB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBAcGFyYW0gc2NvcGUgLSBUaGUgQ29uc3RydWN0IHNjb3BlIGluIHdoaWNoIHRoaXMgY29uc3RydWN0IGlzIGRlZmluZWQuXG4gKiBAcGFyYW0gaWQgLSBUaGUgaWRlbnRpZmllciBmb3IgdGhpcyBjb25zdHJ1Y3Qgd2l0aGluIHRoZSBzY29wZS5cbiAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciBjb25maWd1cmluZyB0aGUgcmVwb3NpdG9yeSBjb25uZWN0aW9uLlxuICogICAtIGByZXBvVXJsYCAob3B0aW9uYWwpOiBUaGUgVVJMIG9mIHRoZSBob3N0aW5nIHJlcG9zaXRvcnkuXG4gKiAgIC0gYGJyYW5jaE5hbWVgIChvcHRpb25hbCk6IFRoZSBuYW1lIG9mIHRoZSBicmFuY2ggaW4gdGhlIHJlcG9zaXRvcnkuXG4gKiAgIC0gYGZyYW1ld29ya2AgKG9wdGlvbmFsKTogVGhlIGZyYW1ld29yayB1c2VkIGZvciBob3N0aW5nLlxuICogICAtIGBzM2J1Y2tldGAgKG9wdGlvbmFsKTogVGhlIG5hbWUgb2YgdGhlIEFtYXpvbiBTMyBidWNrZXQgZm9yIGhvc3RpbmcgY29udGVudC5cbiAqICAgLSBgczNwYXRoYCAob3B0aW9uYWwpOiBUaGUgcGF0aCB3aXRoaW4gdGhlIFMzIGJ1Y2tldCB3aGVyZSBjb250ZW50IGlzIHN0b3JlZC5cbiAqICAgLSBgZG9tYWluTmFtZWAgKG9wdGlvbmFsKTogVGhlIGRvbWFpbiBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgaG9zdGluZy5cbiAqICAgLSBgaG9zdGVkWm9uZUlkYCAob3B0aW9uYWwpOiBUaGUgSUQgb2YgdGhlIFJvdXRlIDUzIGhvc3RlZCB6b25lIGFzc29jaWF0ZWQgd2l0aCB0aGUgZG9tYWluLlxuICovXG5leHBvcnQgY2xhc3MgUmVwb3NpdG9yeUNvbm5lY3Rpb24gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvbkFybjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVwb1VybDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBob3N0aW5nQ29uZmlndXJhdGlvbjogSG9zdGluZ0NvbmZpZ3VyYXRpb25cbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGlmIChpc1JlcG9Db25maWcoaG9zdGluZ0NvbmZpZ3VyYXRpb24pKSB7XG4gICAgICBjb25zdCByZXBvVXJsID0gaG9zdGluZ0NvbmZpZ3VyYXRpb24ucmVwb1VybDtcbiAgICAgIGNvbnN0IHBhcnNlZFVybCA9IHBhcnNlUmVwb3NpdG9yeVVybChyZXBvVXJsIGFzIHN0cmluZyk7XG5cbiAgICAgIGlmIChwYXJzZWRVcmwpIHtcbiAgICAgICAgY29uc3QgeyByZXBvTmFtZSB9ID0gcGFyc2VkVXJsO1xuICAgICAgICBjb25zdCBjb25uID0gbmV3IGNvZGVzdGFyY29ubmVjdGlvbnMuQ2ZuQ29ubmVjdGlvbihcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIFwiTXlDZm5Db25uZWN0aW9uXCIgKyByZXBvTmFtZSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25uZWN0aW9uTmFtZTogY2FsY3VsYXRlQ29kZVN0YXJDb25uZWN0aW9uU3RhY2tOYW1lKFxuICAgICAgICAgICAgICBob3N0aW5nQ29uZmlndXJhdGlvbi5yZXBvVXJsLFxuICAgICAgICAgICAgICBob3N0aW5nQ29uZmlndXJhdGlvbi5icmFuY2hOYW1lXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcHJvdmlkZXJUeXBlOiBcIkdpdEh1YlwiLFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNvbm5lY3Rpb25Bcm4gPSBjb25uLmF0dHJDb25uZWN0aW9uQXJuO1xuICAgICAgICB0aGlzLnJlcG9VcmwgPSBob3N0aW5nQ29uZmlndXJhdGlvbi5yZXBvVXJsO1xuXG4gICAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJDb25uZWN0aW9uQXJuXCIsIHtcbiAgICAgICAgICB2YWx1ZTogY29ubi5hdHRyQ29ubmVjdGlvbkFybixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBcIkNvbm5lY3Rpb25OYW1lXCIsIHtcbiAgICAgICAgICB2YWx1ZTogY29ubi5jb25uZWN0aW9uTmFtZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc3RhY2tOYW1lID0gY2FsY3VsYXRlQ29ubmVjdGlvblN0YWNrTmFtZShcbiAgICAgICAgICBob3N0aW5nQ29uZmlndXJhdGlvbi5yZXBvVXJsLFxuICAgICAgICAgIGhvc3RpbmdDb25maWd1cmF0aW9uLmJyYW5jaE5hbWVcbiAgICAgICAgKTtcblxuICAgICAgICBuZXcgc3NtLlN0cmluZ1BhcmFtZXRlcih0aGlzLCBcIlNTTUNvbm5lY3Rpb25Bcm5cIiwge1xuICAgICAgICAgIHBhcmFtZXRlck5hbWU6IFwiL1wiICsgc3RhY2tOYW1lICsgXCIvXCIgKyBTU01fQ09OTkVDVElPTl9BUk5fU1RSLFxuICAgICAgICAgIHN0cmluZ1ZhbHVlOiBjb25uLmF0dHJDb25uZWN0aW9uQXJuLFxuICAgICAgICB9KTtcbiAgICAgICAgbmV3IHNzbS5TdHJpbmdQYXJhbWV0ZXIodGhpcywgXCJTU01Db25uZWN0aW9uTmFtZVwiLCB7XG4gICAgICAgICAgcGFyYW1ldGVyTmFtZTogXCIvXCIgKyBzdGFja05hbWUgKyBcIi9cIiArIFNTTV9DT05ORUNUSU9OX05BTUVfU1RSLFxuICAgICAgICAgIHN0cmluZ1ZhbHVlOiBjb25uLmNvbm5lY3Rpb25OYW1lLFxuICAgICAgICB9KTtcblxuICAgICAgICBuZXcgc3NtLlN0cmluZ1BhcmFtZXRlcih0aGlzLCBcIlNTTUNvbm5lY3Rpb25SZWdpb25cIiwge1xuICAgICAgICAgIHBhcmFtZXRlck5hbWU6IFwiL1wiICsgc3RhY2tOYW1lICsgXCIvXCIgKyBTU01fQ09OTkVDVElPTl9SRUdJT05fU1RSLFxuICAgICAgICAgIHN0cmluZ1ZhbHVlOiBBd3MuUkVHSU9OLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlcmUgdGhlIFVSTCBkaWQgbm90IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXRcbiAgICAgIGNvbnNvbGUubG9nKGBUaGUgY29uZmlndXJhdGlvbiBmb3IgcmVwb3NpdG9yeSBVUkwgaXMgaW52YWxpZCwgZXhpdGluZy5gKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9XG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBcIkhvc3RpbmdSZWdpb25cIiwge1xuICAgICAgdmFsdWU6IEF3cy5SRUdJT04sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==