UNPKG

@aws-amplify/graphql-api-construct

Version:

AppSync GraphQL Api Construct using Amplify GraphQL Transformer.

49 lines 7.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CodegenAssets = void 0; const aws_cdk_lib_1 = require("aws-cdk-lib"); const aws_s3_1 = require("aws-cdk-lib/aws-s3"); const aws_s3_deployment_1 = require("aws-cdk-lib/aws-s3-deployment"); const constructs_1 = require("constructs"); const MODEL_SCHEMA_KEY = 'model-schema.graphql'; const CONSOLE_SERVICE_ENDPOINT = aws_cdk_lib_1.Fn.join('', ['https://', aws_cdk_lib_1.Fn.ref('AWS::Region'), '.console.aws.amazon.com/amplify']); /** * Construct an S3 URI string for a given bucket and key. * @param bucket the bucket to embed in the uri string * @param key the key to embed in the uri string * @returns the uri string representation. */ const getS3UriForBucketAndKey = (bucket, key) => `s3://${bucket.bucketName}/${key}`; /** * Construct which creates a bucket, and uploads file assets required for codegen to run. * Pointers to these resources are persisted in the stack outputs. */ class CodegenAssets extends constructs_1.Construct { constructor(scope, id, props) { super(scope, id); const bucket = new aws_s3_1.Bucket(this, `${id}Bucket`, { removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY, autoDeleteObjects: true, // Enabling CORS to allow console to access the codegen assets. cors: [ { allowedMethods: [aws_s3_1.HttpMethods.GET, aws_s3_1.HttpMethods.HEAD], allowedHeaders: ['*'], allowedOrigins: [CONSOLE_SERVICE_ENDPOINT], }, ], }); const deployment = new aws_s3_deployment_1.BucketDeployment(this, `${id}Deployment`, { destinationBucket: bucket, sources: [aws_s3_deployment_1.Source.data(MODEL_SCHEMA_KEY, props.modelSchema)], // Bucket deployment uses a Lambda that runs AWS S3 CLI to transfer assets to destination bucket. // That Lambda requires higher memory setting to run fast even when processing small assets (less than 1kB). // This setting has been established experimentally. Benchmark can be found in pull request description that established it. // The value has been chosen to prefer the lowest cost (run time * memory demand) while providing reasonable performance. memoryLimit: 1536, }); this.modelSchemaS3Uri = getS3UriForBucketAndKey(deployment.deployedBucket, MODEL_SCHEMA_KEY); } } exports.CodegenAssets = CodegenAssets; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWdlbi1hc3NldHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJuYWwvY29kZWdlbi1hc3NldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQWdEO0FBQ2hELCtDQUFrRTtBQUNsRSxxRUFBeUU7QUFDekUsMkNBQXVDO0FBTXZDLE1BQU0sZ0JBQWdCLEdBQUcsc0JBQXNCLENBQUM7QUFDaEQsTUFBTSx3QkFBd0IsR0FBRyxnQkFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUUsZ0JBQUUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsaUNBQWlDLENBQUMsQ0FBQyxDQUFDO0FBRXJIOzs7OztHQUtHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLE1BQWUsRUFBRSxHQUFXLEVBQVUsRUFBRSxDQUFDLFFBQVEsTUFBTSxDQUFDLFVBQVUsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUU3Rzs7O0dBR0c7QUFDSCxNQUFhLGFBQWMsU0FBUSxzQkFBUztJQUcxQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlCO1FBQ2pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUU7WUFDN0MsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztZQUNwQyxpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLCtEQUErRDtZQUMvRCxJQUFJLEVBQUU7Z0JBQ0o7b0JBQ0UsY0FBYyxFQUFFLENBQUMsb0JBQVcsQ0FBQyxHQUFHLEVBQUUsb0JBQVcsQ0FBQyxJQUFJLENBQUM7b0JBQ25ELGNBQWMsRUFBRSxDQUFDLEdBQUcsQ0FBQztvQkFDckIsY0FBYyxFQUFFLENBQUMsd0JBQXdCLENBQUM7aUJBQzNDO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxNQUFNLFVBQVUsR0FBRyxJQUFJLG9DQUFnQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFO1lBQy9ELGlCQUFpQixFQUFFLE1BQU07WUFDekIsT0FBTyxFQUFFLENBQUMsMEJBQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNELGlHQUFpRztZQUNqRyw0R0FBNEc7WUFDNUcsNEhBQTRIO1lBQzVILHlIQUF5SDtZQUN6SCxXQUFXLEVBQUUsSUFBSTtTQUNsQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsdUJBQXVCLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9GLENBQUM7Q0FDRjtBQS9CRCxzQ0ErQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZW1vdmFsUG9saWN5LCBGbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEJ1Y2tldCwgSHR0cE1ldGhvZHMsIElCdWNrZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgQnVja2V0RGVwbG95bWVudCwgU291cmNlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWRlcGxveW1lbnQnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCB0eXBlIENvZGVnZW5Bc3NldHNQcm9wcyA9IHtcbiAgbW9kZWxTY2hlbWE6IHN0cmluZztcbn07XG5cbmNvbnN0IE1PREVMX1NDSEVNQV9LRVkgPSAnbW9kZWwtc2NoZW1hLmdyYXBocWwnO1xuY29uc3QgQ09OU09MRV9TRVJWSUNFX0VORFBPSU5UID0gRm4uam9pbignJywgWydodHRwczovLycsIEZuLnJlZignQVdTOjpSZWdpb24nKSwgJy5jb25zb2xlLmF3cy5hbWF6b24uY29tL2FtcGxpZnknXSk7XG5cbi8qKlxuICogQ29uc3RydWN0IGFuIFMzIFVSSSBzdHJpbmcgZm9yIGEgZ2l2ZW4gYnVja2V0IGFuZCBrZXkuXG4gKiBAcGFyYW0gYnVja2V0IHRoZSBidWNrZXQgdG8gZW1iZWQgaW4gdGhlIHVyaSBzdHJpbmdcbiAqIEBwYXJhbSBrZXkgdGhlIGtleSB0byBlbWJlZCBpbiB0aGUgdXJpIHN0cmluZ1xuICogQHJldHVybnMgdGhlIHVyaSBzdHJpbmcgcmVwcmVzZW50YXRpb24uXG4gKi9cbmNvbnN0IGdldFMzVXJpRm9yQnVja2V0QW5kS2V5ID0gKGJ1Y2tldDogSUJ1Y2tldCwga2V5OiBzdHJpbmcpOiBzdHJpbmcgPT4gYHMzOi8vJHtidWNrZXQuYnVja2V0TmFtZX0vJHtrZXl9YDtcblxuLyoqXG4gKiBDb25zdHJ1Y3Qgd2hpY2ggY3JlYXRlcyBhIGJ1Y2tldCwgYW5kIHVwbG9hZHMgZmlsZSBhc3NldHMgcmVxdWlyZWQgZm9yIGNvZGVnZW4gdG8gcnVuLlxuICogUG9pbnRlcnMgdG8gdGhlc2UgcmVzb3VyY2VzIGFyZSBwZXJzaXN0ZWQgaW4gdGhlIHN0YWNrIG91dHB1dHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb2RlZ2VuQXNzZXRzIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIG1vZGVsU2NoZW1hUzNVcmk6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ29kZWdlbkFzc2V0c1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGJ1Y2tldCA9IG5ldyBCdWNrZXQodGhpcywgYCR7aWR9QnVja2V0YCwge1xuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgYXV0b0RlbGV0ZU9iamVjdHM6IHRydWUsXG4gICAgICAvLyBFbmFibGluZyBDT1JTIHRvIGFsbG93IGNvbnNvbGUgdG8gYWNjZXNzIHRoZSBjb2RlZ2VuIGFzc2V0cy5cbiAgICAgIGNvcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFsbG93ZWRNZXRob2RzOiBbSHR0cE1ldGhvZHMuR0VULCBIdHRwTWV0aG9kcy5IRUFEXSxcbiAgICAgICAgICBhbGxvd2VkSGVhZGVyczogWycqJ10sXG4gICAgICAgICAgYWxsb3dlZE9yaWdpbnM6IFtDT05TT0xFX1NFUlZJQ0VfRU5EUE9JTlRdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGRlcGxveW1lbnQgPSBuZXcgQnVja2V0RGVwbG95bWVudCh0aGlzLCBgJHtpZH1EZXBsb3ltZW50YCwge1xuICAgICAgZGVzdGluYXRpb25CdWNrZXQ6IGJ1Y2tldCxcbiAgICAgIHNvdXJjZXM6IFtTb3VyY2UuZGF0YShNT0RFTF9TQ0hFTUFfS0VZLCBwcm9wcy5tb2RlbFNjaGVtYSldLFxuICAgICAgLy8gQnVja2V0IGRlcGxveW1lbnQgdXNlcyBhIExhbWJkYSB0aGF0IHJ1bnMgQVdTIFMzIENMSSB0byB0cmFuc2ZlciBhc3NldHMgdG8gZGVzdGluYXRpb24gYnVja2V0LlxuICAgICAgLy8gVGhhdCBMYW1iZGEgcmVxdWlyZXMgaGlnaGVyIG1lbW9yeSBzZXR0aW5nIHRvIHJ1biBmYXN0IGV2ZW4gd2hlbiBwcm9jZXNzaW5nIHNtYWxsIGFzc2V0cyAobGVzcyB0aGFuIDFrQikuXG4gICAgICAvLyBUaGlzIHNldHRpbmcgaGFzIGJlZW4gZXN0YWJsaXNoZWQgZXhwZXJpbWVudGFsbHkuIEJlbmNobWFyayBjYW4gYmUgZm91bmQgaW4gcHVsbCByZXF1ZXN0IGRlc2NyaXB0aW9uIHRoYXQgZXN0YWJsaXNoZWQgaXQuXG4gICAgICAvLyBUaGUgdmFsdWUgaGFzIGJlZW4gY2hvc2VuIHRvIHByZWZlciB0aGUgbG93ZXN0IGNvc3QgKHJ1biB0aW1lICogbWVtb3J5IGRlbWFuZCkgd2hpbGUgcHJvdmlkaW5nIHJlYXNvbmFibGUgcGVyZm9ybWFuY2UuXG4gICAgICBtZW1vcnlMaW1pdDogMTUzNixcbiAgICB9KTtcblxuICAgIHRoaXMubW9kZWxTY2hlbWFTM1VyaSA9IGdldFMzVXJpRm9yQnVja2V0QW5kS2V5KGRlcGxveW1lbnQuZGVwbG95ZWRCdWNrZXQsIE1PREVMX1NDSEVNQV9LRVkpO1xuICB9XG59XG4iXX0=