UNPKG

@cm-madlabs/cdk-constructs

Version:

AWS CDK Constructs that can be used universally

62 lines 7.57 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.FirehoseS3Athena = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const aws_glue_1 = require("@aws-cdk/aws-glue"); const aws_iam_1 = require("@aws-cdk/aws-iam"); const aws_kinesisfirehose_1 = require("@aws-cdk/aws-kinesisfirehose"); const aws_s3_1 = require("@aws-cdk/aws-s3"); const core_1 = require("@aws-cdk/core"); /** * Kinesis Firehose経由でS3に保存してAthenaでクエリできるようにするConstruct. * * @stability stable */ class FirehoseS3Athena extends core_1.Construct { /** * @stability stable */ constructor(scope, id, props) { super(scope, id); this.bucket = new aws_s3_1.Bucket(this, 'Bucket', { bucketName: props.bucketName, }); this.firehoseRole = new aws_iam_1.Role(this, 'Role', { roleName: props.roleName, assumedBy: new aws_iam_1.ServicePrincipal('firehose.amazonaws.com'), managedPolicies: [ aws_iam_1.ManagedPolicy.fromAwsManagedPolicyName('AmazonS3FullAccess'), ], }); this.delivery = new aws_kinesisfirehose_1.CfnDeliveryStream(this, 'Delivery', { deliveryStreamName: props.deliveryStreamName, deliveryStreamType: 'DirectPut', s3DestinationConfiguration: { bucketArn: this.bucket.bucketArn, prefix: props.prefix, bufferingHints: { intervalInSeconds: 60, sizeInMBs: 5, }, compressionFormat: 'GZIP', roleArn: this.firehoseRole.roleArn, }, }); this.database = new aws_glue_1.Database(this, 'Database', { databaseName: props.databaseName, }); this.table = new aws_glue_1.Table(this, 'Table', { database: this.database, tableName: props.tableName, columns: props.columns, dataFormat: aws_glue_1.DataFormat.JSON, bucket: this.bucket, s3Prefix: props.prefix, }); } } exports.FirehoseS3Athena = FirehoseS3Athena; _a = JSII_RTTI_SYMBOL_1; FirehoseS3Athena[_a] = { fqn: "@cm-madlabs/cdk-constructs.FirehoseS3Athena", version: "0.0.6" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyZWhvc2UtczMtYXRoZW5hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZpcmVob3NlLXMzLWF0aGVuYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdEQUsyQjtBQUMzQiw4Q0FJMEI7QUFDMUIsc0VBRXNDO0FBQ3RDLDRDQUV5QjtBQUN6Qix3Q0FFdUI7Ozs7OztBQTBDdkIsTUFBYSxnQkFBaUIsU0FBUSxnQkFBUzs7OztJQU83QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXdCO1FBQ2hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGVBQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQ3ZDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtTQUM3QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksY0FBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDekMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLFNBQVMsRUFBRSxJQUFJLDBCQUFnQixDQUFDLHdCQUF3QixDQUFDO1lBQ3pELGVBQWUsRUFBRTtnQkFDZix1QkFBYSxDQUFDLHdCQUF3QixDQUFDLG9CQUFvQixDQUFDO2FBQzdEO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHVDQUFpQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDdEQsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjtZQUM1QyxrQkFBa0IsRUFBRSxXQUFXO1lBQy9CLDBCQUEwQixFQUFFO2dCQUMxQixTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTO2dCQUNoQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07Z0JBQ3BCLGNBQWMsRUFBRTtvQkFDZCxpQkFBaUIsRUFBRSxFQUFFO29CQUNyQixTQUFTLEVBQUUsQ0FBQztpQkFDYjtnQkFDRCxpQkFBaUIsRUFBRSxNQUFNO2dCQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPO2FBQ25DO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG1CQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUM3QyxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7U0FDakMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGdCQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtZQUNwQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixVQUFVLEVBQUUscUJBQVUsQ0FBQyxJQUFJO1lBQzNCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixRQUFRLEVBQUUsS0FBSyxDQUFDLE1BQU07U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFqREgsNENBa0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29sdW1uLFxuICBEYXRhYmFzZSxcbiAgRGF0YUZvcm1hdCxcbiAgVGFibGUsXG59IGZyb20gJ0Bhd3MtY2RrL2F3cy1nbHVlJztcbmltcG9ydCB7XG4gIE1hbmFnZWRQb2xpY3ksXG4gIFJvbGUsXG4gIFNlcnZpY2VQcmluY2lwYWwsXG59IGZyb20gJ0Bhd3MtY2RrL2F3cy1pYW0nO1xuaW1wb3J0IHtcbiAgQ2ZuRGVsaXZlcnlTdHJlYW0sXG59IGZyb20gJ0Bhd3MtY2RrL2F3cy1raW5lc2lzZmlyZWhvc2UnO1xuaW1wb3J0IHtcbiAgQnVja2V0LFxufSBmcm9tICdAYXdzLWNkay9hd3MtczMnO1xuaW1wb3J0IHtcbiAgQ29uc3RydWN0LFxufSBmcm9tICdAYXdzLWNkay9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBJRmlyZWhvc2VTM0F0aGVuYSB7XG4gICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGJ1Y2tldE5hbWU/OiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSByb2xlTmFtZTogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZGVsaXZlcnlTdHJlYW1OYW1lPzogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGRhdGFiYXNlTmFtZTogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB0YWJsZU5hbWU6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBwcmVmaXg6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNvbHVtbnM6IENvbHVtbltdO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgRmlyZWhvc2VTM0F0aGVuYSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBidWNrZXQ6IEJ1Y2tldDtcbiAgcHVibGljIHJlYWRvbmx5IGZpcmVob3NlUm9sZTogUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IGRlbGl2ZXJ5OiBDZm5EZWxpdmVyeVN0cmVhbTtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGFiYXNlOiBEYXRhYmFzZTtcbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlOiBUYWJsZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSUZpcmVob3NlUzNBdGhlbmEpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5idWNrZXQgPSBuZXcgQnVja2V0KHRoaXMsICdCdWNrZXQnLCB7XG4gICAgICBidWNrZXROYW1lOiBwcm9wcy5idWNrZXROYW1lLFxuICAgIH0pO1xuXG4gICAgdGhpcy5maXJlaG9zZVJvbGUgPSBuZXcgUm9sZSh0aGlzLCAnUm9sZScsIHtcbiAgICAgIHJvbGVOYW1lOiBwcm9wcy5yb2xlTmFtZSxcbiAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2ZpcmVob3NlLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICBNYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnQW1hem9uUzNGdWxsQWNjZXNzJyksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kZWxpdmVyeSA9IG5ldyBDZm5EZWxpdmVyeVN0cmVhbSh0aGlzLCAnRGVsaXZlcnknLCB7XG4gICAgICBkZWxpdmVyeVN0cmVhbU5hbWU6IHByb3BzLmRlbGl2ZXJ5U3RyZWFtTmFtZSxcbiAgICAgIGRlbGl2ZXJ5U3RyZWFtVHlwZTogJ0RpcmVjdFB1dCcsXG4gICAgICBzM0Rlc3RpbmF0aW9uQ29uZmlndXJhdGlvbjoge1xuICAgICAgICBidWNrZXRBcm46IHRoaXMuYnVja2V0LmJ1Y2tldEFybixcbiAgICAgICAgcHJlZml4OiBwcm9wcy5wcmVmaXgsXG4gICAgICAgIGJ1ZmZlcmluZ0hpbnRzOiB7XG4gICAgICAgICAgaW50ZXJ2YWxJblNlY29uZHM6IDYwLFxuICAgICAgICAgIHNpemVJbk1CczogNSxcbiAgICAgICAgfSxcbiAgICAgICAgY29tcHJlc3Npb25Gb3JtYXQ6ICdHWklQJyxcbiAgICAgICAgcm9sZUFybjogdGhpcy5maXJlaG9zZVJvbGUucm9sZUFybixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFiYXNlID0gbmV3IERhdGFiYXNlKHRoaXMsICdEYXRhYmFzZScsIHtcbiAgICAgIGRhdGFiYXNlTmFtZTogcHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgIH0pO1xuXG4gICAgdGhpcy50YWJsZSA9IG5ldyBUYWJsZSh0aGlzLCAnVGFibGUnLCB7XG4gICAgICBkYXRhYmFzZTogdGhpcy5kYXRhYmFzZSxcbiAgICAgIHRhYmxlTmFtZTogcHJvcHMudGFibGVOYW1lLFxuICAgICAgY29sdW1uczogcHJvcHMuY29sdW1ucyxcbiAgICAgIGRhdGFGb3JtYXQ6IERhdGFGb3JtYXQuSlNPTixcbiAgICAgIGJ1Y2tldDogdGhpcy5idWNrZXQsXG4gICAgICBzM1ByZWZpeDogcHJvcHMucHJlZml4LFxuICAgIH0pO1xuICB9XG59XG4iXX0=