'Creates an Amazon Redshift event notification subscription.
This action requires an ARN (Amazon Resource Name) of an
Amazon SNS topic created by either the Amazon Redshift
console, the Amazon SNS console, or the Amazon SNS API. To
obtain an ARN with Amazon SNS, you must create a topic in
Amazon SNS and subscribe to the topic. The ARN is displayed in
the SNS console.
You can specify the source type, and lists of Amazon Redshift
source IDs, event categories, and event severities.
Notifications will be sent for all events you want that match
those criteria. For example, you can specify source type =
cluster, source ID = my-cluster-1 and mycluster2, event
categories = Availability, Backup, and severity = ERROR. The
subscription will only send notifications for those ERROR
events in the Availability and Backup categories for the
specified clusters.
If you specify both the source type and source IDs, such as
source type = cluster and source identifier = my-cluster-1,
notifications will be sent for all the cluster events for my-
cluster-1. If you specify a source type but do not specify a
source identifier, you will receive notice of the events for
the objects of that type in your AWS account. If you do not
specify either the SourceType nor the SourceIdentifier, you
will be notified of events generated from all Amazon Redshift
sources belonging to your AWS account. You must specify a
source type if you specify a source ID.
:type subscription_name: string
:param subscription_name:
The name of the event subscription to be created.
Constraints:
+ Cannot be null, empty, or blank.
+ Must contain from 1 to 255 alphanumeric characters or hyphens.
+ First character must be a letter.
+ Cannot end with a hyphen or contain two consecutive hyphens.
:type sns_topic_arn: string
:param sns_topic_arn: The Amazon Resource Name (ARN) of the Amazon SNS
topic used to transmit the event notifications. The ARN is created
by Amazon SNS when you create a topic and subscribe to it.
:type source_type: string
:param source_type: The type of source that will be generating the
events. For example, if you want to be notified of events generated
by a cluster, you would set this parameter to cluster. If this
value is not specified, events are returned for all Amazon Redshift
objects in your AWS account. You must specify a source type in
order to specify source IDs.
Valid values: cluster, cluster-parameter-group, cluster-security-group,
and cluster-snapshot.
:type source_ids: list
:param source_ids: A list of one or more identifiers of Amazon Redshift
source objects. All of the objects must be of the same type as was
specified in the source type parameter. The event subscription will
return only events generated by the specified objects. If not
specified, then events are returned for all objects within the
source type specified.
Example: my-cluster-1, my-cluster-2
Example: my-snapshot-20131010
:type event_categories: list
:param event_categories: Specifies the Amazon Redshift event categories
to be published by the event notification subscription.
Values: Configuration, Management, Monitoring, Security
:type severity: string
:param severity: Specifies the Amazon Redshift event severity to be
published by the event notification subscription.
Values: ERROR, INFO
:type enabled: boolean
:param enabled: A Boolean value; set to `True` to activate the
subscription, set to `False` to create the subscription but not
active it.'

def create_event_subscription(self, subscription_name, sns_topic_arn, source_type=None, source_ids=None, event_categories=None, severity=None, enabled=None):

    params = {'SubscriptionName': subscription_name, 'SnsTopicArn': sns_topic_arn}
    if (source_type is not None):
        params['SourceType'] = source_type
    if (source_ids is not None):
        self.build_list_params(params, source_ids, 'SourceIds.member')
    if (event_categories is not None):
        self.build_list_params(params, event_categories, 'EventCategories.member')
    if (severity is not None):
        params['Severity'] = severity
    if (enabled is not None):
        params['Enabled'] = str(enabled).lower()
    return self._make_request(action='CreateEventSubscription', verb='POST', path='/', params=params)
