class_docstr: Base class for all app integrations to be implemented for various services
docstr: Invoke a successive app function to handle more logs
  
  This is useful when there were more logs to collect than could be accomplished
  in this execution. Instead of marking the config with 'success' and waiting
  for the next scheduled execution, this will invoke the lambda again with an
  'event' indicating there are more logs to collect. Other scheduled executions
  will not have an 'event' to allow for this type of override, and will exit
  when checking the 'self._config.is_running' property. This allows for chained
  invocations without the worry of duplicated effort or collisions.
docstr_tok: ["Invoke","a","successive","app","function","to","handle","more","logs","This","is","useful","when","there","were","more","logs","to","collect","than","could","be","accomplished","in","this","execution",".","Instead","of","marking","the","config","with","'success","'","and","waiting","for","the","next","scheduled","execution",",","this","will","invoke","the","lambda","again","with","an","'event","'","indicating","there","are","more","logs","to","collect",".","Other","scheduled","executions","will","not","have","an","'event","'","to","allow","for","this","type","of","override",",","and","will","exit","when","checking","the","'self._config.is_running","'","property",".","This","allows","for","chained","invocations","without","the","worry","of","duplicated","effort","or","collisions","."]
code: def _invoke_successive_app(self):
      """Invoke a successive app function to handle more logs
  
      This is useful when there were more logs to collect than could be accomplished
      in this execution. Instead of marking the config with 'success' and waiting
      for the next scheduled execution, this will invoke the lambda again with an
      'event' indicating there are more logs to collect. Other scheduled executions
      will not have an 'event' to allow for this type of override, and will exit
      when checking the 'self._config.is_running' property. This allows for chained
      invocations without the worry of duplicated effort or collisions.
      """
      lambda_client = boto3.client("lambda")
      try:
          response = lambda_client.invoke(
              FunctionName=self._config.function_name,
              InvocationType="Event",
              Payload=self._config.successive_event,
              Qualifier=self._config.function_version,
          )
      except ClientError as err:
          LOGGER.error(
              "An error occurred while invoking a subsequent app function "
              "('%s:%s'). Error is: %s",
              self._config.function_name,
              self._config.function_version,
              err.response,
          )
          raise
  
      LOGGER.info(
          "Invoking successive apps function '%s' with Lambda request ID '%s'",
          self._config.function_name,
          response["ResponseMetadata"]["RequestId"],
      )
  
imports: from abc import ABCMeta, abstractmethod, abstractproperty
  from json import JSONDecodeError
  import time
  import boto3
  from botocore.exceptions import ClientError
  import requests
  from streamalert.apps.config import AppConfig
  from streamalert.apps.batcher import Batcher
  from streamalert.shared.logger import get_logger
label_desc: Use image node_id 14 for calling the AppIntegration obj's underlying member method code with example usage: obj._invoke_successive_app() without return types