UNPKG

cdk-internal-gateway

Version:

CDK construct to create to create internal serverless applications.

81 lines 12.3 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.InternalApiGateway = 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"); class InternalApiGateway extends constructs_1.Construct { constructor(scope, id, props) { super(scope, id); let apiResourcePolicy = props.policy; if (!apiResourcePolicy) { apiResourcePolicy = new aws_cdk_lib_1.aws_iam.PolicyDocument({ statements: [ new aws_cdk_lib_1.aws_iam.PolicyStatement({ effect: aws_cdk_lib_1.aws_iam.Effect.DENY, principals: [new aws_cdk_lib_1.aws_iam.AnyPrincipal()], actions: ["execute-api:Invoke"], resources: ["execute-api:/*/*/*"], conditions: { StringNotEquals: { "aws:sourceVpce": props.vpcEndpoint.vpcEndpointId, }, }, }), new aws_cdk_lib_1.aws_iam.PolicyStatement({ effect: aws_cdk_lib_1.aws_iam.Effect.ALLOW, principals: [new aws_cdk_lib_1.aws_iam.AnyPrincipal()], actions: ["execute-api:Invoke"], resources: ["execute-api:/*/*/*"], conditions: { StringEquals: { "aws:sourceVpce": props.vpcEndpoint.vpcEndpointId, }, }, }), ], }); } if (props.endpointConfiguration && props.endpointConfiguration.types && !props.endpointConfiguration.types.includes(aws_cdk_lib_1.aws_apigateway.EndpointType.PRIVATE)) { throw new Error("InternalApiGateway: endpointConfiguration.types must be EndpointType.PRIVATE"); } if (props.endpointConfiguration && props.endpointConfiguration.vpcEndpoints && props.endpointConfiguration.vpcEndpoints.length === 0) { throw new Error("InternalApiGateway: endpointConfiguration.vpcEndpoints must be set"); } this.apiGateway = new aws_cdk_lib_1.aws_apigateway.RestApi(this, `Gateway-${id}`, { description: "This service serves an internal api gateway", endpointConfiguration: { types: [aws_cdk_lib_1.aws_apigateway.EndpointType.PRIVATE], vpcEndpoints: [props.vpcEndpoint], }, deployOptions: props.deployOptions ? props.deployOptions : props.stage ? { stageName: props.stage, } : undefined, policy: apiResourcePolicy, ...props, }); for (const domainItem of props.domains) { new aws_cdk_lib_1.aws_apigateway.BasePathMapping(this, `-${domainItem}`, { domainName: domainItem, restApi: this.apiGateway, stage: this.apiGateway.deploymentStage, basePath: props.apiBasePathMappingPath ? props.apiBasePathMappingPath : "", }); } } } exports.InternalApiGateway = InternalApiGateway; _a = JSII_RTTI_SYMBOL_1; InternalApiGateway[_a] = { fqn: "cdk-internal-gateway.InternalApiGateway", version: "1.5.1" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtYXBpZ2F0ZXdheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnRlcm5hbC1hcGlnYXRld2F5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQTJFO0FBRTNFLDJDQUF1QztBQThCdkMsTUFBc0Isa0JBQW1CLFNBQVEsc0JBQVM7SUFTeEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE4QjtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNyQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN2QixpQkFBaUIsR0FBRyxJQUFJLHFCQUFHLENBQUMsY0FBYyxDQUFDO2dCQUN6QyxVQUFVLEVBQUU7b0JBQ1YsSUFBSSxxQkFBRyxDQUFDLGVBQWUsQ0FBQzt3QkFDdEIsTUFBTSxFQUFFLHFCQUFHLENBQUMsTUFBTSxDQUFDLElBQUk7d0JBQ3ZCLFVBQVUsRUFBRSxDQUFDLElBQUkscUJBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQzt3QkFDcEMsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7d0JBQy9CLFNBQVMsRUFBRSxDQUFDLG9CQUFvQixDQUFDO3dCQUNqQyxVQUFVLEVBQUU7NEJBQ1YsZUFBZSxFQUFFO2dDQUNmLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsYUFBYTs2QkFDbEQ7eUJBQ0Y7cUJBQ0YsQ0FBQztvQkFDRixJQUFJLHFCQUFHLENBQUMsZUFBZSxDQUFDO3dCQUN0QixNQUFNLEVBQUUscUJBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSzt3QkFDeEIsVUFBVSxFQUFFLENBQUMsSUFBSSxxQkFBRyxDQUFDLFlBQVksRUFBRSxDQUFDO3dCQUNwQyxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQzt3QkFDL0IsU0FBUyxFQUFFLENBQUMsb0JBQW9CLENBQUM7d0JBQ2pDLFVBQVUsRUFBRTs0QkFDVixZQUFZLEVBQUU7Z0NBQ1osZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxhQUFhOzZCQUNsRDt5QkFDRjtxQkFDRixDQUFDO2lCQUNIO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQ0UsS0FBSyxDQUFDLHFCQUFxQjtZQUMzQixLQUFLLENBQUMscUJBQXNCLENBQUMsS0FBSztZQUNsQyxDQUFDLEtBQUssQ0FBQyxxQkFBc0IsQ0FBQyxLQUFNLENBQUMsUUFBUSxDQUMzQyw0QkFBVSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQ2hDLEVBQ0QsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQ2IsOEVBQThFLENBQy9FLENBQUM7UUFDSixDQUFDO1FBRUQsSUFDRSxLQUFLLENBQUMscUJBQXFCO1lBQzNCLEtBQUssQ0FBQyxxQkFBc0IsQ0FBQyxZQUFZO1lBQ3pDLEtBQUssQ0FBQyxxQkFBc0IsQ0FBQyxZQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFDdkQsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQ2Isb0VBQW9FLENBQ3JFLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLDRCQUFVLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFO1lBQzlELFdBQVcsRUFBRSw2Q0FBNkM7WUFDMUQscUJBQXFCLEVBQUU7Z0JBQ3JCLEtBQUssRUFBRSxDQUFDLDRCQUFVLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztnQkFDeEMsWUFBWSxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQzthQUNsQztZQUNELGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYTtnQkFDaEMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhO2dCQUNyQixDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUs7b0JBQ2IsQ0FBQyxDQUFDO3dCQUNFLFNBQVMsRUFBRSxLQUFLLENBQUMsS0FBSztxQkFDdkI7b0JBQ0gsQ0FBQyxDQUFDLFNBQVM7WUFDYixNQUFNLEVBQUUsaUJBQWlCO1lBQ3pCLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztRQUVILEtBQUssTUFBTSxVQUFVLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZDLElBQUksNEJBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLElBQUksVUFBVSxFQUFFLEVBQUU7Z0JBQ3JELFVBQVUsRUFBRSxVQUFVO2dCQUN0QixPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQ3hCLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWU7Z0JBQ3RDLFFBQVEsRUFBRSxLQUFLLENBQUMsc0JBQXNCO29CQUNwQyxDQUFDLENBQUMsS0FBSyxDQUFDLHNCQUFzQjtvQkFDOUIsQ0FBQyxDQUFDLEVBQUU7YUFDUCxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs7QUExRkgsZ0RBMkZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzX2FwaWdhdGV3YXkgYXMgYXBpZ2F0ZXdheSwgYXdzX2lhbSBhcyBpYW0gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IElJbnRlcmZhY2VWcGNFbmRwb2ludCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIEFwaUdhdGV3YXlcbiAqIEluY2x1ZGVzIGFsbCBwcm9wZXJ0aWVzIG9mIFJlc3RBcGlQcm9wcyBleGNlcHQ6IGVuZHBvaW50Q29uZmlndXJhdGlvbiwgcG9saWN5XG4gKiBUaGlzIGlzIGRvbmUgYnkgaW50ZW50aW9uIHRvIHByZXZlbnQgdGhlIHVzZXIgZnJvbSBvdmVycmlkaW5nIHRoZSByZXF1aXJlZCBzZWN1cml0eSBzZXR0aW5ncy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbEFwaUdhdGV3YXlQcm9wcyBleHRlbmRzIGFwaWdhdGV3YXkuUmVzdEFwaVByb3BzIHtcbiAgLyoqXG4gICAqIFN0YWdlIG5hbWUgIHVzZWQgZm9yIGFsbCBjbG91ZGZvcm1hdGlvbiByZXNvdXJjZSBuYW1lcyBhbmQgaW50ZXJuYWwgYXdzIHJlc291cmNlIG5hbWVzLlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgZGVwbG95T3B0aW9ucy5zdGFnZU5hbWUgaW5zdGVhZFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgY3VzdG9tIGRvbWFpbnMgbmFtZXMgdG8gYmUgdXNlZCBmb3IgdGhlIEFQSSBHYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluczogYXBpZ2F0ZXdheS5JRG9tYWluTmFtZVtdO1xuXG4gIC8qKlxuICAgKiBWUEMgZW5kcG9pbnQgaWQgb2YgZXhlY3V0ZS1hcGkgdnBjIGVuZHBvaW50LiBUaGlzIGVuZHBvaW50IHdpbGwgYmUgdXNlZCB0byBmb3J3YXJkIHJlcXVlc3RzIGZyb20gdGhlIGxvYWQgYmFsYW5jZXJgcyB0YXJnZXQgZ3JvdXAgdG8gdGhlIGFwaSBnYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjRW5kcG9pbnQ6IElJbnRlcmZhY2VWcGNFbmRwb2ludDtcblxuICAvKipcbiAgICogUGF0aCBmb3IgY3VzdG9tIGRvbWFpbiBiYXNlIHBhdGggbWFwcGluZyB0aGF0IHdpbGwgYmUgYXR0YWNoZWQgdG8gdGhlIGFwaSBnYXRld2F5XG4gICAqL1xuICByZWFkb25seSBhcGlCYXNlUGF0aE1hcHBpbmdQYXRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSW50ZXJuYWxBcGlHYXRld2F5IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIEludGVybmFsIEFQSSBHYXRld2F5XG4gICAqIFRoaXMgcHJpdmF0ZSBhcGkgZ2F0ZXdheSBpcyB1c2VkIHRvIHNlcnZlIGludGVybmFsIHNvbHV0aW9ucyAod2Vic2l0ZXMsIGFwaXMsIGFwcGxpY2F0aW9ucykuXG4gICAqIEF0dGFjaCB5b3VyIG1ldGhvZHMgdG8gdGhpcyBhcGkgZ2F0ZXdheS5cbiAgICogSXQgaXMgbm90IGV4cG9zZWQgdG8gdGhlIGludGVybmV0LlxuICAgKiBJdCBpcyBvbmx5IGFjY2Vzc2libGUgZnJvbSB0aGUgbG9hZCBiYWxhbmNlcmBzIHRhcmdldCBncm91cC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBhcGlHYXRld2F5OiBhcGlnYXRld2F5LkxhbWJkYVJlc3RBcGk7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbnRlcm5hbEFwaUdhdGV3YXlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgbGV0IGFwaVJlc291cmNlUG9saWN5ID0gcHJvcHMucG9saWN5O1xuICAgIGlmICghYXBpUmVzb3VyY2VQb2xpY3kpIHtcbiAgICAgIGFwaVJlc291cmNlUG9saWN5ID0gbmV3IGlhbS5Qb2xpY3lEb2N1bWVudCh7XG4gICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuREVOWSxcbiAgICAgICAgICAgIHByaW5jaXBhbHM6IFtuZXcgaWFtLkFueVByaW5jaXBhbCgpXSxcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcImV4ZWN1dGUtYXBpOkludm9rZVwiXSxcbiAgICAgICAgICAgIHJlc291cmNlczogW1wiZXhlY3V0ZS1hcGk6LyovKi8qXCJdLFxuICAgICAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgICAgICBTdHJpbmdOb3RFcXVhbHM6IHtcbiAgICAgICAgICAgICAgICBcImF3czpzb3VyY2VWcGNlXCI6IHByb3BzLnZwY0VuZHBvaW50LnZwY0VuZHBvaW50SWQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgIHByaW5jaXBhbHM6IFtuZXcgaWFtLkFueVByaW5jaXBhbCgpXSxcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcImV4ZWN1dGUtYXBpOkludm9rZVwiXSxcbiAgICAgICAgICAgIHJlc291cmNlczogW1wiZXhlY3V0ZS1hcGk6LyovKi8qXCJdLFxuICAgICAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAgICAgICBcImF3czpzb3VyY2VWcGNlXCI6IHByb3BzLnZwY0VuZHBvaW50LnZwY0VuZHBvaW50SWQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcHJvcHMuZW5kcG9pbnRDb25maWd1cmF0aW9uICYmXG4gICAgICBwcm9wcy5lbmRwb2ludENvbmZpZ3VyYXRpb24hLnR5cGVzICYmXG4gICAgICAhcHJvcHMuZW5kcG9pbnRDb25maWd1cmF0aW9uIS50eXBlcyEuaW5jbHVkZXMoXG4gICAgICAgIGFwaWdhdGV3YXkuRW5kcG9pbnRUeXBlLlBSSVZBVEVcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJJbnRlcm5hbEFwaUdhdGV3YXk6IGVuZHBvaW50Q29uZmlndXJhdGlvbi50eXBlcyBtdXN0IGJlIEVuZHBvaW50VHlwZS5QUklWQVRFXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcHJvcHMuZW5kcG9pbnRDb25maWd1cmF0aW9uICYmXG4gICAgICBwcm9wcy5lbmRwb2ludENvbmZpZ3VyYXRpb24hLnZwY0VuZHBvaW50cyAmJlxuICAgICAgcHJvcHMuZW5kcG9pbnRDb25maWd1cmF0aW9uIS52cGNFbmRwb2ludHMhLmxlbmd0aCA9PT0gMFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkludGVybmFsQXBpR2F0ZXdheTogZW5kcG9pbnRDb25maWd1cmF0aW9uLnZwY0VuZHBvaW50cyBtdXN0IGJlIHNldFwiXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuYXBpR2F0ZXdheSA9IG5ldyBhcGlnYXRld2F5LlJlc3RBcGkodGhpcywgYEdhdGV3YXktJHtpZH1gLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGlzIHNlcnZpY2Ugc2VydmVzIGFuIGludGVybmFsIGFwaSBnYXRld2F5XCIsXG4gICAgICBlbmRwb2ludENvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgdHlwZXM6IFthcGlnYXRld2F5LkVuZHBvaW50VHlwZS5QUklWQVRFXSxcbiAgICAgICAgdnBjRW5kcG9pbnRzOiBbcHJvcHMudnBjRW5kcG9pbnRdLFxuICAgICAgfSxcbiAgICAgIGRlcGxveU9wdGlvbnM6IHByb3BzLmRlcGxveU9wdGlvbnNcbiAgICAgICAgPyBwcm9wcy5kZXBsb3lPcHRpb25zXG4gICAgICAgIDogcHJvcHMuc3RhZ2VcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBzdGFnZU5hbWU6IHByb3BzLnN0YWdlLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBwb2xpY3k6IGFwaVJlc291cmNlUG9saWN5LFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG5cbiAgICBmb3IgKGNvbnN0IGRvbWFpbkl0ZW0gb2YgcHJvcHMuZG9tYWlucykge1xuICAgICAgbmV3IGFwaWdhdGV3YXkuQmFzZVBhdGhNYXBwaW5nKHRoaXMsIGAtJHtkb21haW5JdGVtfWAsIHtcbiAgICAgICAgZG9tYWluTmFtZTogZG9tYWluSXRlbSxcbiAgICAgICAgcmVzdEFwaTogdGhpcy5hcGlHYXRld2F5LFxuICAgICAgICBzdGFnZTogdGhpcy5hcGlHYXRld2F5LmRlcGxveW1lbnRTdGFnZSxcbiAgICAgICAgYmFzZVBhdGg6IHByb3BzLmFwaUJhc2VQYXRoTWFwcGluZ1BhdGhcbiAgICAgICAgICA/IHByb3BzLmFwaUJhc2VQYXRoTWFwcGluZ1BhdGhcbiAgICAgICAgICA6IFwiXCIsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==