class_docstr: LambdaOutput handles all alert dispatching to AWS Lambda
class_docstr_tok: ["LambdaOutput","handles","all","alert","dispatching","to","AWS","Lambda"]
docstr: Get properties that must be assigned by the user when configuring a new Lambda
  output.  This should be sensitive or unique information for this use-case that needs
  to come from the user.
  
  Every output should return a dict that contains a 'descriptor' with a description of the
  integration being configured.
  
  Sending to Lambda also requires a user provided Lambda function name and optional qualifier
  (if applicable for the user's use case). A fully-qualified AWS ARN is also acceptable for
  this value. This value should not be masked during input and is not a credential requirement
  that needs encrypted.
  
  When invoking a Lambda function in a different AWS account, the Alert Processor will have
  to first assume a role in the target account. Both the Alert Processor and the destination
  role will need AssumeRole IAM policies to allow this:
  
  @see https://aws.amazon.com/premiumsupport/knowledge-center/lambda-function-assume-iam-role/
  
  Returns:
      OrderedDict: Contains various OutputProperty items
code: def get_user_defined_properties(cls):
      """Get properties that must be assigned by the user when configuring a new Lambda
      output.  This should be sensitive or unique information for this use-case that needs
      to come from the user.
  
      Every output should return a dict that contains a 'descriptor' with a description of the
      integration being configured.
  
      Sending to Lambda also requires a user provided Lambda function name and optional qualifier
      (if applicable for the user's use case). A fully-qualified AWS ARN is also acceptable for
      this value. This value should not be masked during input and is not a credential requirement
      that needs encrypted.
  
      When invoking a Lambda function in a different AWS account, the Alert Processor will have
      to first assume a role in the target account. Both the Alert Processor and the destination
      role will need AssumeRole IAM policies to allow this:
  
      @see https://aws.amazon.com/premiumsupport/knowledge-center/lambda-function-assume-iam-role/
  
      Returns:
          OrderedDict: Contains various OutputProperty items
      """
      return OrderedDict(
          [
              (
                  "descriptor",
                  OutputProperty(
                      description="a short and unique descriptor for this Lambda function "
                      "configuration (ie: abbreviated name)"
                  ),
              ),
              (
                  "lambda_function_arn",
                  OutputProperty(
                      description="The ARN of the AWS Lambda function to Invoke",
                      input_restrictions={" "},
                      cred_requirement=True,
                  ),
              ),
              (
                  "function_qualifier",
                  OutputProperty(
                      description="The function qualifier/alias to invoke.",
                      input_restrictions={" "},
                      cred_requirement=True,
                  ),
              ),
              (
                  "assume_role_arn",
                  OutputProperty(
                      description="When provided, will use AssumeRole with this ARN",
                      input_restrictions={" "},
                      cred_requirement=True,
                  ),
              ),
          ]
      )
  
imports: from abc import abstractmethod
  from collections import OrderedDict
  from email.mime.application import MIMEApplication
  from email.mime.multipart import MIMEMultipart
  from email.mime.text import MIMEText
  from datetime import datetime
  import json
  import uuid
  import backoff
  from botocore.exceptions import ClientError
  import boto3
  from streamalert.alert_processor.helpers import compose_alert, elide_string_middle
  from streamalert.alert_processor.outputs.output_base import OutputDispatcher, OutputProperty, StreamAlertOutput
  from streamalert.shared.backoff_handlers import backoff_handler, success_handler, giveup_handler
  from streamalert.shared.logger import get_logger
label_desc: Use image node_id 1 for calling the LambdaOutputV2 obj's underlying member method code with example usage: obj.get_user_defined_properties(cls) and returns: OrderedDict