Example #1
0
def _generate_streamquery_module(config):
    """
    Generates .tf.json file for scheduled queries
    """
    tf_file_name = os.path.join(config.build_directory,
                                'scheduled_queries.tf.json')
    if not config.get('scheduled_queries', {}).get('enabled', False):
        remove_temp_terraform_file(tf_file_name)
        return

    _create_terraform_module_file(
        generate_scheduled_queries_module_configuration(config), tf_file_name)
Example #2
0
def _generate_streamquery_module(config):
    """
    Generates .tf.json file for scheduled queries
    """
    tf_file_name = os.path.join(TERRAFORM_FILES_PATH,
                                'scheduled_queries.tf.json')
    if not config.get('scheduled_queries', {}).get('enabled', False):
        remove_temp_terraform_file(
            tf_file_name, 'Removing old scheduled queries Terraform file')
        return

    _create_terraform_module_file(
        generate_scheduled_queries_module_configuration(config), tf_file_name)
def test_generate_scheduled_queries():
    """CLI - Terraform Generate Scheduled Queries"""

    expected_sq_config = {
        'module': {
            'scheduled_queries': {
                'source': './modules/tf_scheduled_queries',
                'destination_kinesis_stream': 'unit-test_stream',
                'sfn_timeout_secs': 3600,
                'sfn_wait_secs': 30,
                'prefix': 'unit-test',
                'account_id': '12345678910',
                'region': 'us-west-1',
                'athena_database': 'unit-test_streamalert',
                'athena_results_bucket': 'unit-test-streamalert-athena-results',
                'athena_s3_buckets': [
                    '${aws_s3_bucket.streamalerts.bucket}',
                    '${module.kinesis_firehose_setup.data_bucket_name}',
                    'bucket',
                ],
                'lambda_handler': 'streamalert.scheduled_queries.main.handler',
                'query_packs': [
                    {
                        'name': 'hourly',
                        'schedule_expression': 'cron(5 * * * ? *)',
                        'description': 'Runs all hourly queries. Once per day on :05'
                    }
                ],
                'lambda_log_level': 'info',
                'lambda_memory': 128,
                'lambda_timeout': 60,
                'lambda_log_retention_days': 14,
                'lambda_alarms_enabled': True,
                'lambda_error_threshold': 1,
                'lambda_error_period_secs': 3600,
                'lambda_error_evaluation_periods': 2,
                'lambda_alarm_actions': [
                    'arn:aws:sns:us-west-1:12345678910:unit-test_streamalert_monitoring'
                ],
            }
        }
    }

    result = scheduled_queries.generate_scheduled_queries_module_configuration(CONFIG)

    assert_equal(result, expected_sq_config)