class_docstr: Subclass to be inherited from for all AWS service outputs
class_docstr_tok: ["Subclass","to","be","inherited","from","for","all","AWS","service","outputs"]
docstr: Format the output configuration for this AWS service to be written to disk
  
  AWS services are stored as a dictionary within the config instead of a list so
  we have access to the AWS value (arn/bucket name/etc) for Terraform
  
  Args:
      service_config (dict): The actual outputs config that has been read in
      values (OrderedDict): Contains all the OutputProperty items for this service
  
  Returns:
      dict{<string>: <string>}: Updated dictionary of descriptors and
          values for this AWS service needed for the output configuration
      NOTE: S3 requires the bucket name, not an arn, for this value.
          Instead of implementing this differently in subclasses, all AWSOutput
          subclasses should use a generic 'aws_value' to store the value for the
          descriptor used in configuration
code: def format_output_config(cls, service_config, values):
      """Format the output configuration for this AWS service to be written to disk
  
      AWS services are stored as a dictionary within the config instead of a list so
      we have access to the AWS value (arn/bucket name/etc) for Terraform
  
      Args:
          service_config (dict): The actual outputs config that has been read in
          values (OrderedDict): Contains all the OutputProperty items for this service
  
      Returns:
          dict{<string>: <string>}: Updated dictionary of descriptors and
              values for this AWS service needed for the output configuration
          NOTE: S3 requires the bucket name, not an arn, for this value.
              Instead of implementing this differently in subclasses, all AWSOutput
              subclasses should use a generic 'aws_value' to store the value for the
              descriptor used in configuration
      """
      return dict(
          service_config.get(cls.__service__, {}),
          **{values["descriptor"].value: values["aws_value"].value},
      )
  
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 AWSOutput obj's underlying member method code with example usage: obj.format_output_config(cls, service_config, values) and returns: dict