@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
JavaScript
;
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