cdk-athena-log
Version:
A CDK construct to create an Athena table for querying ALB logs.
82 lines • 13.2 kB
JavaScript
"use strict";
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AthenaTableForVpcFlowLog = 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");
/**
* A CDK construct to create an AWS Glue table for querying VPC Flow Logs with Athena.
* NOTE: This table requires you to run `MSCK REPAIR TABLE` to discover new partitions.
*/
class AthenaTableForVpcFlowLog extends constructs_1.Construct {
constructor(scope, id, props) {
super(scope, id);
const { logBucketName, databaseName, tableName, logPrefix } = props;
const stack = aws_cdk_lib_1.Stack.of(this);
const s3Location = `s3://${logBucketName}/${logPrefix}/AWSLogs/`;
this.table = new aws_cdk_lib_1.aws_glue.CfnTable(this, 'Default', {
catalogId: stack.account,
databaseName: databaseName,
tableInput: {
name: tableName,
tableType: 'EXTERNAL_TABLE',
parameters: {
'skip.header.line.count': '1',
},
partitionKeys: [
{ name: 'aws-account-id', type: 'string' },
{ name: 'aws-service', type: 'string' },
{ name: 'aws-region', type: 'string' },
{ name: 'year', type: 'string' },
{ name: 'month', type: 'string' },
{ name: 'day', type: 'string' },
{ name: 'hour', type: 'string' },
],
storageDescriptor: {
columns: [
{ name: 'version', type: 'int' },
{ name: 'account_id', type: 'string' },
{ name: 'interface_id', type: 'string' },
{ name: 'srcaddr', type: 'string' },
{ name: 'dstaddr', type: 'string' },
{ name: 'srcport', type: 'int' },
{ name: 'dstport', type: 'int' },
{ name: 'protocol', type: 'bigint' },
{ name: 'packets', type: 'bigint' },
{ name: 'bytes', type: 'bigint' },
{ name: 'start', type: 'bigint' },
{ name: 'end', type: 'bigint' },
{ name: 'action', type: 'string' },
{ name: 'log_status', type: 'string' },
{ name: 'vpc_id', type: 'string' },
{ name: 'subnet_id', type: 'string' },
{ name: 'instance_id', type: 'string' },
{ name: 'tcp_flags', type: 'int' },
{ name: 'type', type: 'string' },
{ name: 'pkt_srcaddr', type: 'string' },
{ name: 'pkt_dstaddr', type: 'string' },
{ name: 'region', type: 'string' },
{ name: 'az_id', type: 'string' },
{ name: 'sublocation_type', type: 'string' },
{ name: 'sublocation_id', type: 'string' },
{ name: 'pkt_src_aws_service', type: 'string' },
{ name: 'pkt_dst_aws_service', type: 'string' },
{ name: 'flow_direction', type: 'string' },
{ name: 'traffic_path', type: 'int' },
],
location: s3Location,
inputFormat: 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat',
outputFormat: 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat',
serdeInfo: {
serializationLibrary: 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe',
},
},
},
});
}
}
exports.AthenaTableForVpcFlowLog = AthenaTableForVpcFlowLog;
_a = JSII_RTTI_SYMBOL_1;
AthenaTableForVpcFlowLog[_a] = { fqn: "cdk-athena-log.AthenaTableForVpcFlowLog", version: "0.0.14" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRoZW5hLXRhYmxlLWZvci12cGMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXRoZW5hLXRhYmxlLWZvci12cGMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBc0Q7QUFDdEQsMkNBQXVDO0FBNEJ2Qzs7O0dBR0c7QUFDSCxNQUFhLHdCQUF5QixTQUFRLHNCQUFTO0lBR3JELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0M7UUFDNUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRXBFLE1BQU0sS0FBSyxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdCLE1BQU0sVUFBVSxHQUFHLFFBQVEsYUFBYSxJQUFJLFNBQVMsV0FBVyxDQUFDO1FBRWpFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxzQkFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQzlDLFNBQVMsRUFBRSxLQUFLLENBQUMsT0FBTztZQUN4QixZQUFZLEVBQUUsWUFBWTtZQUMxQixVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsU0FBUyxFQUFFLGdCQUFnQjtnQkFDM0IsVUFBVSxFQUFFO29CQUNWLHdCQUF3QixFQUFFLEdBQUc7aUJBQzlCO2dCQUNELGFBQWEsRUFBRTtvQkFDYixFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO29CQUMxQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtvQkFDdkMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7b0JBQ3RDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJ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Z0VBQWdFO29CQUM5RSxTQUFTLEVBQUU7d0JBQ1Qsb0JBQW9CLEVBQUUsNkRBQTZEO3FCQUNwRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF2RUgsNERBd0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzX2dsdWUgYXMgZ2x1ZSwgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciB0aGUgQXRoZW5hVGFibGVGb3JWcGNGbG93TG9nIGNvbnN0cnVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdGhlbmFUYWJsZUZvclZwY0Zsb3dMb2dQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgUzMgYnVja2V0IHdoZXJlIHRoZSBWUEMgRmxvdyBMb2dzIGFyZSBzdG9yZWQuXG4gICAqL1xuICByZWFkb25seSBsb2dCdWNrZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBHbHVlIGRhdGFiYXNlIHdoZXJlIHRoZSB0YWJsZSB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBkYXRhYmFzZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgZm9yIHRoZSBHbHVlIHRhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFibGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggd2l0aGluIHRoZSBTMyBidWNrZXQgd2hlcmUgbG9ncyBhcmUgbG9jYXRlZC5cbiAgICogQmFzZWQgb24geW91ciBjb2RlLCB0aGlzIHNob3VsZCBiZSAnZmxvd0xvZycuXG4gICAqL1xuICByZWFkb25seSBsb2dQcmVmaXg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIENESyBjb25zdHJ1Y3QgdG8gY3JlYXRlIGFuIEFXUyBHbHVlIHRhYmxlIGZvciBxdWVyeWluZyBWUEMgRmxvdyBMb2dzIHdpdGggQXRoZW5hLlxuICogTk9URTogVGhpcyB0YWJsZSByZXF1aXJlcyB5b3UgdG8gcnVuIGBNU0NLIFJFUEFJUiBUQUJMRWAgdG8gZGlzY292ZXIgbmV3IHBhcnRpdGlvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBdGhlbmFUYWJsZUZvclZwY0Zsb3dMb2cgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgdGFibGU6IGdsdWUuQ2ZuVGFibGU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEF0aGVuYVRhYmxlRm9yVnBjRmxvd0xvZ1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHsgbG9nQnVja2V0TmFtZSwgZGF0YWJhc2VOYW1lLCB0YWJsZU5hbWUsIGxvZ1ByZWZpeCB9ID0gcHJvcHM7XG5cbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHRoaXMpO1xuXG4gICAgY29uc3QgczNMb2NhdGlvbiA9IGBzMzovLyR7bG9nQnVja2V0TmFtZX0vJHtsb2dQcmVmaXh9L0FXU0xvZ3MvYDtcblxuICAgIHRoaXMudGFibGUgPSBuZXcgZ2x1ZS5DZm5UYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIGNhdGFsb2dJZDogc3RhY2suYWNjb3VudCxcbiAgICAgIGRhdGFiYXNlTmFtZTogZGF0YWJhc2VOYW1lLFxuICAgICAgdGFibGVJbnB1dDoge1xuICAgICAgICBuYW1lOiB0YWJsZU5hbWUsXG4gICAgICAgIHRhYmxlVHlwZTogJ0VYVEVSTkFMX1RBQkxFJyxcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICdza2lwLmhlYWRlci5saW5lLmNvdW50JzogJzEnLFxuICAgICAgICB9LFxuICAgICAgICBwYXJ0aXRpb25LZXlzOiBbXG4gICAgICAgICAgeyBuYW1lOiAnYXdzLWFjY291bnQtaWQnLCB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgIHsgbmFtZTogJ2F3cy1zZXJ2aWNlJywgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICB7IG5hbWU6ICdhd3MtcmVnaW9uJywgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICB7IG5hbWU6ICd5ZWFyJywgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICB7IG5hbWU6ICdtb250aCcsIHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgeyBuYW1lOiAnZGF5JywgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICB7IG5hbWU6ICdob3VyJywgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc3RvcmFnZURlc2NyaXB0b3I6IHtcbiAgICAgICAgICBjb2x1bW5zOiBbXG4gICAgICAgICAgICB7IG5hbWU6ICd2ZXJzaW9uJywgdHlwZTogJ2ludCcgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2FjY291bnRfaWQnLCB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnaW50ZXJmYWNlX2lkJywgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3NyY2FkZHInLCB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnZHN0YWRkcicsIHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdzcmNwb3J0JywgdHlwZTogJ2ludCcgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2RzdHBvcnQnLCB0eXBlOiAnaW50JyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAncHJvdG9jb2wnLCB0eXBlOiAnYmlnaW50JyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAncGFja2V0cycsIHR5cGU6ICdiaWdpbnQnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdieXRlcycsIHR5cGU6ICdiaWdpbnQnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdzdGFydCcsIHR5cGU6ICdiaWdpbnQnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdlbmQnLCB0eXBlOiAnYmlnaW50JyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnYWN0aW9uJywgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ2xvZ19zdGF0dXMnLCB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAndnBjX2lkJywgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3N1Ym5ldF9pZCcsIHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdpbnN0YW5jZV9pZCcsIHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICd0Y3BfZmxhZ3MnLCB0eXBlOiAnaW50JyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAndHlwZScsIHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdwa3Rfc3JjYWRkcicsIHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdwa3RfZHN0YWRkcicsIHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdyZWdpb24nLCB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnYXpfaWQnLCB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnc3VibG9jYXRpb25fdHlwZScsIHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdzdWJsb2NhdGlvbl9pZCcsIHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICB7IG5hbWU6ICdwa3Rfc3JjX2F3c19zZXJ2aWNlJywgdHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICAgIHsgbmFtZTogJ3BrdF9kc3RfYXdzX3NlcnZpY2UnLCB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAnZmxvd19kaXJlY3Rpb24nLCB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgeyBuYW1lOiAndHJhZmZpY19wYXRoJywgdHlwZTogJ2ludCcgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGxvY2F0aW9uOiBzM0xvY2F0aW9uLFxuICAgICAgICAgIGlucHV0Rm9ybWF0OiAnb3JnLmFwYWNoZS5oYWRvb3AuaGl2ZS5xbC5pby5wYXJxdWV0Lk1hcHJlZFBhcnF1ZXRJbnB1dEZvcm1hdCcsXG4gICAgICAgICAgb3V0cHV0Rm9ybWF0OiAnb3JnLmFwYWNoZS5oYWRvb3AuaGl2ZS5xbC5pby5wYXJxdWV0Lk1hcHJlZFBhcnF1ZXRPdXRwdXRGb3JtYXQnLFxuICAgICAgICAgIHNlcmRlSW5mbzoge1xuICAgICAgICAgICAgc2VyaWFsaXphdGlvbkxpYnJhcnk6ICdvcmcuYXBhY2hlLmhhZG9vcC5oaXZlLnFsLmlvLnBhcnF1ZXQuc2VyZGUuUGFycXVldEhpdmVTZXJEZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==