Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Apache NiFi flow template for processing events from Amazon CloudTrail. See https://www.batchiq.com/process-cloudtrail-events-with-nifi.html for details.
<?xml version="1.0" ?>
<template encoding-version="1.0">
<description>Template for processing events from Amazon CloudTrail.
See https://www.batchiq.com/process-cloudtrail-events-with-nifi.html</description>
<groupId>f46d6392-0158-1000-73ba-16e80594f898</groupId>
<name>CloudTrail_Event_Processing_Starter_Kit</name>
<snippet>
<processGroups>
<id>363e44cf-ed77-17f2-0000-000000000000</id>
<parentGroupId>f46d6392-0158-1000-0000-000000000000</parentGroupId>
<position>
<x>0.0</x>
<y>0.0</y>
</position>
<comments></comments>
<contents>
<connections>
<id>363e4520-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44cf-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44ea-ed77-17f2-0000-000000000000</groupId>
<id>363e44ec-ed77-17f2-0000-000000000000</id>
<type>INPUT_PORT</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<source>
<groupId>363e44d0-ed77-17f2-0000-000000000000</groupId>
<id>363e44d2-ed77-17f2-0000-000000000000</id>
<type>OUTPUT_PORT</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e4521-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44cf-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44fc-ed77-17f2-0000-000000000000</groupId>
<id>363e44fe-ed77-17f2-0000-000000000000</id>
<type>INPUT_PORT</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<source>
<groupId>363e44e5-ed77-17f2-0000-000000000000</groupId>
<id>363e44e7-ed77-17f2-0000-000000000000</id>
<type>OUTPUT_PORT</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e4522-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44cf-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44fc-ed77-17f2-0000-000000000000</groupId>
<id>363e44fe-ed77-17f2-0000-000000000000</id>
<type>INPUT_PORT</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<source>
<groupId>363e450c-ed77-17f2-0000-000000000000</groupId>
<id>363e450f-ed77-17f2-0000-000000000000</id>
<type>OUTPUT_PORT</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e4523-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44cf-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44d0-ed77-17f2-0000-000000000000</groupId>
<id>363e44d1-ed77-17f2-0000-000000000000</id>
<type>INPUT_PORT</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<source>
<groupId>363e44fc-ed77-17f2-0000-000000000000</groupId>
<id>363e44ff-ed77-17f2-0000-000000000000</id>
<type>OUTPUT_PORT</type>
</source>
<zIndex>0</zIndex>
</connections>
<processGroups>
<id>363e44d0-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44cf-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>942.0639589923894</x>
<y>289.308786972772</y>
</position>
<comments></comments>
<contents>
<connections>
<id>363e44e1-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d0-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44d0-ed77-17f2-0000-000000000000</groupId>
<id>363e44d2-ed77-17f2-0000-000000000000</id>
<type>OUTPUT_PORT</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<source>
<groupId>363e44d4-ed77-17f2-0000-000000000000</groupId>
<id>363e44d6-ed77-17f2-0000-000000000000</id>
<type>OUTPUT_PORT</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e44e2-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d0-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44d4-ed77-17f2-0000-000000000000</groupId>
<id>363e44d5-ed77-17f2-0000-000000000000</id>
<type>INPUT_PORT</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>matched</selectedRelationships>
<selectedRelationships>unmatched</selectedRelationships>
<source>
<groupId>363e44d0-ed77-17f2-0000-000000000000</groupId>
<id>363e44d3-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e44e3-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d0-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44d0-ed77-17f2-0000-000000000000</groupId>
<id>363e44d3-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<source>
<groupId>363e44d0-ed77-17f2-0000-000000000000</groupId>
<id>363e44d1-ed77-17f2-0000-000000000000</id>
<type>INPUT_PORT</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e44e4-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d0-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<bends>
<x>931.3882878579238</x>
<y>118.73973374440789</y>
</bends>
<bends>
<x>963.9349975585938</x>
<y>171.3463897705078</y>
</bends>
<destination>
<groupId>363e44d0-ed77-17f2-0000-000000000000</groupId>
<id>363e44d3-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>failure</selectedRelationships>
<source>
<groupId>363e44d0-ed77-17f2-0000-000000000000</groupId>
<id>363e44d3-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<inputPorts>
<id>363e44d1-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d0-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>530.2340130259844</x>
<y>-91.78433722255176</y>
</position>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<name>Raw CloudTrail Event JSON</name>
<state>STOPPED</state>
<type>INPUT_PORT</type>
</inputPorts>
<outputPorts>
<id>363e44d2-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d0-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>533.8798260142656</x>
<y>648.9790242314582</y>
</position>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<name>Enriched CloudTrail Event JSON</name>
<state>STOPPED</state>
<type>OUTPUT_PORT</type>
</outputPorts>
<processGroups>
<id>363e44d4-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d0-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>462.267589291753</x>
<y>337.87463878238447</y>
</position>
<comments></comments>
<contents>
<connections>
<id>363e44da-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d4-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44d4-ed77-17f2-0000-000000000000</groupId>
<id>363e44d6-ed77-17f2-0000-000000000000</id>
<type>OUTPUT_PORT</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>not found</selectedRelationships>
<source>
<groupId>363e44d4-ed77-17f2-0000-000000000000</groupId>
<id>363e44d8-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e44db-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d4-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44d4-ed77-17f2-0000-000000000000</groupId>
<id>363e44d8-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>has_ip_address</selectedRelationships>
<source>
<groupId>363e44d4-ed77-17f2-0000-000000000000</groupId>
<id>363e44d7-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e44dc-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d4-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44d4-ed77-17f2-0000-000000000000</groupId>
<id>363e44d6-ed77-17f2-0000-000000000000</id>
<type>OUTPUT_PORT</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>success</selectedRelationships>
<source>
<groupId>363e44d4-ed77-17f2-0000-000000000000</groupId>
<id>363e44d9-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e44dd-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d4-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44d4-ed77-17f2-0000-000000000000</groupId>
<id>363e44d9-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>found</selectedRelationships>
<source>
<groupId>363e44d4-ed77-17f2-0000-000000000000</groupId>
<id>363e44d8-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e44de-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d4-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44d4-ed77-17f2-0000-000000000000</groupId>
<id>363e44d7-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<source>
<groupId>363e44d4-ed77-17f2-0000-000000000000</groupId>
<id>363e44d5-ed77-17f2-0000-000000000000</id>
<type>INPUT_PORT</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e44df-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d4-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44d4-ed77-17f2-0000-000000000000</groupId>
<id>363e44d6-ed77-17f2-0000-000000000000</id>
<type>OUTPUT_PORT</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>unmatched</selectedRelationships>
<source>
<groupId>363e44d4-ed77-17f2-0000-000000000000</groupId>
<id>363e44d7-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e44e0-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d4-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<bends>
<x>1772.1090671928564</x>
<y>950.8526354228757</y>
</bends>
<bends>
<x>1800.6433715820312</x>
<y>998.8775939941406</y>
</bends>
<destination>
<groupId>363e44d4-ed77-17f2-0000-000000000000</groupId>
<id>363e44d9-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>failure</selectedRelationships>
<source>
<groupId>363e44d4-ed77-17f2-0000-000000000000</groupId>
<id>363e44d9-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<inputPorts>
<id>363e44d5-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d4-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>733.8448036575357</x>
<y>415.3040157878439</y>
</position>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<name>Raw CloudTrail Event JSON</name>
<state>STOPPED</state>
<type>INPUT_PORT</type>
</inputPorts>
<outputPorts>
<id>363e44d6-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d4-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>734.597550239567</x>
<y>954.8962451541464</y>
</position>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<name>Enriched CloudTrail Event JSON</name>
<state>STOPPED</state>
<type>OUTPUT_PORT</type>
</outputPorts>
<processors>
<id>363e44d7-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d4-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>679.5884441783281</x>
<y>600.3334553838021</y>
</position>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>
<key>Routing Strategy</key>
<value>
<name>Routing Strategy</name>
</value>
</entry>
<entry>
<key>has_ip_address</key>
<value>
<name>has_ip_address</name>
</value>
</entry>
</descriptors>
<executionNode>ALL</executionNode>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Routing Strategy</key>
<value>Route to Property name</value>
</entry>
<entry>
<key>has_ip_address</key>
<value>${cloudtrail.sourceIPAddress:matches('\d+\.\d+\.\d+\.\d+')}</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<name>Route IP Addresses for Geolocation</name>
<relationships>
<autoTerminate>false</autoTerminate>
<name>has_ip_address</name>
</relationships>
<relationships>
<autoTerminate>false</autoTerminate>
<name>unmatched</name>
</relationships>
<style></style>
<type>org.apache.nifi.processors.standard.RouteOnAttribute</type>
</processors>
<processors>
<id>363e44d8-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d4-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>1315.2273601939532</x>
<y>601.442342102552</y>
</position>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>
<key>Geo Database File</key>
<value>
<name>Geo Database File</name>
</value>
</entry>
<entry>
<key>IP Address Attribute</key>
<value>
<name>IP Address Attribute</name>
</value>
</entry>
</descriptors>
<executionNode>ALL</executionNode>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Geo Database File</key>
<value>/var/nifi/geoip/GeoLite2-City.mmdb</value>
</entry>
<entry>
<key>IP Address Attribute</key>
<value>cloudtrail.sourceIPAddress</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<name>GeoEnrichIP</name>
<relationships>
<autoTerminate>false</autoTerminate>
<name>found</name>
</relationships>
<relationships>
<autoTerminate>false</autoTerminate>
<name>not found</name>
</relationships>
<style></style>
<type>org.apache.nifi.processors.GeoEnrichIP</type>
</processors>
<processors>
<id>363e44d9-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d4-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>1317.1090671928564</x>
<y>910.8526354228757</y>
</position>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>
<key>Script Engine</key>
<value>
<name>Script Engine</name>
</value>
</entry>
<entry>
<key>Script File</key>
<value>
<name>Script File</name>
</value>
</entry>
<entry>
<key>Script Body</key>
<value>
<name>Script Body</name>
</value>
</entry>
<entry>
<key>Module Directory</key>
<value>
<name>Module Directory</name>
</value>
</entry>
</descriptors>
<executionNode>ALL</executionNode>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Script Engine</key>
<value>ECMAScript</value>
</entry>
<entry>
<key>Script File</key>
</entry>
<entry>
<key>Script Body</key>
<value>var flowFile = session.get();
if (flowFile !== null) {
var StreamCallback = Java.type("org.apache.nifi.processor.io.StreamCallback");
var IOUtils = Java.type("org.apache.commons.io.IOUtils");
var StandardCharsets = Java.type("java.nio.charset.StandardCharsets");
flowFile = session.write(flowFile, new StreamCallback(function(inputStream, outputStream) {
var inputJSON = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
var event = JSON.parse(inputJSON);
var geoIpAttribute = "cloudtrail.sourceIPAddress";
event.geo = {
"latitude": flowFile.getAttribute(geoIpAttribute + ".geo.latitude"),
"longitude": flowFile.getAttribute(geoIpAttribute + ".geo.longitude"),
"city": flowFile.getAttribute(geoIpAttribute + ".geo.city"),
"subdivision_isocode": flowFile.getAttribute(geoIpAttribute + ".geo.subdivision.isocode.0"),
"country": flowFile.getAttribute(geoIpAttribute + ".geo.country"),
"country_isocode": flowFile.getAttribute(geoIpAttribute + ".geo.country.isocode")
};
outputStream.write(JSON.stringify(event).getBytes(StandardCharsets.UTF_8));
}));
session.transfer(flowFile, REL_SUCCESS);
}</value>
</entry>
<entry>
<key>Module Directory</key>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<name>Add Geo to Event JSON</name>
<relationships>
<autoTerminate>false</autoTerminate>
<name>failure</name>
</relationships>
<relationships>
<autoTerminate>false</autoTerminate>
<name>success</name>
</relationships>
<style></style>
<type>org.apache.nifi.processors.script.ExecuteScript</type>
</processors>
</contents>
<name>Geo Enrichment</name>
</processGroups>
<processors>
<id>363e44d3-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44d0-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>476.38828785792384</x>
<y>78.73973374440789</y>
</position>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>
<key>Destination</key>
<value>
<name>Destination</name>
</value>
</entry>
<entry>
<key>Return Type</key>
<value>
<name>Return Type</name>
</value>
</entry>
<entry>
<key>Path Not Found Behavior</key>
<value>
<name>Path Not Found Behavior</name>
</value>
</entry>
<entry>
<key>Null Value Representation</key>
<value>
<name>Null Value Representation</name>
</value>
</entry>
<entry>
<key>cloudtrail.eventName</key>
<value>
<name>cloudtrail.eventName</name>
</value>
</entry>
<entry>
<key>cloudtrail.eventSource</key>
<value>
<name>cloudtrail.eventSource</name>
</value>
</entry>
<entry>
<key>cloudtrail.eventTime</key>
<value>
<name>cloudtrail.eventTime</name>
</value>
</entry>
<entry>
<key>cloudtrail.eventType</key>
<value>
<name>cloudtrail.eventType</name>
</value>
</entry>
<entry>
<key>cloudtrail.sourceIPAddress</key>
<value>
<name>cloudtrail.sourceIPAddress</name>
</value>
</entry>
<entry>
<key>cloudtrail.userIdentity.accessKeyId</key>
<value>
<name>cloudtrail.userIdentity.accessKeyId</name>
</value>
</entry>
<entry>
<key>cloudtrail.userIdentity.accountId</key>
<value>
<name>cloudtrail.userIdentity.accountId</name>
</value>
</entry>
<entry>
<key>cloudtrail.userIdentity.arn</key>
<value>
<name>cloudtrail.userIdentity.arn</name>
</value>
</entry>
<entry>
<key>cloudtrail.userIdentity.principalId</key>
<value>
<name>cloudtrail.userIdentity.principalId</name>
</value>
</entry>
<entry>
<key>cloudtrail.userIdentity.type</key>
<value>
<name>cloudtrail.userIdentity.type</name>
</value>
</entry>
</descriptors>
<executionNode>ALL</executionNode>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Destination</key>
<value>flowfile-attribute</value>
</entry>
<entry>
<key>Return Type</key>
<value>auto-detect</value>
</entry>
<entry>
<key>Path Not Found Behavior</key>
<value>ignore</value>
</entry>
<entry>
<key>Null Value Representation</key>
<value>empty string</value>
</entry>
<entry>
<key>cloudtrail.eventName</key>
<value>$.eventName</value>
</entry>
<entry>
<key>cloudtrail.eventSource</key>
<value>$.eventSource</value>
</entry>
<entry>
<key>cloudtrail.eventTime</key>
<value>$.eventTime</value>
</entry>
<entry>
<key>cloudtrail.eventType</key>
<value>$.eventType</value>
</entry>
<entry>
<key>cloudtrail.sourceIPAddress</key>
<value>$.sourceIPAddress</value>
</entry>
<entry>
<key>cloudtrail.userIdentity.accessKeyId</key>
<value>$.userIdentity.accessKeyId</value>
</entry>
<entry>
<key>cloudtrail.userIdentity.accountId</key>
<value>$.userIdentity.accountId</value>
</entry>
<entry>
<key>cloudtrail.userIdentity.arn</key>
<value>$.userIdentity.arn</value>
</entry>
<entry>
<key>cloudtrail.userIdentity.principalId</key>
<value>$.userIdentity.principalId</value>
</entry>
<entry>
<key>cloudtrail.userIdentity.type</key>
<value>$.userIdentity.type</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<name>Extract CloudTrail Attributes</name>
<relationships>
<autoTerminate>false</autoTerminate>
<name>failure</name>
</relationships>
<relationships>
<autoTerminate>false</autoTerminate>
<name>matched</name>
</relationships>
<relationships>
<autoTerminate>false</autoTerminate>
<name>unmatched</name>
</relationships>
<style></style>
<type>org.apache.nifi.processors.standard.EvaluateJsonPath</type>
</processors>
</contents>
<name>Enrich Event Info</name>
</processGroups>
<processGroups>
<id>363e44e5-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44cf-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>-322.59790343263955</x>
<y>71.90979890839179</y>
</position>
<comments></comments>
<contents>
<connections>
<id>363e44e9-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44e5-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44e5-ed77-17f2-0000-000000000000</groupId>
<id>363e44e7-ed77-17f2-0000-000000000000</id>
<type>OUTPUT_PORT</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>success</selectedRelationships>
<source>
<groupId>363e44e5-ed77-17f2-0000-000000000000</groupId>
<id>363e44e8-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<controllerServices>
<id>363e44e6-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44e5-ed77-17f2-0000-000000000000</parentGroupId>
<comments></comments>
<descriptors>
<entry>
<key>default-credentials</key>
<value>
<name>default-credentials</name>
</value>
</entry>
<entry>
<key>Access Key</key>
<value>
<name>Access Key</name>
</value>
</entry>
<entry>
<key>Secret Key</key>
<value>
<name>Secret Key</name>
</value>
</entry>
<entry>
<key>Credentials File</key>
<value>
<name>Credentials File</name>
</value>
</entry>
<entry>
<key>profile-name</key>
<value>
<name>profile-name</name>
</value>
</entry>
<entry>
<key>anonymous-credentials</key>
<value>
<name>anonymous-credentials</name>
</value>
</entry>
<entry>
<key>Assume Role ARN</key>
<value>
<name>Assume Role ARN</name>
</value>
</entry>
<entry>
<key>Assume Role Session Name</key>
<value>
<name>Assume Role Session Name</name>
</value>
</entry>
<entry>
<key>Session Time</key>
<value>
<name>Session Time</name>
</value>
</entry>
<entry>
<key>assume-role-external-id</key>
<value>
<name>assume-role-external-id</name>
</value>
</entry>
<entry>
<key>assume-role-proxy-host</key>
<value>
<name>assume-role-proxy-host</name>
</value>
</entry>
<entry>
<key>assume-role-proxy-port</key>
<value>
<name>assume-role-proxy-port</name>
</value>
</entry>
</descriptors>
<name>AWS Creds - Sample</name>
<properties>
<entry>
<key>default-credentials</key>
<value>true</value>
</entry>
<entry>
<key>Access Key</key>
</entry>
<entry>
<key>Secret Key</key>
</entry>
<entry>
<key>Credentials File</key>
</entry>
<entry>
<key>profile-name</key>
</entry>
<entry>
<key>anonymous-credentials</key>
<value>false</value>
</entry>
<entry>
<key>Assume Role ARN</key>
</entry>
<entry>
<key>Assume Role Session Name</key>
</entry>
<entry>
<key>Session Time</key>
<value>3600</value>
</entry>
<entry>
<key>assume-role-external-id</key>
</entry>
<entry>
<key>assume-role-proxy-host</key>
</entry>
<entry>
<key>assume-role-proxy-port</key>
</entry>
</properties>
<state>DISABLED</state>
<type>org.apache.nifi.processors.aws.credentials.provider.service.AWSCredentialsProviderControllerService</type>
</controllerServices>
<outputPorts>
<id>363e44e7-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44e5-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>335.2908835248754</x>
<y>270.5544629317385</y>
</position>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<name>S3 Log File References</name>
<state>STOPPED</state>
<type>OUTPUT_PORT</type>
</outputPorts>
<processors>
<id>363e44e8-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44e5-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>278.9999989472486</x>
<y>-12.000009340805377</y>
</position>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>
<key>Bucket</key>
<value>
<name>Bucket</name>
</value>
</entry>
<entry>
<key>Region</key>
<value>
<name>Region</name>
</value>
</entry>
<entry>
<key>Access Key</key>
<value>
<name>Access Key</name>
</value>
</entry>
<entry>
<key>Secret Key</key>
<value>
<name>Secret Key</name>
</value>
</entry>
<entry>
<key>Credentials File</key>
<value>
<name>Credentials File</name>
</value>
</entry>
<entry>
<key>AWS Credentials Provider service</key>
<value>
<identifiesControllerService>org.apache.nifi.processors.aws.credentials.provider.service.AWSCredentialsProviderService</identifiesControllerService>
<name>AWS Credentials Provider service</name>
</value>
</entry>
<entry>
<key>Communications Timeout</key>
<value>
<name>Communications Timeout</name>
</value>
</entry>
<entry>
<key>SSL Context Service</key>
<value>
<identifiesControllerService>org.apache.nifi.ssl.SSLContextService</identifiesControllerService>
<name>SSL Context Service</name>
</value>
</entry>
<entry>
<key>Endpoint Override URL</key>
<value>
<name>Endpoint Override URL</name>
</value>
</entry>
<entry>
<key>Signer Override</key>
<value>
<name>Signer Override</name>
</value>
</entry>
<entry>
<key>Proxy Host</key>
<value>
<name>Proxy Host</name>
</value>
</entry>
<entry>
<key>Proxy Host Port</key>
<value>
<name>Proxy Host Port</name>
</value>
</entry>
<entry>
<key>delimiter</key>
<value>
<name>delimiter</name>
</value>
</entry>
<entry>
<key>prefix</key>
<value>
<name>prefix</name>
</value>
</entry>
<entry>
<key>use-versions</key>
<value>
<name>use-versions</name>
</value>
</entry>
</descriptors>
<executionNode>ALL</executionNode>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Bucket</key>
<value>my-cloudtrail-log-bucket</value>
</entry>
<entry>
<key>Region</key>
<value>us-east-1</value>
</entry>
<entry>
<key>Access Key</key>
</entry>
<entry>
<key>Secret Key</key>
</entry>
<entry>
<key>Credentials File</key>
</entry>
<entry>
<key>AWS Credentials Provider service</key>
<value>363e44e6-ed77-17f2-0000-000000000000</value>
</entry>
<entry>
<key>Communications Timeout</key>
<value>30 secs</value>
</entry>
<entry>
<key>SSL Context Service</key>
</entry>
<entry>
<key>Endpoint Override URL</key>
</entry>
<entry>
<key>Signer Override</key>
<value>Default Signature</value>
</entry>
<entry>
<key>Proxy Host</key>
</entry>
<entry>
<key>Proxy Host Port</key>
</entry>
<entry>
<key>delimiter</key>
</entry>
<entry>
<key>prefix</key>
<value>CloudTrail-General/AWSLogs/167566334345/CloudTrail/us-east-1/2015/09/</value>
</entry>
<entry>
<key>use-versions</key>
<value>false</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>10 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<name>ListS3 Event Files</name>
<relationships>
<autoTerminate>false</autoTerminate>
<name>success</name>
</relationships>
<style></style>
<type>org.apache.nifi.processors.aws.s3.ListS3</type>
</processors>
</contents>
<name>Enumerate S3 Event Log Files</name>
</processGroups>
<processGroups>
<id>363e44ea-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44cf-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>944.9050709542614</x>
<y>610.7087073332818</y>
</position>
<comments></comments>
<contents>
<connections>
<id>363e44f3-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44ea-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44ea-ed77-17f2-0000-000000000000</groupId>
<id>363e44f2-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>success</selectedRelationships>
<source>
<groupId>363e44ea-ed77-17f2-0000-000000000000</groupId>
<id>363e44ef-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e44f4-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44ea-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44ea-ed77-17f2-0000-000000000000</groupId>
<id>363e44f1-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>merged</selectedRelationships>
<source>
<groupId>363e44ea-ed77-17f2-0000-000000000000</groupId>
<id>363e44f0-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e44f5-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44ea-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44ea-ed77-17f2-0000-000000000000</groupId>
<id>363e44ef-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>success</selectedRelationships>
<source>
<groupId>363e44ea-ed77-17f2-0000-000000000000</groupId>
<id>363e44f1-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e44f6-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44ea-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<bends>
<x>905.0000048559281</x>
<y>518.0000077111247</y>
</bends>
<bends>
<x>942.2825927734375</x>
<y>572.1982421875</y>
</bends>
<destination>
<groupId>363e44ea-ed77-17f2-0000-000000000000</groupId>
<id>363e44f1-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>failure</selectedRelationships>
<source>
<groupId>363e44ea-ed77-17f2-0000-000000000000</groupId>
<id>363e44f1-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e44f7-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44ea-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44ea-ed77-17f2-0000-000000000000</groupId>
<id>363e44ee-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>success</selectedRelationships>
<source>
<groupId>363e44ea-ed77-17f2-0000-000000000000</groupId>
<id>363e44f2-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e44f8-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44ea-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44ea-ed77-17f2-0000-000000000000</groupId>
<id>363e44f0-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>success</selectedRelationships>
<source>
<groupId>363e44ea-ed77-17f2-0000-000000000000</groupId>
<id>363e44ed-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e44f9-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44ea-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<bends>
<x>905.6804858129593</x>
<y>1029.0000077111247</y>
</bends>
<bends>
<x>935.68505859375</x>
<y>1077.56982421875</y>
</bends>
<destination>
<groupId>363e44ea-ed77-17f2-0000-000000000000</groupId>
<id>363e44f2-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>failure</selectedRelationships>
<source>
<groupId>363e44ea-ed77-17f2-0000-000000000000</groupId>
<id>363e44f2-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e44fa-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44ea-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<bends>
<x>903.0000048559281</x>
<y>258.0000077111247</y>
</bends>
<bends>
<x>934.0</x>
<y>307.0</y>
</bends>
<destination>
<groupId>363e44ea-ed77-17f2-0000-000000000000</groupId>
<id>363e44f0-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>failure</selectedRelationships>
<source>
<groupId>363e44ea-ed77-17f2-0000-000000000000</groupId>
<id>363e44f0-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e44fb-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44ea-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44ea-ed77-17f2-0000-000000000000</groupId>
<id>363e44ed-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<source>
<groupId>363e44ea-ed77-17f2-0000-000000000000</groupId>
<id>363e44ec-ed77-17f2-0000-000000000000</id>
<type>INPUT_PORT</type>
</source>
<zIndex>0</zIndex>
</connections>
<controllerServices>
<id>363e44eb-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44ea-ed77-17f2-0000-000000000000</parentGroupId>
<comments></comments>
<descriptors>
<entry>
<key>default-credentials</key>
<value>
<name>default-credentials</name>
</value>
</entry>
<entry>
<key>Access Key</key>
<value>
<name>Access Key</name>
</value>
</entry>
<entry>
<key>Secret Key</key>
<value>
<name>Secret Key</name>
</value>
</entry>
<entry>
<key>Credentials File</key>
<value>
<name>Credentials File</name>
</value>
</entry>
<entry>
<key>profile-name</key>
<value>
<name>profile-name</name>
</value>
</entry>
<entry>
<key>anonymous-credentials</key>
<value>
<name>anonymous-credentials</name>
</value>
</entry>
<entry>
<key>Assume Role ARN</key>
<value>
<name>Assume Role ARN</name>
</value>
</entry>
<entry>
<key>Assume Role Session Name</key>
<value>
<name>Assume Role Session Name</name>
</value>
</entry>
<entry>
<key>Session Time</key>
<value>
<name>Session Time</name>
</value>
</entry>
<entry>
<key>assume-role-external-id</key>
<value>
<name>assume-role-external-id</name>
</value>
</entry>
<entry>
<key>assume-role-proxy-host</key>
<value>
<name>assume-role-proxy-host</name>
</value>
</entry>
<entry>
<key>assume-role-proxy-port</key>
<value>
<name>assume-role-proxy-port</name>
</value>
</entry>
</descriptors>
<name>AWS Creds - Sample</name>
<properties>
<entry>
<key>default-credentials</key>
<value>true</value>
</entry>
<entry>
<key>Access Key</key>
</entry>
<entry>
<key>Secret Key</key>
</entry>
<entry>
<key>Credentials File</key>
</entry>
<entry>
<key>profile-name</key>
</entry>
<entry>
<key>anonymous-credentials</key>
<value>false</value>
</entry>
<entry>
<key>Assume Role ARN</key>
</entry>
<entry>
<key>Assume Role Session Name</key>
</entry>
<entry>
<key>Session Time</key>
<value>3600</value>
</entry>
<entry>
<key>assume-role-external-id</key>
</entry>
<entry>
<key>assume-role-proxy-host</key>
</entry>
<entry>
<key>assume-role-proxy-port</key>
</entry>
</properties>
<state>DISABLED</state>
<type>org.apache.nifi.processors.aws.credentials.provider.service.AWSCredentialsProviderControllerService</type>
</controllerServices>
<inputPorts>
<id>363e44ec-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44ea-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>501.44543942624057</x>
<y>-221.60643378667805</y>
</position>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<name>Event JSON</name>
<state>STOPPED</state>
<type>INPUT_PORT</type>
</inputPorts>
<processors>
<id>363e44ed-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44ea-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>446.84452754546965</x>
<y>-50.956764511879754</y>
</position>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>
<key>Delete Attributes Expression</key>
<value>
<name>Delete Attributes Expression</name>
</value>
</entry>
<entry>
<key>datetimegroup</key>
<value>
<name>datetimegroup</name>
</value>
</entry>
</descriptors>
<executionNode>ALL</executionNode>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Delete Attributes Expression</key>
</entry>
<entry>
<key>datetimegroup</key>
<value>${cloudtrail.eventTime:toDate("yyyy-MM-dd'T'HH:mm:ss'Z'"):format("yyyy-MM-dd")}</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<name>Extract Bundle DateTime</name>
<relationships>
<autoTerminate>false</autoTerminate>
<name>success</name>
</relationships>
<style></style>
<type>org.apache.nifi.processors.attributes.UpdateAttribute</type>
</processors>
<processors>
<id>363e44ee-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44ea-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>449.9534855947479</x>
<y>1251.7389759399207</y>
</position>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>
<key>Log Level</key>
<value>
<name>Log Level</name>
</value>
</entry>
<entry>
<key>Log Payload</key>
<value>
<name>Log Payload</name>
</value>
</entry>
<entry>
<key>Attributes to Log</key>
<value>
<name>Attributes to Log</name>
</value>
</entry>
<entry>
<key>Attributes to Ignore</key>
<value>
<name>Attributes to Ignore</name>
</value>
</entry>
<entry>
<key>Log prefix</key>
<value>
<name>Log prefix</name>
</value>
</entry>
</descriptors>
<executionNode>ALL</executionNode>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Log Level</key>
<value>info</value>
</entry>
<entry>
<key>Log Payload</key>
<value>false</value>
</entry>
<entry>
<key>Attributes to Log</key>
<value>path,filename,datetimegroup,merge.count</value>
</entry>
<entry>
<key>Attributes to Ignore</key>
</entry>
<entry>
<key>Log prefix</key>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<name>Log CloudTrail Event Bundle</name>
<relationships>
<autoTerminate>true</autoTerminate>
<name>success</name>
</relationships>
<style></style>
<type>org.apache.nifi.processors.standard.LogAttribute</type>
</processors>
<processors>
<id>363e44ef-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44ea-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>450.00000485592807</x>
<y>729.6804886681559</y>
</position>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>
<key>Delete Attributes Expression</key>
<value>
<name>Delete Attributes Expression</name>
</value>
</entry>
<entry>
<key>alt_filename</key>
<value>
<name>alt_filename</name>
</value>
</entry>
<entry>
<key>filename</key>
<value>
<name>filename</name>
</value>
</entry>
<entry>
<key>path</key>
<value>
<name>path</name>
</value>
</entry>
</descriptors>
<executionNode>ALL</executionNode>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Delete Attributes Expression</key>
</entry>
<entry>
<key>alt_filename</key>
<value>cloudtrail-${merge.count}-events-${now():format("yyyy-MM-dd'T'HH-mm-ss")}.json.gz</value>
</entry>
<entry>
<key>filename</key>
<value>cloudtrail-${merge.count}-events-${datetimegroup}.json.gz</value>
</entry>
<entry>
<key>path</key>
<value>athena-security/events/${datetimegroup:replace("-", "/")}</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<name>Update Path and Filename</name>
<relationships>
<autoTerminate>false</autoTerminate>
<name>success</name>
</relationships>
<style></style>
<type>org.apache.nifi.processors.attributes.UpdateAttribute</type>
</processors>
<processors>
<id>363e44f0-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44ea-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>448.00000485592807</x>
<y>218.00000771112468</y>
</position>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>
<key>Merge Strategy</key>
<value>
<name>Merge Strategy</name>
</value>
</entry>
<entry>
<key>Merge Format</key>
<value>
<name>Merge Format</name>
</value>
</entry>
<entry>
<key>Attribute Strategy</key>
<value>
<name>Attribute Strategy</name>
</value>
</entry>
<entry>
<key>Correlation Attribute Name</key>
<value>
<name>Correlation Attribute Name</name>
</value>
</entry>
<entry>
<key>Minimum Number of Entries</key>
<value>
<name>Minimum Number of Entries</name>
</value>
</entry>
<entry>
<key>Maximum Number of Entries</key>
<value>
<name>Maximum Number of Entries</name>
</value>
</entry>
<entry>
<key>Minimum Group Size</key>
<value>
<name>Minimum Group Size</name>
</value>
</entry>
<entry>
<key>Maximum Group Size</key>
<value>
<name>Maximum Group Size</name>
</value>
</entry>
<entry>
<key>Max Bin Age</key>
<value>
<name>Max Bin Age</name>
</value>
</entry>
<entry>
<key>Maximum number of Bins</key>
<value>
<name>Maximum number of Bins</name>
</value>
</entry>
<entry>
<key>Delimiter Strategy</key>
<value>
<name>Delimiter Strategy</name>
</value>
</entry>
<entry>
<key>Header File</key>
<value>
<name>Header File</name>
</value>
</entry>
<entry>
<key>Footer File</key>
<value>
<name>Footer File</name>
</value>
</entry>
<entry>
<key>Demarcator File</key>
<value>
<name>Demarcator File</name>
</value>
</entry>
<entry>
<key>Compression Level</key>
<value>
<name>Compression Level</name>
</value>
</entry>
<entry>
<key>Keep Path</key>
<value>
<name>Keep Path</name>
</value>
</entry>
</descriptors>
<executionNode>ALL</executionNode>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Merge Strategy</key>
<value>Bin-Packing Algorithm</value>
</entry>
<entry>
<key>Merge Format</key>
<value>Binary Concatenation</value>
</entry>
<entry>
<key>Attribute Strategy</key>
<value>Keep Only Common Attributes</value>
</entry>
<entry>
<key>Correlation Attribute Name</key>
<value>datetimegroup</value>
</entry>
<entry>
<key>Minimum Number of Entries</key>
<value>10000</value>
</entry>
<entry>
<key>Maximum Number of Entries</key>
<value>10000</value>
</entry>
<entry>
<key>Minimum Group Size</key>
<value>0 B</value>
</entry>
<entry>
<key>Maximum Group Size</key>
</entry>
<entry>
<key>Max Bin Age</key>
<value>5 min</value>
</entry>
<entry>
<key>Maximum number of Bins</key>
<value>100</value>
</entry>
<entry>
<key>Delimiter Strategy</key>
<value>Text</value>
</entry>
<entry>
<key>Header File</key>
</entry>
<entry>
<key>Footer File</key>
</entry>
<entry>
<key>Demarcator File</key>
<value>
</value>
</entry>
<entry>
<key>Compression Level</key>
<value>1</value>
</entry>
<entry>
<key>Keep Path</key>
<value>false</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<name>Bundle Events</name>
<relationships>
<autoTerminate>false</autoTerminate>
<name>failure</name>
</relationships>
<relationships>
<autoTerminate>false</autoTerminate>
<name>merged</name>
</relationships>
<relationships>
<autoTerminate>true</autoTerminate>
<name>original</name>
</relationships>
<style></style>
<type>org.apache.nifi.processors.standard.MergeContent</type>
</processors>
<processors>
<id>363e44f1-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44ea-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>450.00000485592807</x>
<y>478.0000077111247</y>
</position>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>
<key>Mode</key>
<value>
<name>Mode</name>
</value>
</entry>
<entry>
<key>Compression Format</key>
<value>
<name>Compression Format</name>
</value>
</entry>
<entry>
<key>Compression Level</key>
<value>
<name>Compression Level</name>
</value>
</entry>
<entry>
<key>Update Filename</key>
<value>
<name>Update Filename</name>
</value>
</entry>
</descriptors>
<executionNode>ALL</executionNode>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Mode</key>
<value>compress</value>
</entry>
<entry>
<key>Compression Format</key>
<value>gzip</value>
</entry>
<entry>
<key>Compression Level</key>
<value>1</value>
</entry>
<entry>
<key>Update Filename</key>
<value>false</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<name>Gzip Bundles</name>
<relationships>
<autoTerminate>false</autoTerminate>
<name>failure</name>
</relationships>
<relationships>
<autoTerminate>false</autoTerminate>
<name>success</name>
</relationships>
<style></style>
<type>org.apache.nifi.processors.standard.CompressContent</type>
</processors>
<processors>
<id>363e44f2-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44ea-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>450.6804858129593</x>
<y>989.0000077111247</y>
</position>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>
<key>Object Key</key>
<value>
<name>Object Key</name>
</value>
</entry>
<entry>
<key>Bucket</key>
<value>
<name>Bucket</name>
</value>
</entry>
<entry>
<key>Content Type</key>
<value>
<name>Content Type</name>
</value>
</entry>
<entry>
<key>Access Key</key>
<value>
<name>Access Key</name>
</value>
</entry>
<entry>
<key>Secret Key</key>
<value>
<name>Secret Key</name>
</value>
</entry>
<entry>
<key>Credentials File</key>
<value>
<name>Credentials File</name>
</value>
</entry>
<entry>
<key>AWS Credentials Provider service</key>
<value>
<identifiesControllerService>org.apache.nifi.processors.aws.credentials.provider.service.AWSCredentialsProviderService</identifiesControllerService>
<name>AWS Credentials Provider service</name>
</value>
</entry>
<entry>
<key>Storage Class</key>
<value>
<name>Storage Class</name>
</value>
</entry>
<entry>
<key>Region</key>
<value>
<name>Region</name>
</value>
</entry>
<entry>
<key>Communications Timeout</key>
<value>
<name>Communications Timeout</name>
</value>
</entry>
<entry>
<key>Expiration Time Rule</key>
<value>
<name>Expiration Time Rule</name>
</value>
</entry>
<entry>
<key>FullControl User List</key>
<value>
<name>FullControl User List</name>
</value>
</entry>
<entry>
<key>Read Permission User List</key>
<value>
<name>Read Permission User List</name>
</value>
</entry>
<entry>
<key>Write Permission User List</key>
<value>
<name>Write Permission User List</name>
</value>
</entry>
<entry>
<key>Read ACL User List</key>
<value>
<name>Read ACL User List</name>
</value>
</entry>
<entry>
<key>Write ACL User List</key>
<value>
<name>Write ACL User List</name>
</value>
</entry>
<entry>
<key>Owner</key>
<value>
<name>Owner</name>
</value>
</entry>
<entry>
<key>canned-acl</key>
<value>
<name>canned-acl</name>
</value>
</entry>
<entry>
<key>SSL Context Service</key>
<value>
<identifiesControllerService>org.apache.nifi.ssl.SSLContextService</identifiesControllerService>
<name>SSL Context Service</name>
</value>
</entry>
<entry>
<key>Endpoint Override URL</key>
<value>
<name>Endpoint Override URL</name>
</value>
</entry>
<entry>
<key>Signer Override</key>
<value>
<name>Signer Override</name>
</value>
</entry>
<entry>
<key>Multipart Threshold</key>
<value>
<name>Multipart Threshold</name>
</value>
</entry>
<entry>
<key>Multipart Part Size</key>
<value>
<name>Multipart Part Size</name>
</value>
</entry>
<entry>
<key>Multipart Upload AgeOff Interval</key>
<value>
<name>Multipart Upload AgeOff Interval</name>
</value>
</entry>
<entry>
<key>Multipart Upload Max Age Threshold</key>
<value>
<name>Multipart Upload Max Age Threshold</name>
</value>
</entry>
<entry>
<key>server-side-encryption</key>
<value>
<name>server-side-encryption</name>
</value>
</entry>
<entry>
<key>Proxy Host</key>
<value>
<name>Proxy Host</name>
</value>
</entry>
<entry>
<key>Proxy Host Port</key>
<value>
<name>Proxy Host Port</name>
</value>
</entry>
</descriptors>
<executionNode>ALL</executionNode>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Object Key</key>
<value>${path}/${filename}</value>
</entry>
<entry>
<key>Bucket</key>
<value>my-cloudtrail-log-bucket</value>
</entry>
<entry>
<key>Content Type</key>
</entry>
<entry>
<key>Access Key</key>
</entry>
<entry>
<key>Secret Key</key>
</entry>
<entry>
<key>Credentials File</key>
</entry>
<entry>
<key>AWS Credentials Provider service</key>
<value>363e44eb-ed77-17f2-0000-000000000000</value>
</entry>
<entry>
<key>Storage Class</key>
<value>Standard</value>
</entry>
<entry>
<key>Region</key>
<value>us-west-2</value>
</entry>
<entry>
<key>Communications Timeout</key>
<value>30 secs</value>
</entry>
<entry>
<key>Expiration Time Rule</key>
</entry>
<entry>
<key>FullControl User List</key>
<value>${s3.permissions.full.users}</value>
</entry>
<entry>
<key>Read Permission User List</key>
<value>${s3.permissions.read.users}</value>
</entry>
<entry>
<key>Write Permission User List</key>
<value>${s3.permissions.write.users}</value>
</entry>
<entry>
<key>Read ACL User List</key>
<value>${s3.permissions.readacl.users}</value>
</entry>
<entry>
<key>Write ACL User List</key>
<value>${s3.permissions.writeacl.users}</value>
</entry>
<entry>
<key>Owner</key>
<value>${s3.owner}</value>
</entry>
<entry>
<key>canned-acl</key>
<value>${s3.permissions.cannedacl}</value>
</entry>
<entry>
<key>SSL Context Service</key>
</entry>
<entry>
<key>Endpoint Override URL</key>
</entry>
<entry>
<key>Signer Override</key>
<value>Default Signature</value>
</entry>
<entry>
<key>Multipart Threshold</key>
<value>5 GB</value>
</entry>
<entry>
<key>Multipart Part Size</key>
<value>5 GB</value>
</entry>
<entry>
<key>Multipart Upload AgeOff Interval</key>
<value>60 min</value>
</entry>
<entry>
<key>Multipart Upload Max Age Threshold</key>
<value>7 days</value>
</entry>
<entry>
<key>server-side-encryption</key>
<value>None</value>
</entry>
<entry>
<key>Proxy Host</key>
</entry>
<entry>
<key>Proxy Host Port</key>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<name>Save Bundles to S3</name>
<relationships>
<autoTerminate>false</autoTerminate>
<name>failure</name>
</relationships>
<relationships>
<autoTerminate>false</autoTerminate>
<name>success</name>
</relationships>
<style></style>
<type>org.apache.nifi.processors.aws.s3.PutS3Object</type>
</processors>
</contents>
<name>Write Events to S3 for Athena</name>
</processGroups>
<processGroups>
<id>363e44fc-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44cf-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>312.302580734358</x>
<y>290.0382902197415</y>
</position>
<comments></comments>
<contents>
<connections>
<id>363e4504-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44fc-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44fc-ed77-17f2-0000-000000000000</groupId>
<id>363e44ff-ed77-17f2-0000-000000000000</id>
<type>OUTPUT_PORT</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>split</selectedRelationships>
<source>
<groupId>363e44fc-ed77-17f2-0000-000000000000</groupId>
<id>363e4501-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e4505-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44fc-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<bends>
<x>735.2564076386549</x>
<y>974.6539861731108</y>
</bends>
<bends>
<x>763.2564086914062</x>
<y>1025.6539916992188</y>
</bends>
<destination>
<groupId>363e44fc-ed77-17f2-0000-000000000000</groupId>
<id>363e4501-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>failure</selectedRelationships>
<source>
<groupId>363e44fc-ed77-17f2-0000-000000000000</groupId>
<id>363e4501-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e4506-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44fc-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44fc-ed77-17f2-0000-000000000000</groupId>
<id>363e4501-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>success</selectedRelationships>
<source>
<groupId>363e44fc-ed77-17f2-0000-000000000000</groupId>
<id>363e4503-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e4507-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44fc-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44fc-ed77-17f2-0000-000000000000</groupId>
<id>363e4500-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>success</selectedRelationships>
<source>
<groupId>363e44fc-ed77-17f2-0000-000000000000</groupId>
<id>363e4502-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e4508-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44fc-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44fc-ed77-17f2-0000-000000000000</groupId>
<id>363e4502-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<source>
<groupId>363e44fc-ed77-17f2-0000-000000000000</groupId>
<id>363e44fe-ed77-17f2-0000-000000000000</id>
<type>INPUT_PORT</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e4509-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44fc-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<bends>
<x>733.2563771210768</x>
<y>505.50005550904814</y>
</bends>
<bends>
<x>762.2563781738281</x>
<y>554.5000610351562</y>
</bends>
<destination>
<groupId>363e44fc-ed77-17f2-0000-000000000000</groupId>
<id>363e4500-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>failure</selectedRelationships>
<source>
<groupId>363e44fc-ed77-17f2-0000-000000000000</groupId>
<id>363e4500-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e450a-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44fc-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<bends>
<x>734.9999989472486</x>
<y>266.30770321412626</y>
</bends>
<bends>
<x>767.0</x>
<y>321.3077087402344</y>
</bends>
<destination>
<groupId>363e44fc-ed77-17f2-0000-000000000000</groupId>
<id>363e4502-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>failure</selectedRelationships>
<source>
<groupId>363e44fc-ed77-17f2-0000-000000000000</groupId>
<id>363e4502-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<connections>
<id>363e450b-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44fc-ed77-17f2-0000-000000000000</parentGroupId>
<backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold>
<backPressureObjectThreshold>10000</backPressureObjectThreshold>
<destination>
<groupId>363e44fc-ed77-17f2-0000-000000000000</groupId>
<id>363e4503-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</destination>
<flowFileExpiration>0 sec</flowFileExpiration>
<labelIndex>1</labelIndex>
<name></name>
<selectedRelationships>success</selectedRelationships>
<source>
<groupId>363e44fc-ed77-17f2-0000-000000000000</groupId>
<id>363e4500-ed77-17f2-0000-000000000000</id>
<type>PROCESSOR</type>
</source>
<zIndex>0</zIndex>
</connections>
<controllerServices>
<id>363e44fd-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44fc-ed77-17f2-0000-000000000000</parentGroupId>
<comments></comments>
<descriptors>
<entry>
<key>default-credentials</key>
<value>
<name>default-credentials</name>
</value>
</entry>
<entry>
<key>Access Key</key>
<value>
<name>Access Key</name>
</value>
</entry>
<entry>
<key>Secret Key</key>
<value>
<name>Secret Key</name>
</value>
</entry>
<entry>
<key>Credentials File</key>
<value>
<name>Credentials File</name>
</value>
</entry>
<entry>
<key>profile-name</key>
<value>
<name>profile-name</name>
</value>
</entry>
<entry>
<key>anonymous-credentials</key>
<value>
<name>anonymous-credentials</name>
</value>
</entry>
<entry>
<key>Assume Role ARN</key>
<value>
<name>Assume Role ARN</name>
</value>
</entry>
<entry>
<key>Assume Role Session Name</key>
<value>
<name>Assume Role Session Name</name>
</value>
</entry>
<entry>
<key>Session Time</key>
<value>
<name>Session Time</name>
</value>
</entry>
<entry>
<key>assume-role-external-id</key>
<value>
<name>assume-role-external-id</name>
</value>
</entry>
<entry>
<key>assume-role-proxy-host</key>
<value>
<name>assume-role-proxy-host</name>
</value>
</entry>
<entry>
<key>assume-role-proxy-port</key>
<value>
<name>assume-role-proxy-port</name>
</value>
</entry>
</descriptors>
<name>AWS Creds - Sample</name>
<properties>
<entry>
<key>default-credentials</key>
<value>true</value>
</entry>
<entry>
<key>Access Key</key>
</entry>
<entry>
<key>Secret Key</key>
</entry>
<entry>
<key>Credentials File</key>
</entry>
<entry>
<key>profile-name</key>
</entry>
<entry>
<key>anonymous-credentials</key>
<value>false</value>
</entry>
<entry>
<key>Assume Role ARN</key>
</entry>
<entry>
<key>Assume Role Session Name</key>
</entry>
<entry>
<key>Session Time</key>
<value>3600</value>
</entry>
<entry>
<key>assume-role-external-id</key>
</entry>
<entry>
<key>assume-role-proxy-host</key>
</entry>
<entry>
<key>assume-role-proxy-port</key>
</entry>
</properties>
<state>DISABLED</state>
<type>org.apache.nifi.processors.aws.credentials.provider.service.AWSCredentialsProviderControllerService</type>
</controllerServices>
<inputPorts>
<id>363e44fe-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44fc-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>334.8657394650087</x>
<y>84.29000520586493</y>
</position>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<name>S3 Log File References</name>
<state>STOPPED</state>
<type>INPUT_PORT</type>
</inputPorts>
<outputPorts>
<id>363e44ff-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44fc-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>336.3823752240942</x>
<y>1180.6017346602541</y>
</position>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<name>CloudTrail Events - JSON</name>
<state>STOPPED</state>
<type>OUTPUT_PORT</type>
</outputPorts>
<processors>
<id>363e4500-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44fc-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>278.25637712107675</x>
<y>465.50005550904814</y>
</position>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>
<key>Mode</key>
<value>
<name>Mode</name>
</value>
</entry>
<entry>
<key>Compression Format</key>
<value>
<name>Compression Format</name>
</value>
</entry>
<entry>
<key>Compression Level</key>
<value>
<name>Compression Level</name>
</value>
</entry>
<entry>
<key>Update Filename</key>
<value>
<name>Update Filename</name>
</value>
</entry>
</descriptors>
<executionNode>ALL</executionNode>
<lossTolerant>false</lossTolerant>
<penaltyDuration>30 sec</penaltyDuration>
<properties>
<entry>
<key>Mode</key>
<value>decompress</value>
</entry>
<entry>
<key>Compression Format</key>
<value>gzip</value>
</entry>
<entry>
<key>Compression Level</key>
<value>1</value>
</entry>
<entry>
<key>Update Filename</key>
<value>false</value>
</entry>
</properties>
<runDurationMillis>0</runDurationMillis>
<schedulingPeriod>0 sec</schedulingPeriod>
<schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
<yieldDuration>1 sec</yieldDuration>
</config>
<name>Un-Gzip</name>
<relationships>
<autoTerminate>false</autoTerminate>
<name>failure</name>
</relationships>
<relationships>
<autoTerminate>false</autoTerminate>
<name>success</name>
</relationships>
<style></style>
<type>org.apache.nifi.processors.standard.CompressContent</type>
</processors>
<processors>
<id>363e4501-ed77-17f2-0000-000000000000</id>
<parentGroupId>363e44fc-ed77-17f2-0000-000000000000</parentGroupId>
<position>
<x>280.2564076386549</x>
<y>934.6539861731108</y>
</position>
<config>
<bulletinLevel>WARN</bulletinLevel>
<comments></comments>
<concurrentlySchedulableTaskCount>1</concurrentlySchedulableTaskCount>
<descriptors>
<entry>