Как получить имя ресурса при использовании библиотеки обработки AWS CloudTrail

Я использую библиотеку обработки AWS CloudTrail для извлечения журналов Cloudtrail из AWS. На снимке экрана истории событий ниже (сделанном из веб-консоли CloudTrail) имя корзины, затронутой изменением, отражено в столбце: Resource name . Как я могу получить это же значение, используя функцию aws-cloudtrail-processing-library. Библиотека возвращает имя корзины, в которой CloudTrail сохраняет файлы журналов, а не затронутой корзины (выделено). Также, даже после загрузки логов из ведра, я не вижу этой информации.

введите здесь описание изображения

Вот фрагмент моего класса обработки:

public class AuditorCloudTrail {


public static void main(String[] args) throws InterruptedException {
    final Log logger = LogFactory.getLog(AuditorCloudTrail.class);



    final AWSCloudTrailProcessingExecutor executor = new AWSCloudTrailProcessingExecutor.Builder(
            new AuditorEventsProcessor(), new AuditorCloudTrailConfig()).withSourceFilter(new AuditorSourceFilter())
                    .withProgressReporter(new AuditorProgressReporter()).withEventFilter(new AuditorEventsFilter())
                    .withExceptionHandler(new AuditorExceptionHandler()).build();
    executor.start();

    // add shut down hook to gracefully stop executor (optional)
    Runtime.getRuntime().addShutdownHook(new Thread() {
        public void run() {
            logger.info("Shut Down Hook is called.");
            executor.stop();
        }
    });

    // register a Default Uncaught Exception Handler (optional)
    Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
        @Override
        public void uncaughtException(Thread t, Throwable e) {

            // Two options here:
            // First, we can call System.exit(1); in such case shut down hook will be
            // called.
            // Second, we can optionally restart another executor and start.
            final AWSCloudTrailProcessingExecutor executor = new AWSCloudTrailProcessingExecutor.Builder(
                    new AuditorEventsProcessor(), new AuditorCloudTrailConfig()).withSourceFilter(new AuditorSourceFilter())
                            .withEventFilter(new AuditorEventsFilter())
                            .withProgressReporter(new AuditorProgressReporter())
                            .withExceptionHandler(new AuditorExceptionHandler()).build();
            executor.start();

        }
    });

    // can optionally limit running time, or remove both lines so it is running
    // forever. (optional)
    Thread.sleep(24 * 60 * 60 * 1000);
    executor.stop();
}

и метод фильтрации событий:

   public boolean filterEvent(CloudTrailEvent event) throws CallbackException {
    CloudTrailEventData eventData = event.getEventData();    

    String eventSource = eventData.getEventSource();    

    try {
        saveEvent(eventData);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    return (eventSource.equals(IAM_EVENTS) || 
   eventSource.equals(S3_EVENTS));
}

person SyCode    schedule 09.11.2018    source источник


Ответы (1)


Я открыл этот вопрос как проблему на GitHub AWS Cloudtrail processing engine < href="https://github.com/aws/aws-cloudtrail-processing-library" rel="nofollow noreferrer">репозиторий. Ответ, который я получил, заключался в том, что эта функция в настоящее время не поддерживается с использованием процессорного движка. Таким образом, обходным путем было использование Logstash(требуется плагин cloudtrail плагин установку) для загрузки cloudtrail журналов на mongodbсервер из предварительно настроенной корзины AWS s3, как описано здесь, откуда можно использовать обычную обработку для извлечения желаемых событий, включая задействованные resources.

person SyCode    schedule 23.03.2019