UNPKG

@pwrdrvr/microapps-app-release-cdk

Version:

Release app for the MicroApps framework, by PwrDrvr LLC. Provides the ability to control which version of an app is launched.

92 lines 12 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.MicroAppsAppRelease = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const fs_1 = require("fs"); const aws_cdk_lib_1 = require("aws-cdk-lib"); const lambda = require("aws-cdk-lib/aws-lambda"); const logs = require("aws-cdk-lib/aws-logs"); const constructs_1 = require("constructs"); const path = require("path"); /** * Release app for MicroApps framework. * * @stability stable * @remarks The Release app lists apps, versions, and allows setting the default * version of an app. The app is just an example of what can be done, it * is not feature complete for all use cases. */ class MicroAppsAppRelease extends constructs_1.Construct { /** * Lambda function, permissions, and assets used by the MicroApps Release app. * * @stability stable */ constructor(scope, id, props) { super(scope, id); const { functionName, nodeEnv = 'dev', removalPolicy, table } = props; // Create Lambda Function let code; if (fs_1.existsSync(path.join(__dirname, 'microapps-app-release', 'server', 'server.js'))) { // This is for built apps packaged with the CDK construct code = lambda.Code.fromAsset(path.join(__dirname, 'microapps-app-release', 'server')); } else { // This is the path for local / developer builds code = lambda.Code.fromAsset(path.join(__dirname, '..', '..', 'app', '.next')); } // // Lambda Function // this._lambdaFunction = new lambda.Function(this, 'app-lambda', { code, runtime: lambda.Runtime.NODEJS_16_X, handler: 'run.sh', functionName, environment: { AWS_NODEJS_CONNECTION_REUSE_ENABLED: '1', NODE_ENV: 'production', NODE_CONFIG_ENV: nodeEnv, DATABASE_TABLE_NAME: table.tableName, AWS_XRAY_CONTEXT_MISSING: 'IGNORE_ERROR', AWS_LWA_ENABLE_COMPRESSION: 'true', AWS_LAMBDA_EXEC_WRAPPER: '/opt/bootstrap', RUST_LOG: 'info', PORT: '3000', READINESS_CHECK_PATH: '/release', }, logRetention: logs.RetentionDays.ONE_MONTH, memorySize: 1769, timeout: aws_cdk_lib_1.Duration.seconds(15), description: process.env.npm_package_version || '', architecture: lambda.Architecture.ARM_64, layers: [ lambda.LayerVersion.fromLayerVersionArn(this, 'lwa-layer', // 13 is 0.6.2 w/gzip support `arn:aws:lambda:${aws_cdk_lib_1.Aws.REGION}:753240598075:layer:LambdaAdapterLayerArm64:13`), ], }); if (removalPolicy !== undefined) { this._lambdaFunction.applyRemovalPolicy(removalPolicy); } // Publish a version of the Lambda function when changed const appVersion = this._lambdaFunction.currentVersion; appVersion.applyRemovalPolicy(aws_cdk_lib_1.RemovalPolicy.RETAIN); // Give permission to the table table.grantReadWriteData(this._lambdaFunction); table.grant(this._lambdaFunction, 'dynamodb:DescribeTable'); } /** * The Lambda function created. * * @stability stable */ get lambdaFunction() { return this._lambdaFunction; } } exports.MicroAppsAppRelease = MicroAppsAppRelease; _a = JSII_RTTI_SYMBOL_1; MicroAppsAppRelease[_a] = { fqn: "@pwrdrvr/microapps-app-release-cdk.MicroAppsAppRelease", version: "0.5.3" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyQkFBZ0M7QUFDaEMsNkNBQTJEO0FBQzNELGlEQUFpRDtBQUVqRCw2Q0FBNkM7QUFDN0MsMkNBQXVDO0FBQ3ZDLDZCQUE2Qjs7Ozs7Ozs7O0FBd0I3QixNQUFhLG1CQUFvQixTQUFRLHNCQUFTOzs7Ozs7SUFPaEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUErQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sRUFBRSxZQUFZLEVBQUUsT0FBTyxHQUFHLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRXRFLHlCQUF5QjtRQUN6QixJQUFJLElBQXNCLENBQUM7UUFDM0IsSUFBSSxlQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDLEVBQUU7WUFDcEYseURBQXlEO1lBQ3pELElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQ3ZGO2FBQU07WUFDTCxnREFBZ0Q7WUFDaEQsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDaEY7UUFFRCxFQUFFO1FBQ0Ysa0JBQWtCO1FBQ2xCLEVBQUU7UUFDRixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQzdELElBQUk7WUFDSixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO1lBQ25DLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLFlBQVk7WUFDWixXQUFXLEVBQUU7Z0JBQ1gsbUNBQW1DLEVBQUUsR0FBRztnQkFDeEMsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLGVBQWUsRUFBRSxPQUFPO2dCQUN4QixtQkFBbUIsRUFBRSxLQUFLLENBQUMsU0FBUztnQkFDcEMsd0JBQXdCLEVBQUUsY0FBYztnQkFDeEMsMEJBQTBCLEVBQUUsTUFBTTtnQkFDbEMsdUJBQXVCLEVBQUUsZ0JBQWdCO2dCQUN6QyxRQUFRLEVBQUUsTUFBTTtnQkFDaEIsSUFBSSxFQUFFLE1BQU07Z0JBQ1osb0JBQW9CLEVBQUUsVUFBVTthQUNqQztZQUNELFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVM7WUFDMUMsVUFBVSxFQUFFLElBQUk7WUFDaEIsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsSUFBSSxFQUFFO1lBQ2xELFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU07WUFDeEMsTUFBTSxFQUFFO2dCQUNOLE1BQU0sQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQ3JDLElBQUksRUFDSixXQUFXO2dCQUNYLDZCQUE2QjtnQkFDN0Isa0JBQWtCLGlCQUFHLENBQUMsTUFBTSxnREFBZ0QsQ0FDN0U7YUFDRjtTQUNGLENBQUMsQ0FBQztRQUNILElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRTtZQUMvQixJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3hEO1FBRUQsd0RBQXdEO1FBQ3hELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDO1FBQ3ZELFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQywyQkFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBELCtCQUErQjtRQUMvQixLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9DLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0lBQzlELENBQUM7Ozs7OztJQWpFRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7O0FBSkgsa0RBb0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ2ZzJztcbmltcG9ydCB7IEF3cywgRHVyYXRpb24sIFJlbW92YWxQb2xpY3kgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBkeW5hbW9kYiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZHluYW1vZGInO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgTWljcm9BcHBzQXBwUmVsZWFzZVByb3BzIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGZ1bmN0aW9uTmFtZT86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdGFibGU6IGR5bmFtb2RiLklUYWJsZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBSZW1vdmFsUG9saWN5O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbm9kZUVudj86ICdkZXYnIHwgJ3FhJyB8ICdwcm9kJztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgSU1pY3JvQXBwc0FwcFJlbGVhc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbGFtYmRhRnVuY3Rpb246IGxhbWJkYS5JRnVuY3Rpb247XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgTWljcm9BcHBzQXBwUmVsZWFzZSBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElNaWNyb0FwcHNBcHBSZWxlYXNlIHtcbiAgcHJpdmF0ZSBfbGFtYmRhRnVuY3Rpb246IGxhbWJkYS5GdW5jdGlvbjtcbiAgcHVibGljIGdldCBsYW1iZGFGdW5jdGlvbigpOiBsYW1iZGEuSUZ1bmN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fbGFtYmRhRnVuY3Rpb247XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTWljcm9BcHBzQXBwUmVsZWFzZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHsgZnVuY3Rpb25OYW1lLCBub2RlRW52ID0gJ2RldicsIHJlbW92YWxQb2xpY3ksIHRhYmxlIH0gPSBwcm9wcztcblxuICAgIC8vIENyZWF0ZSBMYW1iZGEgRnVuY3Rpb25cbiAgICBsZXQgY29kZTogbGFtYmRhLkFzc2V0Q29kZTtcbiAgICBpZiAoZXhpc3RzU3luYyhwYXRoLmpvaW4oX19kaXJuYW1lLCAnbWljcm9hcHBzLWFwcC1yZWxlYXNlJywgJ3NlcnZlcicsICdzZXJ2ZXIuanMnKSkpIHtcbiAgICAgIC8vIFRoaXMgaXMgZm9yIGJ1aWx0IGFwcHMgcGFja2FnZWQgd2l0aCB0aGUgQ0RLIGNvbnN0cnVjdFxuICAgICAgY29kZSA9IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnbWljcm9hcHBzLWFwcC1yZWxlYXNlJywgJ3NlcnZlcicpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhpcyBpcyB0aGUgcGF0aCBmb3IgbG9jYWwgLyBkZXZlbG9wZXIgYnVpbGRzXG4gICAgICBjb2RlID0gbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICdhcHAnLCAnLm5leHQnKSk7XG4gICAgfVxuXG4gICAgLy9cbiAgICAvLyBMYW1iZGEgRnVuY3Rpb25cbiAgICAvL1xuICAgIHRoaXMuX2xhbWJkYUZ1bmN0aW9uID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCAnYXBwLWxhbWJkYScsIHtcbiAgICAgIGNvZGUsXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTZfWCxcbiAgICAgIGhhbmRsZXI6ICdydW4uc2gnLFxuICAgICAgZnVuY3Rpb25OYW1lLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgQVdTX05PREVKU19DT05ORUNUSU9OX1JFVVNFX0VOQUJMRUQ6ICcxJyxcbiAgICAgICAgTk9ERV9FTlY6ICdwcm9kdWN0aW9uJyxcbiAgICAgICAgTk9ERV9DT05GSUdfRU5WOiBub2RlRW52LFxuICAgICAgICBEQVRBQkFTRV9UQUJMRV9OQU1FOiB0YWJsZS50YWJsZU5hbWUsXG4gICAgICAgIEFXU19YUkFZX0NPTlRFWFRfTUlTU0lORzogJ0lHTk9SRV9FUlJPUicsXG4gICAgICAgIEFXU19MV0FfRU5BQkxFX0NPTVBSRVNTSU9OOiAndHJ1ZScsXG4gICAgICAgIEFXU19MQU1CREFfRVhFQ19XUkFQUEVSOiAnL29wdC9ib290c3RyYXAnLFxuICAgICAgICBSVVNUX0xPRzogJ2luZm8nLFxuICAgICAgICBQT1JUOiAnMzAwMCcsXG4gICAgICAgIFJFQURJTkVTU19DSEVDS19QQVRIOiAnL3JlbGVhc2UnLFxuICAgICAgfSxcbiAgICAgIGxvZ1JldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9NT05USCxcbiAgICAgIG1lbW9yeVNpemU6IDE3NjksXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDE1KSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9jZXNzLmVudi5ucG1fcGFja2FnZV92ZXJzaW9uIHx8ICcnLFxuICAgICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgIGxheWVyczogW1xuICAgICAgICBsYW1iZGEuTGF5ZXJWZXJzaW9uLmZyb21MYXllclZlcnNpb25Bcm4oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICAnbHdhLWxheWVyJyxcbiAgICAgICAgICAvLyAxMyBpcyAwLjYuMiB3L2d6aXAgc3VwcG9ydFxuICAgICAgICAgIGBhcm46YXdzOmxhbWJkYToke0F3cy5SRUdJT059Ojc1MzI0MDU5ODA3NTpsYXllcjpMYW1iZGFBZGFwdGVyTGF5ZXJBcm02NDoxM2AsXG4gICAgICAgICksXG4gICAgICBdLFxuICAgIH0pO1xuICAgIGlmIChyZW1vdmFsUG9saWN5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2xhbWJkYUZ1bmN0aW9uLmFwcGx5UmVtb3ZhbFBvbGljeShyZW1vdmFsUG9saWN5KTtcbiAgICB9XG5cbiAgICAvLyBQdWJsaXNoIGEgdmVyc2lvbiBvZiB0aGUgTGFtYmRhIGZ1bmN0aW9uIHdoZW4gY2hhbmdlZFxuICAgIGNvbnN0IGFwcFZlcnNpb24gPSB0aGlzLl9sYW1iZGFGdW5jdGlvbi5jdXJyZW50VmVyc2lvbjtcbiAgICBhcHBWZXJzaW9uLmFwcGx5UmVtb3ZhbFBvbGljeShSZW1vdmFsUG9saWN5LlJFVEFJTik7XG5cbiAgICAvLyBHaXZlIHBlcm1pc3Npb24gdG8gdGhlIHRhYmxlXG4gICAgdGFibGUuZ3JhbnRSZWFkV3JpdGVEYXRhKHRoaXMuX2xhbWJkYUZ1bmN0aW9uKTtcbiAgICB0YWJsZS5ncmFudCh0aGlzLl9sYW1iZGFGdW5jdGlvbiwgJ2R5bmFtb2RiOkRlc2NyaWJlVGFibGUnKTtcbiAgfVxufVxuIl19