cdk-turborepo-remote-cache
Version:
Deploy turborepo-remote-cache serverless on aws
48 lines • 7.32 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TurborepoRemoteCache = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const aws_cdk_lib_1 = require("aws-cdk-lib");
const constructs_1 = require("constructs");
const path = require("node:path");
class TurborepoRemoteCache extends constructs_1.Construct {
constructor(scope, id, props) {
super(scope, id);
this.bucket = props.bucket ?? new aws_cdk_lib_1.aws_s3.Bucket(this, 'Bucket', {});
this.lambdaHandler = new aws_cdk_lib_1.aws_lambda.Function(this, 'Handler', {
code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, '../lib/lambda')),
description: 'API Handler for Turborepo Remote Cache',
environment: {
STORAGE_PATH: this.bucket.bucketName,
STORAGE_PROVIDER: 's3',
TURBO_TOKEN: props.secretToken,
},
handler: 'index.handler',
memorySize: 512,
runtime: new aws_cdk_lib_1.aws_lambda.Runtime(
// 'nodejs18.x',
'nodejs16.x', aws_cdk_lib_1.aws_lambda.RuntimeFamily.NODEJS),
timeout: aws_cdk_lib_1.Duration.seconds(10),
});
this.lambdaHandler.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
actions: ['s3:*'],
resources: [this.bucket.bucketArn, `${this.bucket.bucketArn}/*`],
}));
this.functionUrl = this.lambdaHandler.addFunctionUrl({
authType: aws_cdk_lib_1.aws_lambda.FunctionUrlAuthType.NONE,
cors: {
allowedHeaders: ['*'],
allowedMethods: [aws_cdk_lib_1.aws_lambda.HttpMethod.ALL],
allowedOrigins: ['*'],
},
});
new aws_cdk_lib_1.CfnOutput(this, 'CacheUrl', {
value: `${aws_cdk_lib_1.Fn.select(0, aws_cdk_lib_1.Fn.split('on.aws/', this.functionUrl.url))}on.aws`,
});
}
}
_a = JSII_RTTI_SYMBOL_1;
TurborepoRemoteCache[_a] = { fqn: "cdk-turborepo-remote-cache.TurborepoRemoteCache", version: "0.0.2" };
exports.TurborepoRemoteCache = TurborepoRemoteCache;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSw2Q0FPb0I7QUFDcEIsMkNBQXNDO0FBQ3RDLGtDQUFpQztBQWVqQyxNQUFhLG9CQUFxQixTQUFRLHNCQUFTO0lBZ0JqRCxZQUNFLEtBQVksRUFDWixFQUFVLEVBQ1YsS0FBZ0M7UUFFaEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxvQkFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRW5FLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSx3QkFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQzVELElBQUksRUFBRSx3QkFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDdEUsV0FBVyxFQUFFLHdDQUF3QztZQUNyRCxXQUFXLEVBQUU7Z0JBQ1gsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTtnQkFDcEMsZ0JBQWdCLEVBQUUsSUFBSTtnQkFDdEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2FBQy9CO1lBQ0QsT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLEdBQUc7WUFDZixPQUFPLEVBQUUsSUFBSSx3QkFBVSxDQUFDLE9BQU87WUFDN0IsZ0JBQWdCO1lBQ2hCLFlBQVksRUFDWix3QkFBVSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQ2hDO1lBQ0QsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUM5QixDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FDaEMsSUFBSSxxQkFBTyxDQUFDLGVBQWUsQ0FBQztZQUMxQixPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDakIsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxDQUFDO1NBQ2pFLENBQUMsQ0FDSCxDQUFBO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQztZQUNuRCxRQUFRLEVBQUUsd0JBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJO1lBQzdDLElBQUksRUFBRTtnQkFDSixjQUFjLEVBQUUsQ0FBQyxHQUFHLENBQUM7Z0JBQ3JCLGNBQWMsRUFBRSxDQUFDLHdCQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztnQkFDM0MsY0FBYyxFQUFFLENBQUMsR0FBRyxDQUFDO2FBQ3RCO1NBQ0YsQ0FBQyxDQUFBO1FBRUYsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDOUIsS0FBSyxFQUFFLEdBQUcsZ0JBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLGdCQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVE7U0FDMUUsQ0FBQyxDQUFBO0lBQ0osQ0FBQzs7OztBQTlEVSxvREFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInXG5pbXBvcnQge1xuICBhd3NfaWFtLFxuICBhd3NfbGFtYmRhLFxuICBhd3NfczMsXG4gIENmbk91dHB1dCxcbiAgRHVyYXRpb24sXG4gIEZuLFxufSBmcm9tICdhd3MtY2RrLWxpYidcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ25vZGU6cGF0aCdcblxuZXhwb3J0IGludGVyZmFjZSBUdXJib3JlcG9SZW1vdGVDYWNoZVByb3BzIHtcbiAgLyoqXG4gICAqIEFuIGV4aXN0aW5nIGJ1Y2tldCB0byB1c2UgZm9yIGhvc3RpbmcgdGhlIGNhY2hlLlxuICAgKiBAZGVmYXVsdCBjcmVhdGUgYSBuZXcgYnVja2V0XG4gICAqL1xuICByZWFkb25seSBidWNrZXQ/OiBhd3NfczMuQnVja2V0XG5cbiAgLyoqXG4gICAqIFRoZSBzZWNyZXQgdG9rZW4gdG8gdXNlIGZvciBhdXRoZW50aWNhdGluZyByZXF1ZXN0cy5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldFRva2VuOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNsYXNzIFR1cmJvcmVwb1JlbW90ZUNhY2hlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRoZSBsYW1iZGEgaGFuZGxlciBmdW5jdGlvbi5cbiAgICovXG4gIHB1YmxpYyBsYW1iZGFIYW5kbGVyOiBhd3NfbGFtYmRhLkZ1bmN0aW9uXG5cbiAgLyoqXG4gICAqIFRoZSBidWNrZXQgdXNlZCBmb3IgaG9zdGluZyB0aGUgY2FjaGUuXG4gICAqL1xuICBwdWJsaWMgYnVja2V0OiBhd3NfczMuQnVja2V0XG5cbiAgLyoqXG4gICAqIFRoZSBVUkwgb2YgdGhlIGxhbWJkYSBmdW5jdGlvbi5cbiAgICovXG4gIHB1YmxpYyBmdW5jdGlvblVybDogYXdzX2xhbWJkYS5GdW5jdGlvblVybFxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogU3RhY2ssXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogVHVyYm9yZXBvUmVtb3RlQ2FjaGVQcm9wc1xuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICB0aGlzLmJ1Y2tldCA9IHByb3BzLmJ1Y2tldCA/PyBuZXcgYXdzX3MzLkJ1Y2tldCh0aGlzLCAnQnVja2V0Jywge30pXG5cbiAgICB0aGlzLmxhbWJkYUhhbmRsZXIgPSBuZXcgYXdzX2xhbWJkYS5GdW5jdGlvbih0aGlzLCAnSGFuZGxlcicsIHtcbiAgICAgIGNvZGU6IGF3c19sYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL2xpYi9sYW1iZGEnKSksXG4gICAgICBkZXNjcmlwdGlvbjogJ0FQSSBIYW5kbGVyIGZvciBUdXJib3JlcG8gUmVtb3RlIENhY2hlJyxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFNUT1JBR0VfUEFUSDogdGhpcy5idWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgU1RPUkFHRV9QUk9WSURFUjogJ3MzJyxcbiAgICAgICAgVFVSQk9fVE9LRU46IHByb3BzLnNlY3JldFRva2VuLFxuICAgICAgfSxcbiAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgIG1lbW9yeVNpemU6IDUxMixcbiAgICAgIHJ1bnRpbWU6IG5ldyBhd3NfbGFtYmRhLlJ1bnRpbWUoXG4gICAgICAgIC8vICdub2RlanMxOC54JyxcbiAgICAgICAgJ25vZGVqczE2LngnLFxuICAgICAgICBhd3NfbGFtYmRhLlJ1bnRpbWVGYW1pbHkuTk9ERUpTXG4gICAgICApLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygxMCksXG4gICAgfSlcblxuICAgIHRoaXMubGFtYmRhSGFuZGxlci5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgYXdzX2lhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ3MzOionXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5idWNrZXQuYnVja2V0QXJuLCBgJHt0aGlzLmJ1Y2tldC5idWNrZXRBcm59LypgXSxcbiAgICAgIH0pXG4gICAgKVxuXG4gICAgdGhpcy5mdW5jdGlvblVybCA9IHRoaXMubGFtYmRhSGFuZGxlci5hZGRGdW5jdGlvblVybCh7XG4gICAgICBhdXRoVHlwZTogYXdzX2xhbWJkYS5GdW5jdGlvblVybEF1dGhUeXBlLk5PTkUsXG4gICAgICBjb3JzOiB7XG4gICAgICAgIGFsbG93ZWRIZWFkZXJzOiBbJyonXSxcbiAgICAgICAgYWxsb3dlZE1ldGhvZHM6IFthd3NfbGFtYmRhLkh0dHBNZXRob2QuQUxMXSxcbiAgICAgICAgYWxsb3dlZE9yaWdpbnM6IFsnKiddLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCAnQ2FjaGVVcmwnLCB7XG4gICAgICB2YWx1ZTogYCR7Rm4uc2VsZWN0KDAsIEZuLnNwbGl0KCdvbi5hd3MvJywgdGhpcy5mdW5jdGlvblVybC51cmwpKX1vbi5hd3NgLFxuICAgIH0pXG4gIH1cbn1cbiJdfQ==