Mercurial > repos > shellac > guppy_basecaller
diff env/lib/python3.7/site-packages/boto/redshift/layer1.py @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author | shellac |
---|---|
date | Mon, 01 Jun 2020 08:59:25 -0400 |
parents | 79f47841a781 |
children |
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/boto/redshift/layer1.py Thu May 14 16:47:39 2020 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3097 +0,0 @@ -# Copyright (c) 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, dis- -# tribute, sublicense, and/or sell copies of the Software, and to permit -# persons to whom the Software is furnished to do so, subject to the fol- -# lowing conditions: -# -# The above copyright notice and this permission notice shall be included -# in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- -# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -# - -import boto -from boto.compat import json -from boto.connection import AWSQueryConnection -from boto.regioninfo import RegionInfo -from boto.exception import JSONResponseError -from boto.redshift import exceptions - - -class RedshiftConnection(AWSQueryConnection): - """ - Amazon Redshift **Overview** - This is an interface reference for Amazon Redshift. It contains - documentation for one of the programming or command line - interfaces you can use to manage Amazon Redshift clusters. Note - that Amazon Redshift is asynchronous, which means that some - interfaces may require techniques, such as polling or asynchronous - callback handlers, to determine when a command has been applied. - In this reference, the parameter descriptions indicate whether a - change is applied immediately, on the next instance reboot, or - during the next maintenance window. For a summary of the Amazon - Redshift cluster management interfaces, go to `Using the Amazon - Redshift Management Interfaces `_. - - Amazon Redshift manages all the work of setting up, operating, and - scaling a data warehouse: provisioning capacity, monitoring and - backing up the cluster, and applying patches and upgrades to the - Amazon Redshift engine. You can focus on using your data to - acquire new insights for your business and customers. - - If you are a first-time user of Amazon Redshift, we recommend that - you begin by reading the The `Amazon Redshift Getting Started - Guide`_ - - If you are a database developer, the `Amazon Redshift Database - Developer Guide`_ explains how to design, build, query, and - maintain the databases that make up your data warehouse. - """ - APIVersion = "2012-12-01" - DefaultRegionName = "us-east-1" - DefaultRegionEndpoint = "redshift.us-east-1.amazonaws.com" - ResponseError = JSONResponseError - - _faults = { - "SnapshotCopyAlreadyDisabled": exceptions.SnapshotCopyAlreadyDisabled, - "ClusterNotFound": exceptions.ClusterNotFound, - "UnknownSnapshotCopyRegion": exceptions.UnknownSnapshotCopyRegion, - "InvalidClusterSubnetState": exceptions.InvalidClusterSubnetState, - "InvalidSubnet": exceptions.InvalidSubnet, - "ReservedNodeQuotaExceeded": exceptions.ReservedNodeQuotaExceeded, - "InvalidClusterState": exceptions.InvalidClusterState, - "HsmClientCertificateQuotaExceeded": exceptions.HsmClientCertificateQuotaExceeded, - "SubscriptionCategoryNotFound": exceptions.SubscriptionCategoryNotFound, - "HsmClientCertificateNotFound": exceptions.HsmClientCertificateNotFound, - "SubscriptionEventIdNotFound": exceptions.SubscriptionEventIdNotFound, - "ClusterSecurityGroupAlreadyExists": exceptions.ClusterSecurityGroupAlreadyExists, - "HsmConfigurationAlreadyExists": exceptions.HsmConfigurationAlreadyExists, - "NumberOfNodesQuotaExceeded": exceptions.NumberOfNodesQuotaExceeded, - "ReservedNodeOfferingNotFound": exceptions.ReservedNodeOfferingNotFound, - "BucketNotFound": exceptions.BucketNotFound, - "InsufficientClusterCapacity": exceptions.InsufficientClusterCapacity, - "InvalidRestore": exceptions.InvalidRestore, - "UnauthorizedOperation": exceptions.UnauthorizedOperation, - "ClusterQuotaExceeded": exceptions.ClusterQuotaExceeded, - "InvalidVPCNetworkState": exceptions.InvalidVPCNetworkState, - "ClusterSnapshotNotFound": exceptions.ClusterSnapshotNotFound, - "AuthorizationQuotaExceeded": exceptions.AuthorizationQuotaExceeded, - "InvalidHsmClientCertificateState": exceptions.InvalidHsmClientCertificateState, - "SNSTopicArnNotFound": exceptions.SNSTopicArnNotFound, - "ResizeNotFound": exceptions.ResizeNotFound, - "ClusterSubnetGroupNotFound": exceptions.ClusterSubnetGroupNotFound, - "SNSNoAuthorization": exceptions.SNSNoAuthorization, - "ClusterSnapshotQuotaExceeded": exceptions.ClusterSnapshotQuotaExceeded, - "AccessToSnapshotDenied": exceptions.AccessToSnapshotDenied, - "InvalidClusterSecurityGroupState": exceptions.InvalidClusterSecurityGroupState, - "NumberOfNodesPerClusterLimitExceeded": exceptions.NumberOfNodesPerClusterLimitExceeded, - "ClusterSubnetQuotaExceeded": exceptions.ClusterSubnetQuotaExceeded, - "SNSInvalidTopic": exceptions.SNSInvalidTopic, - "ClusterSecurityGroupNotFound": exceptions.ClusterSecurityGroupNotFound, - "InvalidElasticIp": exceptions.InvalidElasticIp, - "InvalidClusterParameterGroupState": exceptions.InvalidClusterParameterGroupState, - "InvalidHsmConfigurationState": exceptions.InvalidHsmConfigurationState, - "ClusterAlreadyExists": exceptions.ClusterAlreadyExists, - "HsmConfigurationQuotaExceeded": exceptions.HsmConfigurationQuotaExceeded, - "ClusterSnapshotAlreadyExists": exceptions.ClusterSnapshotAlreadyExists, - "SubscriptionSeverityNotFound": exceptions.SubscriptionSeverityNotFound, - "SourceNotFound": exceptions.SourceNotFound, - "ReservedNodeAlreadyExists": exceptions.ReservedNodeAlreadyExists, - "ClusterSubnetGroupQuotaExceeded": exceptions.ClusterSubnetGroupQuotaExceeded, - "ClusterParameterGroupNotFound": exceptions.ClusterParameterGroupNotFound, - "InvalidS3BucketName": exceptions.InvalidS3BucketName, - "InvalidS3KeyPrefix": exceptions.InvalidS3KeyPrefix, - "SubscriptionAlreadyExist": exceptions.SubscriptionAlreadyExist, - "HsmConfigurationNotFound": exceptions.HsmConfigurationNotFound, - "InvalidSubscriptionState": exceptions.InvalidSubscriptionState, - "AuthorizationNotFound": exceptions.AuthorizationNotFound, - "ClusterSecurityGroupQuotaExceeded": exceptions.ClusterSecurityGroupQuotaExceeded, - "SubnetAlreadyInUse": exceptions.SubnetAlreadyInUse, - "EventSubscriptionQuotaExceeded": exceptions.EventSubscriptionQuotaExceeded, - "AuthorizationAlreadyExists": exceptions.AuthorizationAlreadyExists, - "InvalidClusterSnapshotState": exceptions.InvalidClusterSnapshotState, - "ClusterParameterGroupQuotaExceeded": exceptions.ClusterParameterGroupQuotaExceeded, - "SnapshotCopyDisabled": exceptions.SnapshotCopyDisabled, - "ClusterSubnetGroupAlreadyExists": exceptions.ClusterSubnetGroupAlreadyExists, - "ReservedNodeNotFound": exceptions.ReservedNodeNotFound, - "HsmClientCertificateAlreadyExists": exceptions.HsmClientCertificateAlreadyExists, - "InvalidClusterSubnetGroupState": exceptions.InvalidClusterSubnetGroupState, - "SubscriptionNotFound": exceptions.SubscriptionNotFound, - "InsufficientS3BucketPolicy": exceptions.InsufficientS3BucketPolicy, - "ClusterParameterGroupAlreadyExists": exceptions.ClusterParameterGroupAlreadyExists, - "UnsupportedOption": exceptions.UnsupportedOption, - "CopyToRegionDisabled": exceptions.CopyToRegionDisabled, - "SnapshotCopyAlreadyEnabled": exceptions.SnapshotCopyAlreadyEnabled, - "IncompatibleOrderableOptions": exceptions.IncompatibleOrderableOptions, - } - - - def __init__(self, **kwargs): - region = kwargs.pop('region', None) - if not region: - region = RegionInfo(self, self.DefaultRegionName, - self.DefaultRegionEndpoint) - - if 'host' not in kwargs or kwargs['host'] is None: - kwargs['host'] = region.endpoint - - super(RedshiftConnection, self).__init__(**kwargs) - self.region = region - - def _required_auth_capability(self): - return ['hmac-v4'] - - def authorize_cluster_security_group_ingress(self, - cluster_security_group_name, - cidrip=None, - ec2_security_group_name=None, - ec2_security_group_owner_id=None): - """ - Adds an inbound (ingress) rule to an Amazon Redshift security - group. Depending on whether the application accessing your - cluster is running on the Internet or an EC2 instance, you can - authorize inbound access to either a Classless Interdomain - Routing (CIDR) IP address range or an EC2 security group. You - can add as many as 20 ingress rules to an Amazon Redshift - security group. - - For an overview of CIDR blocks, see the Wikipedia article on - `Classless Inter-Domain Routing`_. - - You must also associate the security group with a cluster so - that clients running on these IP addresses or the EC2 instance - are authorized to connect to the cluster. For information - about managing security groups, go to `Working with Security - Groups`_ in the Amazon Redshift Management Guide . - - :type cluster_security_group_name: string - :param cluster_security_group_name: The name of the security group to - which the ingress rule is added. - - :type cidrip: string - :param cidrip: The IP range to be added the Amazon Redshift security - group. - - :type ec2_security_group_name: string - :param ec2_security_group_name: The EC2 security group to be added the - Amazon Redshift security group. - - :type ec2_security_group_owner_id: string - :param ec2_security_group_owner_id: The AWS account number of the owner - of the security group specified by the EC2SecurityGroupName - parameter. The AWS Access Key ID is not an acceptable value. - Example: `111122223333` - - """ - params = { - 'ClusterSecurityGroupName': cluster_security_group_name, - } - if cidrip is not None: - params['CIDRIP'] = cidrip - if ec2_security_group_name is not None: - params['EC2SecurityGroupName'] = ec2_security_group_name - if ec2_security_group_owner_id is not None: - params['EC2SecurityGroupOwnerId'] = ec2_security_group_owner_id - return self._make_request( - action='AuthorizeClusterSecurityGroupIngress', - verb='POST', - path='/', params=params) - - def authorize_snapshot_access(self, snapshot_identifier, - account_with_restore_access, - snapshot_cluster_identifier=None): - """ - Authorizes the specified AWS customer account to restore the - specified snapshot. - - For more information about working with snapshots, go to - `Amazon Redshift Snapshots`_ in the Amazon Redshift Management - Guide . - - :type snapshot_identifier: string - :param snapshot_identifier: The identifier of the snapshot the account - is authorized to restore. - - :type snapshot_cluster_identifier: string - :param snapshot_cluster_identifier: The identifier of the cluster the - snapshot was created from. This parameter is required if your IAM - user has a policy containing a snapshot resource element that - specifies anything other than * for the cluster name. - - :type account_with_restore_access: string - :param account_with_restore_access: The identifier of the AWS customer - account authorized to restore the specified snapshot. - - """ - params = { - 'SnapshotIdentifier': snapshot_identifier, - 'AccountWithRestoreAccess': account_with_restore_access, - } - if snapshot_cluster_identifier is not None: - params['SnapshotClusterIdentifier'] = snapshot_cluster_identifier - return self._make_request( - action='AuthorizeSnapshotAccess', - verb='POST', - path='/', params=params) - - def copy_cluster_snapshot(self, source_snapshot_identifier, - target_snapshot_identifier, - source_snapshot_cluster_identifier=None): - """ - Copies the specified automated cluster snapshot to a new - manual cluster snapshot. The source must be an automated - snapshot and it must be in the available state. - - When you delete a cluster, Amazon Redshift deletes any - automated snapshots of the cluster. Also, when the retention - period of the snapshot expires, Amazon Redshift automatically - deletes it. If you want to keep an automated snapshot for a - longer period, you can make a manual copy of the snapshot. - Manual snapshots are retained until you delete them. - - For more information about working with snapshots, go to - `Amazon Redshift Snapshots`_ in the Amazon Redshift Management - Guide . - - :type source_snapshot_identifier: string - :param source_snapshot_identifier: - The identifier for the source snapshot. - - Constraints: - - - + Must be the identifier for a valid automated snapshot whose state is - `available`. - - :type source_snapshot_cluster_identifier: string - :param source_snapshot_cluster_identifier: - The identifier of the cluster the source snapshot was created from. - This parameter is required if your IAM user has a policy containing - a snapshot resource element that specifies anything other than * - for the cluster name. - - Constraints: - - - + Must be the identifier for a valid cluster. - - :type target_snapshot_identifier: string - :param target_snapshot_identifier: - The identifier given to the new manual snapshot. - - 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. - + Must be unique for the AWS account that is making the request. - - """ - params = { - 'SourceSnapshotIdentifier': source_snapshot_identifier, - 'TargetSnapshotIdentifier': target_snapshot_identifier, - } - if source_snapshot_cluster_identifier is not None: - params['SourceSnapshotClusterIdentifier'] = source_snapshot_cluster_identifier - return self._make_request( - action='CopyClusterSnapshot', - verb='POST', - path='/', params=params) - - def create_cluster(self, cluster_identifier, node_type, master_username, - master_user_password, db_name=None, cluster_type=None, - cluster_security_groups=None, - vpc_security_group_ids=None, - cluster_subnet_group_name=None, - availability_zone=None, - preferred_maintenance_window=None, - cluster_parameter_group_name=None, - automated_snapshot_retention_period=None, port=None, - cluster_version=None, allow_version_upgrade=None, - number_of_nodes=None, publicly_accessible=None, - encrypted=None, - hsm_client_certificate_identifier=None, - hsm_configuration_identifier=None, elastic_ip=None): - """ - Creates a new cluster. To create the cluster in virtual - private cloud (VPC), you must provide cluster subnet group - name. If you don't provide a cluster subnet group name or the - cluster security group parameter, Amazon Redshift creates a - non-VPC cluster, it associates the default cluster security - group with the cluster. For more information about managing - clusters, go to `Amazon Redshift Clusters`_ in the Amazon - Redshift Management Guide . - - :type db_name: string - :param db_name: - The name of the first database to be created when the cluster is - created. - - To create additional databases after the cluster is created, connect to - the cluster with a SQL client and use SQL commands to create a - database. For more information, go to `Create a Database`_ in the - Amazon Redshift Database Developer Guide. - - Default: `dev` - - Constraints: - - - + Must contain 1 to 64 alphanumeric characters. - + Must contain only lowercase letters. - + Cannot be a word that is reserved by the service. A list of reserved - words can be found in `Reserved Words`_ in the Amazon Redshift - Database Developer Guide. - - :type cluster_identifier: string - :param cluster_identifier: A unique identifier for the cluster. You use - this identifier to refer to the cluster for any subsequent cluster - operations such as deleting or modifying. The identifier also - appears in the Amazon Redshift console. - Constraints: - - - + Must contain from 1 to 63 alphanumeric characters or hyphens. - + Alphabetic characters must be lowercase. - + First character must be a letter. - + Cannot end with a hyphen or contain two consecutive hyphens. - + Must be unique for all clusters within an AWS account. - - - Example: `myexamplecluster` - - :type cluster_type: string - :param cluster_type: The type of the cluster. When cluster type is - specified as - - + `single-node`, the **NumberOfNodes** parameter is not required. - + `multi-node`, the **NumberOfNodes** parameter is required. - - - Valid Values: `multi-node` | `single-node` - - Default: `multi-node` - - :type node_type: string - :param node_type: The node type to be provisioned for the cluster. For - information about node types, go to ` Working with Clusters`_ in - the Amazon Redshift Management Guide . - Valid Values: `dw1.xlarge` | `dw1.8xlarge` | `dw2.large` | - `dw2.8xlarge`. - - :type master_username: string - :param master_username: - The user name associated with the master user account for the cluster - that is being created. - - Constraints: - - - + Must be 1 - 128 alphanumeric characters. - + First character must be a letter. - + Cannot be a reserved word. A list of reserved words can be found in - `Reserved Words`_ in the Amazon Redshift Database Developer Guide. - - :type master_user_password: string - :param master_user_password: - The password associated with the master user account for the cluster - that is being created. - - Constraints: - - - + Must be between 8 and 64 characters in length. - + Must contain at least one uppercase letter. - + Must contain at least one lowercase letter. - + Must contain one number. - + Can be any printable ASCII character (ASCII code 33 to 126) except ' - (single quote), " (double quote), \, /, @, or space. - - :type cluster_security_groups: list - :param cluster_security_groups: A list of security groups to be - associated with this cluster. - Default: The default cluster security group for Amazon Redshift. - - :type vpc_security_group_ids: list - :param vpc_security_group_ids: A list of Virtual Private Cloud (VPC) - security groups to be associated with the cluster. - Default: The default VPC security group is associated with the cluster. - - :type cluster_subnet_group_name: string - :param cluster_subnet_group_name: The name of a cluster subnet group to - be associated with this cluster. - If this parameter is not provided the resulting cluster will be - deployed outside virtual private cloud (VPC). - - :type availability_zone: string - :param availability_zone: The EC2 Availability Zone (AZ) in which you - want Amazon Redshift to provision the cluster. For example, if you - have several EC2 instances running in a specific Availability Zone, - then you might want the cluster to be provisioned in the same zone - in order to decrease network latency. - Default: A random, system-chosen Availability Zone in the region that - is specified by the endpoint. - - Example: `us-east-1d` - - Constraint: The specified Availability Zone must be in the same region - as the current endpoint. - - :type preferred_maintenance_window: string - :param preferred_maintenance_window: The weekly time range (in UTC) - during which automated cluster maintenance can occur. - Format: `ddd:hh24:mi-ddd:hh24:mi` - - Default: A 30-minute window selected at random from an 8-hour block of - time per region, occurring on a random day of the week. The - following list shows the time blocks for each region from which the - default maintenance windows are assigned. - - - + **US-East (Northern Virginia) Region:** 03:00-11:00 UTC - + **US-West (Oregon) Region** 06:00-14:00 UTC - + **EU (Ireland) Region** 22:00-06:00 UTC - + **Asia Pacific (Singapore) Region** 14:00-22:00 UTC - + **Asia Pacific (Sydney) Region** 12:00-20:00 UTC - + **Asia Pacific (Tokyo) Region** 17:00-03:00 UTC - - - Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun - - Constraints: Minimum 30-minute window. - - :type cluster_parameter_group_name: string - :param cluster_parameter_group_name: - The name of the parameter group to be associated with this cluster. - - Default: The default Amazon Redshift cluster parameter group. For - information about the default parameter group, go to `Working with - Amazon Redshift Parameter Groups`_ - - Constraints: - - - + Must be 1 to 255 alphanumeric characters or hyphens. - + First character must be a letter. - + Cannot end with a hyphen or contain two consecutive hyphens. - - :type automated_snapshot_retention_period: integer - :param automated_snapshot_retention_period: The number of days that - automated snapshots are retained. If the value is 0, automated - snapshots are disabled. Even if automated snapshots are disabled, - you can still create manual snapshots when you want with - CreateClusterSnapshot. - Default: `1` - - Constraints: Must be a value from 0 to 35. - - :type port: integer - :param port: The port number on which the cluster accepts incoming - connections. - The cluster is accessible only via the JDBC and ODBC connection - strings. Part of the connection string requires the port on which - the cluster will listen for incoming connections. - - Default: `5439` - - Valid Values: `1150-65535` - - :type cluster_version: string - :param cluster_version: The version of the Amazon Redshift engine - software that you want to deploy on the cluster. - The version selected runs on all the nodes in the cluster. - - Constraints: Only version 1.0 is currently available. - - Example: `1.0` - - :type allow_version_upgrade: boolean - :param allow_version_upgrade: If `True`, upgrades can be applied during - the maintenance window to the Amazon Redshift engine that is - running on the cluster. - When a new version of the Amazon Redshift engine is released, you can - request that the service automatically apply upgrades during the - maintenance window to the Amazon Redshift engine that is running on - your cluster. - - Default: `True` - - :type number_of_nodes: integer - :param number_of_nodes: The number of compute nodes in the cluster. - This parameter is required when the **ClusterType** parameter is - specified as `multi-node`. - For information about determining how many nodes you need, go to ` - Working with Clusters`_ in the Amazon Redshift Management Guide . - - If you don't specify this parameter, you get a single-node cluster. - When requesting a multi-node cluster, you must specify the number - of nodes that you want in the cluster. - - Default: `1` - - Constraints: Value must be at least 1 and no more than 100. - - :type publicly_accessible: boolean - :param publicly_accessible: If `True`, the cluster can be accessed from - a public network. - - :type encrypted: boolean - :param encrypted: If `True`, the data in the cluster is encrypted at - rest. - Default: false - - :type hsm_client_certificate_identifier: string - :param hsm_client_certificate_identifier: Specifies the name of the HSM - client certificate the Amazon Redshift cluster uses to retrieve the - data encryption keys stored in an HSM. - - :type hsm_configuration_identifier: string - :param hsm_configuration_identifier: Specifies the name of the HSM - configuration that contains the information the Amazon Redshift - cluster can use to retrieve and store keys in an HSM. - - :type elastic_ip: string - :param elastic_ip: The Elastic IP (EIP) address for the cluster. - Constraints: The cluster must be provisioned in EC2-VPC and publicly- - accessible through an Internet gateway. For more information about - provisioning clusters in EC2-VPC, go to `Supported Platforms to - Launch Your Cluster`_ in the Amazon Redshift Management Guide. - - """ - params = { - 'ClusterIdentifier': cluster_identifier, - 'NodeType': node_type, - 'MasterUsername': master_username, - 'MasterUserPassword': master_user_password, - } - if db_name is not None: - params['DBName'] = db_name - if cluster_type is not None: - params['ClusterType'] = cluster_type - if cluster_security_groups is not None: - self.build_list_params(params, - cluster_security_groups, - 'ClusterSecurityGroups.member') - if vpc_security_group_ids is not None: - self.build_list_params(params, - vpc_security_group_ids, - 'VpcSecurityGroupIds.member') - if cluster_subnet_group_name is not None: - params['ClusterSubnetGroupName'] = cluster_subnet_group_name - if availability_zone is not None: - params['AvailabilityZone'] = availability_zone - if preferred_maintenance_window is not None: - params['PreferredMaintenanceWindow'] = preferred_maintenance_window - if cluster_parameter_group_name is not None: - params['ClusterParameterGroupName'] = cluster_parameter_group_name - if automated_snapshot_retention_period is not None: - params['AutomatedSnapshotRetentionPeriod'] = automated_snapshot_retention_period - if port is not None: - params['Port'] = port - if cluster_version is not None: - params['ClusterVersion'] = cluster_version - if allow_version_upgrade is not None: - params['AllowVersionUpgrade'] = str( - allow_version_upgrade).lower() - if number_of_nodes is not None: - params['NumberOfNodes'] = number_of_nodes - if publicly_accessible is not None: - params['PubliclyAccessible'] = str( - publicly_accessible).lower() - if encrypted is not None: - params['Encrypted'] = str( - encrypted).lower() - if hsm_client_certificate_identifier is not None: - params['HsmClientCertificateIdentifier'] = hsm_client_certificate_identifier - if hsm_configuration_identifier is not None: - params['HsmConfigurationIdentifier'] = hsm_configuration_identifier - if elastic_ip is not None: - params['ElasticIp'] = elastic_ip - return self._make_request( - action='CreateCluster', - verb='POST', - path='/', params=params) - - def create_cluster_parameter_group(self, parameter_group_name, - parameter_group_family, description): - """ - Creates an Amazon Redshift parameter group. - - Creating parameter groups is independent of creating clusters. - You can associate a cluster with a parameter group when you - create the cluster. You can also associate an existing cluster - with a parameter group after the cluster is created by using - ModifyCluster. - - Parameters in the parameter group define specific behavior - that applies to the databases you create on the cluster. For - more information about managing parameter groups, go to - `Amazon Redshift Parameter Groups`_ in the Amazon Redshift - Management Guide . - - :type parameter_group_name: string - :param parameter_group_name: - The name of the cluster parameter group. - - Constraints: - - - + Must be 1 to 255 alphanumeric characters or hyphens - + First character must be a letter. - + Cannot end with a hyphen or contain two consecutive hyphens. - + Must be unique within your AWS account. - - This value is stored as a lower-case string. - - :type parameter_group_family: string - :param parameter_group_family: The Amazon Redshift engine version to - which the cluster parameter group applies. The cluster engine - version determines the set of parameters. - To get a list of valid parameter group family names, you can call - DescribeClusterParameterGroups. By default, Amazon Redshift returns - a list of all the parameter groups that are owned by your AWS - account, including the default parameter groups for each Amazon - Redshift engine version. The parameter group family names - associated with the default parameter groups provide you the valid - values. For example, a valid family name is "redshift-1.0". - - :type description: string - :param description: A description of the parameter group. - - """ - params = { - 'ParameterGroupName': parameter_group_name, - 'ParameterGroupFamily': parameter_group_family, - 'Description': description, - } - return self._make_request( - action='CreateClusterParameterGroup', - verb='POST', - path='/', params=params) - - def create_cluster_security_group(self, cluster_security_group_name, - description): - """ - Creates a new Amazon Redshift security group. You use security - groups to control access to non-VPC clusters. - - For information about managing security groups, go to `Amazon - Redshift Cluster Security Groups`_ in the Amazon Redshift - Management Guide . - - :type cluster_security_group_name: string - :param cluster_security_group_name: The name for the security group. - Amazon Redshift stores the value as a lowercase string. - Constraints: - - - + Must contain no more than 255 alphanumeric characters or hyphens. - + Must not be "Default". - + Must be unique for all security groups that are created by your AWS - account. - - - Example: `examplesecuritygroup` - - :type description: string - :param description: A description for the security group. - - """ - params = { - 'ClusterSecurityGroupName': cluster_security_group_name, - 'Description': description, - } - return self._make_request( - action='CreateClusterSecurityGroup', - verb='POST', - path='/', params=params) - - def create_cluster_snapshot(self, snapshot_identifier, - cluster_identifier): - """ - Creates a manual snapshot of the specified cluster. The - cluster must be in the `available` state. - - For more information about working with snapshots, go to - `Amazon Redshift Snapshots`_ in the Amazon Redshift Management - Guide . - - :type snapshot_identifier: string - :param snapshot_identifier: A unique identifier for the snapshot that - you are requesting. This identifier must be unique for all - snapshots within the AWS account. - 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 - - - Example: `my-snapshot-id` - - :type cluster_identifier: string - :param cluster_identifier: The cluster identifier for which you want a - snapshot. - - """ - params = { - 'SnapshotIdentifier': snapshot_identifier, - 'ClusterIdentifier': cluster_identifier, - } - return self._make_request( - action='CreateClusterSnapshot', - verb='POST', - path='/', params=params) - - def create_cluster_subnet_group(self, cluster_subnet_group_name, - description, subnet_ids): - """ - Creates a new Amazon Redshift subnet group. You must provide a - list of one or more subnets in your existing Amazon Virtual - Private Cloud (Amazon VPC) when creating Amazon Redshift - subnet group. - - For information about subnet groups, go to `Amazon Redshift - Cluster Subnet Groups`_ in the Amazon Redshift Management - Guide . - - :type cluster_subnet_group_name: string - :param cluster_subnet_group_name: The name for the subnet group. Amazon - Redshift stores the value as a lowercase string. - Constraints: - - - + Must contain no more than 255 alphanumeric characters or hyphens. - + Must not be "Default". - + Must be unique for all subnet groups that are created by your AWS - account. - - - Example: `examplesubnetgroup` - - :type description: string - :param description: A description for the subnet group. - - :type subnet_ids: list - :param subnet_ids: An array of VPC subnet IDs. A maximum of 20 subnets - can be modified in a single request. - - """ - params = { - 'ClusterSubnetGroupName': cluster_subnet_group_name, - 'Description': description, - } - self.build_list_params(params, - subnet_ids, - 'SubnetIds.member') - return self._make_request( - action='CreateClusterSubnetGroup', - verb='POST', - path='/', params=params) - - def create_event_subscription(self, subscription_name, sns_topic_arn, - source_type=None, source_ids=None, - event_categories=None, severity=None, - enabled=None): - """ - 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. - - """ - 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) - - def create_hsm_client_certificate(self, - hsm_client_certificate_identifier): - """ - Creates an HSM client certificate that an Amazon Redshift - cluster will use to connect to the client's HSM in order to - store and retrieve the keys used to encrypt the cluster - databases. - - The command returns a public key, which you must store in the - HSM. In addition to creating the HSM certificate, you must - create an Amazon Redshift HSM configuration that provides a - cluster the information needed to store and use encryption - keys in the HSM. For more information, go to `Hardware - Security Modules`_ in the Amazon Redshift Management Guide. - - :type hsm_client_certificate_identifier: string - :param hsm_client_certificate_identifier: The identifier to be assigned - to the new HSM client certificate that the cluster will use to - connect to the HSM to use the database encryption keys. - - """ - params = { - 'HsmClientCertificateIdentifier': hsm_client_certificate_identifier, - } - return self._make_request( - action='CreateHsmClientCertificate', - verb='POST', - path='/', params=params) - - def create_hsm_configuration(self, hsm_configuration_identifier, - description, hsm_ip_address, - hsm_partition_name, hsm_partition_password, - hsm_server_public_certificate): - """ - Creates an HSM configuration that contains the information - required by an Amazon Redshift cluster to store and use - database encryption keys in a Hardware Security Module (HSM). - After creating the HSM configuration, you can specify it as a - parameter when creating a cluster. The cluster will then store - its encryption keys in the HSM. - - In addition to creating an HSM configuration, you must also - create an HSM client certificate. For more information, go to - `Hardware Security Modules`_ in the Amazon Redshift Management - Guide. - - :type hsm_configuration_identifier: string - :param hsm_configuration_identifier: The identifier to be assigned to - the new Amazon Redshift HSM configuration. - - :type description: string - :param description: A text description of the HSM configuration to be - created. - - :type hsm_ip_address: string - :param hsm_ip_address: The IP address that the Amazon Redshift cluster - must use to access the HSM. - - :type hsm_partition_name: string - :param hsm_partition_name: The name of the partition in the HSM where - the Amazon Redshift clusters will store their database encryption - keys. - - :type hsm_partition_password: string - :param hsm_partition_password: The password required to access the HSM - partition. - - :type hsm_server_public_certificate: string - :param hsm_server_public_certificate: The HSMs public certificate file. - When using Cloud HSM, the file name is server.pem. - - """ - params = { - 'HsmConfigurationIdentifier': hsm_configuration_identifier, - 'Description': description, - 'HsmIpAddress': hsm_ip_address, - 'HsmPartitionName': hsm_partition_name, - 'HsmPartitionPassword': hsm_partition_password, - 'HsmServerPublicCertificate': hsm_server_public_certificate, - } - return self._make_request( - action='CreateHsmConfiguration', - verb='POST', - path='/', params=params) - - def delete_cluster(self, cluster_identifier, - skip_final_cluster_snapshot=None, - final_cluster_snapshot_identifier=None): - """ - Deletes a previously provisioned cluster. A successful - response from the web service indicates that the request was - received correctly. If a final cluster snapshot is requested - the status of the cluster will be "final-snapshot" while the - snapshot is being taken, then it's "deleting" once Amazon - Redshift begins deleting the cluster. Use DescribeClusters to - monitor the status of the deletion. The delete operation - cannot be canceled or reverted once submitted. For more - information about managing clusters, go to `Amazon Redshift - Clusters`_ in the Amazon Redshift Management Guide . - - :type cluster_identifier: string - :param cluster_identifier: - The identifier of the cluster to be deleted. - - Constraints: - - - + Must contain lowercase characters. - + Must contain from 1 to 63 alphanumeric characters or hyphens. - + First character must be a letter. - + Cannot end with a hyphen or contain two consecutive hyphens. - - :type skip_final_cluster_snapshot: boolean - :param skip_final_cluster_snapshot: Determines whether a final snapshot - of the cluster is created before Amazon Redshift deletes the - cluster. If `True`, a final cluster snapshot is not created. If - `False`, a final cluster snapshot is created before the cluster is - deleted. - Default: `False` - - :type final_cluster_snapshot_identifier: string - :param final_cluster_snapshot_identifier: - The identifier of the final snapshot that is to be created immediately - before deleting the cluster. If this parameter is provided, - SkipFinalClusterSnapshot must be `False`. - - Constraints: - - - + Must be 1 to 255 alphanumeric characters. - + First character must be a letter. - + Cannot end with a hyphen or contain two consecutive hyphens. - - """ - params = {'ClusterIdentifier': cluster_identifier, } - if skip_final_cluster_snapshot is not None: - params['SkipFinalClusterSnapshot'] = str( - skip_final_cluster_snapshot).lower() - if final_cluster_snapshot_identifier is not None: - params['FinalClusterSnapshotIdentifier'] = final_cluster_snapshot_identifier - return self._make_request( - action='DeleteCluster', - verb='POST', - path='/', params=params) - - def delete_cluster_parameter_group(self, parameter_group_name): - """ - Deletes a specified Amazon Redshift parameter group. - - :type parameter_group_name: string - :param parameter_group_name: - The name of the parameter group to be deleted. - - Constraints: - - - + Must be the name of an existing cluster parameter group. - + Cannot delete a default cluster parameter group. - - """ - params = {'ParameterGroupName': parameter_group_name, } - return self._make_request( - action='DeleteClusterParameterGroup', - verb='POST', - path='/', params=params) - - def delete_cluster_security_group(self, cluster_security_group_name): - """ - Deletes an Amazon Redshift security group. - - For information about managing security groups, go to `Amazon - Redshift Cluster Security Groups`_ in the Amazon Redshift - Management Guide . - - :type cluster_security_group_name: string - :param cluster_security_group_name: The name of the cluster security - group to be deleted. - - """ - params = { - 'ClusterSecurityGroupName': cluster_security_group_name, - } - return self._make_request( - action='DeleteClusterSecurityGroup', - verb='POST', - path='/', params=params) - - def delete_cluster_snapshot(self, snapshot_identifier, - snapshot_cluster_identifier=None): - """ - Deletes the specified manual snapshot. The snapshot must be in - the `available` state, with no other users authorized to - access the snapshot. - - Unlike automated snapshots, manual snapshots are retained even - after you delete your cluster. Amazon Redshift does not delete - your manual snapshots. You must delete manual snapshot - explicitly to avoid getting charged. If other accounts are - authorized to access the snapshot, you must revoke all of the - authorizations before you can delete the snapshot. - - :type snapshot_identifier: string - :param snapshot_identifier: The unique identifier of the manual - snapshot to be deleted. - Constraints: Must be the name of an existing snapshot that is in the - `available` state. - - :type snapshot_cluster_identifier: string - :param snapshot_cluster_identifier: The unique identifier of the - cluster the snapshot was created from. This parameter is required - if your IAM user has a policy containing a snapshot resource - element that specifies anything other than * for the cluster name. - Constraints: Must be the name of valid cluster. - - """ - params = {'SnapshotIdentifier': snapshot_identifier, } - if snapshot_cluster_identifier is not None: - params['SnapshotClusterIdentifier'] = snapshot_cluster_identifier - return self._make_request( - action='DeleteClusterSnapshot', - verb='POST', - path='/', params=params) - - def delete_cluster_subnet_group(self, cluster_subnet_group_name): - """ - Deletes the specified cluster subnet group. - - :type cluster_subnet_group_name: string - :param cluster_subnet_group_name: The name of the cluster subnet group - name to be deleted. - - """ - params = { - 'ClusterSubnetGroupName': cluster_subnet_group_name, - } - return self._make_request( - action='DeleteClusterSubnetGroup', - verb='POST', - path='/', params=params) - - def delete_event_subscription(self, subscription_name): - """ - Deletes an Amazon Redshift event notification subscription. - - :type subscription_name: string - :param subscription_name: The name of the Amazon Redshift event - notification subscription to be deleted. - - """ - params = {'SubscriptionName': subscription_name, } - return self._make_request( - action='DeleteEventSubscription', - verb='POST', - path='/', params=params) - - def delete_hsm_client_certificate(self, - hsm_client_certificate_identifier): - """ - Deletes the specified HSM client certificate. - - :type hsm_client_certificate_identifier: string - :param hsm_client_certificate_identifier: The identifier of the HSM - client certificate to be deleted. - - """ - params = { - 'HsmClientCertificateIdentifier': hsm_client_certificate_identifier, - } - return self._make_request( - action='DeleteHsmClientCertificate', - verb='POST', - path='/', params=params) - - def delete_hsm_configuration(self, hsm_configuration_identifier): - """ - Deletes the specified Amazon Redshift HSM configuration. - - :type hsm_configuration_identifier: string - :param hsm_configuration_identifier: The identifier of the Amazon - Redshift HSM configuration to be deleted. - - """ - params = { - 'HsmConfigurationIdentifier': hsm_configuration_identifier, - } - return self._make_request( - action='DeleteHsmConfiguration', - verb='POST', - path='/', params=params) - - def describe_cluster_parameter_groups(self, parameter_group_name=None, - max_records=None, marker=None): - """ - Returns a list of Amazon Redshift parameter groups, including - parameter groups you created and the default parameter group. - For each parameter group, the response includes the parameter - group name, description, and parameter group family name. You - can optionally specify a name to retrieve the description of a - specific parameter group. - - For more information about managing parameter groups, go to - `Amazon Redshift Parameter Groups`_ in the Amazon Redshift - Management Guide . - - :type parameter_group_name: string - :param parameter_group_name: The name of a specific parameter group for - which to return details. By default, details about all parameter - groups and the default parameter group are returned. - - :type max_records: integer - :param max_records: The maximum number of response records to return in - each call. If the number of remaining response records exceeds the - specified `MaxRecords` value, a value is returned in a `marker` - field of the response. You can retrieve the next set of records by - retrying the command with the returned marker value. - Default: `100` - - Constraints: minimum 20, maximum 100. - - :type marker: string - :param marker: An optional parameter that specifies the starting point - to return a set of response records. When the results of a - DescribeClusterParameterGroups request exceed the value specified - in `MaxRecords`, AWS returns a value in the `Marker` field of the - response. You can retrieve the next set of response records by - providing the returned marker value in the `Marker` parameter and - retrying the request. - - """ - params = {} - if parameter_group_name is not None: - params['ParameterGroupName'] = parameter_group_name - if max_records is not None: - params['MaxRecords'] = max_records - if marker is not None: - params['Marker'] = marker - return self._make_request( - action='DescribeClusterParameterGroups', - verb='POST', - path='/', params=params) - - def describe_cluster_parameters(self, parameter_group_name, source=None, - max_records=None, marker=None): - """ - Returns a detailed list of parameters contained within the - specified Amazon Redshift parameter group. For each parameter - the response includes information such as parameter name, - description, data type, value, whether the parameter value is - modifiable, and so on. - - You can specify source filter to retrieve parameters of only - specific type. For example, to retrieve parameters that were - modified by a user action such as from - ModifyClusterParameterGroup, you can specify source equal to - user . - - For more information about managing parameter groups, go to - `Amazon Redshift Parameter Groups`_ in the Amazon Redshift - Management Guide . - - :type parameter_group_name: string - :param parameter_group_name: The name of a cluster parameter group for - which to return details. - - :type source: string - :param source: The parameter types to return. Specify `user` to show - parameters that are different form the default. Similarly, specify - `engine-default` to show parameters that are the same as the - default parameter group. - Default: All parameter types returned. - - Valid Values: `user` | `engine-default` - - :type max_records: integer - :param max_records: The maximum number of response records to return in - each call. If the number of remaining response records exceeds the - specified `MaxRecords` value, a value is returned in a `marker` - field of the response. You can retrieve the next set of records by - retrying the command with the returned marker value. - Default: `100` - - Constraints: minimum 20, maximum 100. - - :type marker: string - :param marker: An optional parameter that specifies the starting point - to return a set of response records. When the results of a - DescribeClusterParameters request exceed the value specified in - `MaxRecords`, AWS returns a value in the `Marker` field of the - response. You can retrieve the next set of response records by - providing the returned marker value in the `Marker` parameter and - retrying the request. - - """ - params = {'ParameterGroupName': parameter_group_name, } - if source is not None: - params['Source'] = source - if max_records is not None: - params['MaxRecords'] = max_records - if marker is not None: - params['Marker'] = marker - return self._make_request( - action='DescribeClusterParameters', - verb='POST', - path='/', params=params) - - def describe_cluster_security_groups(self, - cluster_security_group_name=None, - max_records=None, marker=None): - """ - Returns information about Amazon Redshift security groups. If - the name of a security group is specified, the response will - contain only information about only that security group. - - For information about managing security groups, go to `Amazon - Redshift Cluster Security Groups`_ in the Amazon Redshift - Management Guide . - - :type cluster_security_group_name: string - :param cluster_security_group_name: The name of a cluster security - group for which you are requesting details. You can specify either - the **Marker** parameter or a **ClusterSecurityGroupName** - parameter, but not both. - Example: `securitygroup1` - - :type max_records: integer - :param max_records: The maximum number of response records to return in - each call. If the number of remaining response records exceeds the - specified `MaxRecords` value, a value is returned in a `marker` - field of the response. You can retrieve the next set of records by - retrying the command with the returned marker value. - Default: `100` - - Constraints: minimum 20, maximum 100. - - :type marker: string - :param marker: An optional parameter that specifies the starting point - to return a set of response records. When the results of a - DescribeClusterSecurityGroups request exceed the value specified in - `MaxRecords`, AWS returns a value in the `Marker` field of the - response. You can retrieve the next set of response records by - providing the returned marker value in the `Marker` parameter and - retrying the request. - Constraints: You can specify either the **ClusterSecurityGroupName** - parameter or the **Marker** parameter, but not both. - - """ - params = {} - if cluster_security_group_name is not None: - params['ClusterSecurityGroupName'] = cluster_security_group_name - if max_records is not None: - params['MaxRecords'] = max_records - if marker is not None: - params['Marker'] = marker - return self._make_request( - action='DescribeClusterSecurityGroups', - verb='POST', - path='/', params=params) - - def describe_cluster_snapshots(self, cluster_identifier=None, - snapshot_identifier=None, - snapshot_type=None, start_time=None, - end_time=None, max_records=None, - marker=None, owner_account=None): - """ - Returns one or more snapshot objects, which contain metadata - about your cluster snapshots. By default, this operation - returns information about all snapshots of all clusters that - are owned by you AWS customer account. No information is - returned for snapshots owned by inactive AWS customer - accounts. - - :type cluster_identifier: string - :param cluster_identifier: The identifier of the cluster for which - information about snapshots is requested. - - :type snapshot_identifier: string - :param snapshot_identifier: The snapshot identifier of the snapshot - about which to return information. - - :type snapshot_type: string - :param snapshot_type: The type of snapshots for which you are - requesting information. By default, snapshots of all types are - returned. - Valid Values: `automated` | `manual` - - :type start_time: timestamp - :param start_time: A value that requests only snapshots created at or - after the specified time. The time value is specified in ISO 8601 - format. For more information about ISO 8601, go to the `ISO8601 - Wikipedia page.`_ - Example: `2012-07-16T18:00:00Z` - - :type end_time: timestamp - :param end_time: A time value that requests only snapshots created at - or before the specified time. The time value is specified in ISO - 8601 format. For more information about ISO 8601, go to the - `ISO8601 Wikipedia page.`_ - Example: `2012-07-16T18:00:00Z` - - :type max_records: integer - :param max_records: The maximum number of response records to return in - each call. If the number of remaining response records exceeds the - specified `MaxRecords` value, a value is returned in a `marker` - field of the response. You can retrieve the next set of records by - retrying the command with the returned marker value. - Default: `100` - - Constraints: minimum 20, maximum 100. - - :type marker: string - :param marker: An optional parameter that specifies the starting point - to return a set of response records. When the results of a - DescribeClusterSnapshots request exceed the value specified in - `MaxRecords`, AWS returns a value in the `Marker` field of the - response. You can retrieve the next set of response records by - providing the returned marker value in the `Marker` parameter and - retrying the request. - - :type owner_account: string - :param owner_account: The AWS customer account used to create or copy - the snapshot. Use this field to filter the results to snapshots - owned by a particular account. To describe snapshots you own, - either specify your AWS customer account, or do not specify the - parameter. - - """ - params = {} - if cluster_identifier is not None: - params['ClusterIdentifier'] = cluster_identifier - if snapshot_identifier is not None: - params['SnapshotIdentifier'] = snapshot_identifier - if snapshot_type is not None: - params['SnapshotType'] = snapshot_type - if start_time is not None: - params['StartTime'] = start_time - if end_time is not None: - params['EndTime'] = end_time - if max_records is not None: - params['MaxRecords'] = max_records - if marker is not None: - params['Marker'] = marker - if owner_account is not None: - params['OwnerAccount'] = owner_account - return self._make_request( - action='DescribeClusterSnapshots', - verb='POST', - path='/', params=params) - - def describe_cluster_subnet_groups(self, cluster_subnet_group_name=None, - max_records=None, marker=None): - """ - Returns one or more cluster subnet group objects, which - contain metadata about your cluster subnet groups. By default, - this operation returns information about all cluster subnet - groups that are defined in you AWS account. - - :type cluster_subnet_group_name: string - :param cluster_subnet_group_name: The name of the cluster subnet group - for which information is requested. - - :type max_records: integer - :param max_records: The maximum number of response records to return in - each call. If the number of remaining response records exceeds the - specified `MaxRecords` value, a value is returned in a `marker` - field of the response. You can retrieve the next set of records by - retrying the command with the returned marker value. - Default: `100` - - Constraints: minimum 20, maximum 100. - - :type marker: string - :param marker: An optional parameter that specifies the starting point - to return a set of response records. When the results of a - DescribeClusterSubnetGroups request exceed the value specified in - `MaxRecords`, AWS returns a value in the `Marker` field of the - response. You can retrieve the next set of response records by - providing the returned marker value in the `Marker` parameter and - retrying the request. - - """ - params = {} - if cluster_subnet_group_name is not None: - params['ClusterSubnetGroupName'] = cluster_subnet_group_name - if max_records is not None: - params['MaxRecords'] = max_records - if marker is not None: - params['Marker'] = marker - return self._make_request( - action='DescribeClusterSubnetGroups', - verb='POST', - path='/', params=params) - - def describe_cluster_versions(self, cluster_version=None, - cluster_parameter_group_family=None, - max_records=None, marker=None): - """ - Returns descriptions of the available Amazon Redshift cluster - versions. You can call this operation even before creating any - clusters to learn more about the Amazon Redshift versions. For - more information about managing clusters, go to `Amazon - Redshift Clusters`_ in the Amazon Redshift Management Guide - - :type cluster_version: string - :param cluster_version: The specific cluster version to return. - Example: `1.0` - - :type cluster_parameter_group_family: string - :param cluster_parameter_group_family: - The name of a specific cluster parameter group family to return details - for. - - Constraints: - - - + Must be 1 to 255 alphanumeric characters - + First character must be a letter - + Cannot end with a hyphen or contain two consecutive hyphens - - :type max_records: integer - :param max_records: The maximum number of response records to return in - each call. If the number of remaining response records exceeds the - specified `MaxRecords` value, a value is returned in a `marker` - field of the response. You can retrieve the next set of records by - retrying the command with the returned marker value. - Default: `100` - - Constraints: minimum 20, maximum 100. - - :type marker: string - :param marker: An optional parameter that specifies the starting point - to return a set of response records. When the results of a - DescribeClusterVersions request exceed the value specified in - `MaxRecords`, AWS returns a value in the `Marker` field of the - response. You can retrieve the next set of response records by - providing the returned marker value in the `Marker` parameter and - retrying the request. - - """ - params = {} - if cluster_version is not None: - params['ClusterVersion'] = cluster_version - if cluster_parameter_group_family is not None: - params['ClusterParameterGroupFamily'] = cluster_parameter_group_family - if max_records is not None: - params['MaxRecords'] = max_records - if marker is not None: - params['Marker'] = marker - return self._make_request( - action='DescribeClusterVersions', - verb='POST', - path='/', params=params) - - def describe_clusters(self, cluster_identifier=None, max_records=None, - marker=None): - """ - Returns properties of provisioned clusters including general - cluster properties, cluster database properties, maintenance - and backup properties, and security and access properties. - This operation supports pagination. For more information about - managing clusters, go to `Amazon Redshift Clusters`_ in the - Amazon Redshift Management Guide . - - :type cluster_identifier: string - :param cluster_identifier: The unique identifier of a cluster whose - properties you are requesting. This parameter is case sensitive. - The default is that all clusters defined for an account are returned. - - :type max_records: integer - :param max_records: The maximum number of response records to return in - each call. If the number of remaining response records exceeds the - specified `MaxRecords` value, a value is returned in a `marker` - field of the response. You can retrieve the next set of records by - retrying the command with the returned marker value. - Default: `100` - - Constraints: minimum 20, maximum 100. - - :type marker: string - :param marker: An optional parameter that specifies the starting point - to return a set of response records. When the results of a - DescribeClusters request exceed the value specified in - `MaxRecords`, AWS returns a value in the `Marker` field of the - response. You can retrieve the next set of response records by - providing the returned marker value in the `Marker` parameter and - retrying the request. - Constraints: You can specify either the **ClusterIdentifier** parameter - or the **Marker** parameter, but not both. - - """ - params = {} - if cluster_identifier is not None: - params['ClusterIdentifier'] = cluster_identifier - if max_records is not None: - params['MaxRecords'] = max_records - if marker is not None: - params['Marker'] = marker - return self._make_request( - action='DescribeClusters', - verb='POST', - path='/', params=params) - - def describe_default_cluster_parameters(self, parameter_group_family, - max_records=None, marker=None): - """ - Returns a list of parameter settings for the specified - parameter group family. - - For more information about managing parameter groups, go to - `Amazon Redshift Parameter Groups`_ in the Amazon Redshift - Management Guide . - - :type parameter_group_family: string - :param parameter_group_family: The name of the cluster parameter group - family. - - :type max_records: integer - :param max_records: The maximum number of response records to return in - each call. If the number of remaining response records exceeds the - specified `MaxRecords` value, a value is returned in a `marker` - field of the response. You can retrieve the next set of records by - retrying the command with the returned marker value. - Default: `100` - - Constraints: minimum 20, maximum 100. - - :type marker: string - :param marker: An optional parameter that specifies the starting point - to return a set of response records. When the results of a - DescribeDefaultClusterParameters request exceed the value specified - in `MaxRecords`, AWS returns a value in the `Marker` field of the - response. You can retrieve the next set of response records by - providing the returned marker value in the `Marker` parameter and - retrying the request. - - """ - params = {'ParameterGroupFamily': parameter_group_family, } - if max_records is not None: - params['MaxRecords'] = max_records - if marker is not None: - params['Marker'] = marker - return self._make_request( - action='DescribeDefaultClusterParameters', - verb='POST', - path='/', params=params) - - def describe_event_categories(self, source_type=None): - """ - Displays a list of event categories for all event source - types, or for a specified source type. For a list of the event - categories and source types, go to `Amazon Redshift Event - Notifications`_. - - :type source_type: string - :param source_type: The source type, such as cluster or parameter - group, to which the described event categories apply. - Valid values: cluster, snapshot, parameter group, and security group. - - """ - params = {} - if source_type is not None: - params['SourceType'] = source_type - return self._make_request( - action='DescribeEventCategories', - verb='POST', - path='/', params=params) - - def describe_event_subscriptions(self, subscription_name=None, - max_records=None, marker=None): - """ - Lists descriptions of all the Amazon Redshift event - notifications subscription for a customer account. If you - specify a subscription name, lists the description for that - subscription. - - :type subscription_name: string - :param subscription_name: The name of the Amazon Redshift event - notification subscription to be described. - - :type max_records: integer - :param max_records: The maximum number of response records to return in - each call. If the number of remaining response records exceeds the - specified `MaxRecords` value, a value is returned in a `marker` - field of the response. You can retrieve the next set of records by - retrying the command with the returned marker value. - Default: `100` - - Constraints: minimum 20, maximum 100. - - :type marker: string - :param marker: An optional parameter that specifies the starting point - to return a set of response records. When the results of a - DescribeEventSubscriptions request exceed the value specified in - `MaxRecords`, AWS returns a value in the `Marker` field of the - response. You can retrieve the next set of response records by - providing the returned marker value in the `Marker` parameter and - retrying the request. - - """ - params = {} - if subscription_name is not None: - params['SubscriptionName'] = subscription_name - if max_records is not None: - params['MaxRecords'] = max_records - if marker is not None: - params['Marker'] = marker - return self._make_request( - action='DescribeEventSubscriptions', - verb='POST', - path='/', params=params) - - def describe_events(self, source_identifier=None, source_type=None, - start_time=None, end_time=None, duration=None, - max_records=None, marker=None): - """ - Returns events related to clusters, security groups, - snapshots, and parameter groups for the past 14 days. Events - specific to a particular cluster, security group, snapshot or - parameter group can be obtained by providing the name as a - parameter. By default, the past hour of events are returned. - - :type source_identifier: string - :param source_identifier: - The identifier of the event source for which events will be returned. - If this parameter is not specified, then all sources are included - in the response. - - Constraints: - - If SourceIdentifier is supplied, SourceType must also be provided. - - - + Specify a cluster identifier when SourceType is `cluster`. - + Specify a cluster security group name when SourceType is `cluster- - security-group`. - + Specify a cluster parameter group name when SourceType is `cluster- - parameter-group`. - + Specify a cluster snapshot identifier when SourceType is `cluster- - snapshot`. - - :type source_type: string - :param source_type: - The event source to retrieve events for. If no value is specified, all - events are returned. - - Constraints: - - If SourceType is supplied, SourceIdentifier must also be provided. - - - + Specify `cluster` when SourceIdentifier is a cluster identifier. - + Specify `cluster-security-group` when SourceIdentifier is a cluster - security group name. - + Specify `cluster-parameter-group` when SourceIdentifier is a cluster - parameter group name. - + Specify `cluster-snapshot` when SourceIdentifier is a cluster - snapshot identifier. - - :type start_time: timestamp - :param start_time: The beginning of the time interval to retrieve - events for, specified in ISO 8601 format. For more information - about ISO 8601, go to the `ISO8601 Wikipedia page.`_ - Example: `2009-07-08T18:00Z` - - :type end_time: timestamp - :param end_time: The end of the time interval for which to retrieve - events, specified in ISO 8601 format. For more information about - ISO 8601, go to the `ISO8601 Wikipedia page.`_ - Example: `2009-07-08T18:00Z` - - :type duration: integer - :param duration: The number of minutes prior to the time of the request - for which to retrieve events. For example, if the request is sent - at 18:00 and you specify a duration of 60, then only events which - have occurred after 17:00 will be returned. - Default: `60` - - :type max_records: integer - :param max_records: The maximum number of response records to return in - each call. If the number of remaining response records exceeds the - specified `MaxRecords` value, a value is returned in a `marker` - field of the response. You can retrieve the next set of records by - retrying the command with the returned marker value. - Default: `100` - - Constraints: minimum 20, maximum 100. - - :type marker: string - :param marker: An optional parameter that specifies the starting point - to return a set of response records. When the results of a - DescribeEvents request exceed the value specified in `MaxRecords`, - AWS returns a value in the `Marker` field of the response. You can - retrieve the next set of response records by providing the returned - marker value in the `Marker` parameter and retrying the request. - - """ - params = {} - if source_identifier is not None: - params['SourceIdentifier'] = source_identifier - if source_type is not None: - params['SourceType'] = source_type - if start_time is not None: - params['StartTime'] = start_time - if end_time is not None: - params['EndTime'] = end_time - if duration is not None: - params['Duration'] = duration - if max_records is not None: - params['MaxRecords'] = max_records - if marker is not None: - params['Marker'] = marker - return self._make_request( - action='DescribeEvents', - verb='POST', - path='/', params=params) - - def describe_hsm_client_certificates(self, - hsm_client_certificate_identifier=None, - max_records=None, marker=None): - """ - Returns information about the specified HSM client - certificate. If no certificate ID is specified, returns - information about all the HSM certificates owned by your AWS - customer account. - - :type hsm_client_certificate_identifier: string - :param hsm_client_certificate_identifier: The identifier of a specific - HSM client certificate for which you want information. If no - identifier is specified, information is returned for all HSM client - certificates owned by your AWS customer account. - - :type max_records: integer - :param max_records: The maximum number of response records to return in - each call. If the number of remaining response records exceeds the - specified `MaxRecords` value, a value is returned in a `marker` - field of the response. You can retrieve the next set of records by - retrying the command with the returned marker value. - Default: `100` - - Constraints: minimum 20, maximum 100. - - :type marker: string - :param marker: An optional parameter that specifies the starting point - to return a set of response records. When the results of a - DescribeHsmClientCertificates request exceed the value specified in - `MaxRecords`, AWS returns a value in the `Marker` field of the - response. You can retrieve the next set of response records by - providing the returned marker value in the `Marker` parameter and - retrying the request. - - """ - params = {} - if hsm_client_certificate_identifier is not None: - params['HsmClientCertificateIdentifier'] = hsm_client_certificate_identifier - if max_records is not None: - params['MaxRecords'] = max_records - if marker is not None: - params['Marker'] = marker - return self._make_request( - action='DescribeHsmClientCertificates', - verb='POST', - path='/', params=params) - - def describe_hsm_configurations(self, hsm_configuration_identifier=None, - max_records=None, marker=None): - """ - Returns information about the specified Amazon Redshift HSM - configuration. If no configuration ID is specified, returns - information about all the HSM configurations owned by your AWS - customer account. - - :type hsm_configuration_identifier: string - :param hsm_configuration_identifier: The identifier of a specific - Amazon Redshift HSM configuration to be described. If no identifier - is specified, information is returned for all HSM configurations - owned by your AWS customer account. - - :type max_records: integer - :param max_records: The maximum number of response records to return in - each call. If the number of remaining response records exceeds the - specified `MaxRecords` value, a value is returned in a `marker` - field of the response. You can retrieve the next set of records by - retrying the command with the returned marker value. - Default: `100` - - Constraints: minimum 20, maximum 100. - - :type marker: string - :param marker: An optional parameter that specifies the starting point - to return a set of response records. When the results of a - DescribeHsmConfigurations request exceed the value specified in - `MaxRecords`, AWS returns a value in the `Marker` field of the - response. You can retrieve the next set of response records by - providing the returned marker value in the `Marker` parameter and - retrying the request. - - """ - params = {} - if hsm_configuration_identifier is not None: - params['HsmConfigurationIdentifier'] = hsm_configuration_identifier - if max_records is not None: - params['MaxRecords'] = max_records - if marker is not None: - params['Marker'] = marker - return self._make_request( - action='DescribeHsmConfigurations', - verb='POST', - path='/', params=params) - - def describe_logging_status(self, cluster_identifier): - """ - Describes whether information, such as queries and connection - attempts, is being logged for the specified Amazon Redshift - cluster. - - :type cluster_identifier: string - :param cluster_identifier: The identifier of the cluster to get the - logging status from. - Example: `examplecluster` - - """ - params = {'ClusterIdentifier': cluster_identifier, } - return self._make_request( - action='DescribeLoggingStatus', - verb='POST', - path='/', params=params) - - def describe_orderable_cluster_options(self, cluster_version=None, - node_type=None, max_records=None, - marker=None): - """ - Returns a list of orderable cluster options. Before you create - a new cluster you can use this operation to find what options - are available, such as the EC2 Availability Zones (AZ) in the - specific AWS region that you can specify, and the node types - you can request. The node types differ by available storage, - memory, CPU and price. With the cost involved you might want - to obtain a list of cluster options in the specific region and - specify values when creating a cluster. For more information - about managing clusters, go to `Amazon Redshift Clusters`_ in - the Amazon Redshift Management Guide - - :type cluster_version: string - :param cluster_version: The version filter value. Specify this - parameter to show only the available offerings matching the - specified version. - Default: All versions. - - Constraints: Must be one of the version returned from - DescribeClusterVersions. - - :type node_type: string - :param node_type: The node type filter value. Specify this parameter to - show only the available offerings matching the specified node type. - - :type max_records: integer - :param max_records: The maximum number of response records to return in - each call. If the number of remaining response records exceeds the - specified `MaxRecords` value, a value is returned in a `marker` - field of the response. You can retrieve the next set of records by - retrying the command with the returned marker value. - Default: `100` - - Constraints: minimum 20, maximum 100. - - :type marker: string - :param marker: An optional parameter that specifies the starting point - to return a set of response records. When the results of a - DescribeOrderableClusterOptions request exceed the value specified - in `MaxRecords`, AWS returns a value in the `Marker` field of the - response. You can retrieve the next set of response records by - providing the returned marker value in the `Marker` parameter and - retrying the request. - - """ - params = {} - if cluster_version is not None: - params['ClusterVersion'] = cluster_version - if node_type is not None: - params['NodeType'] = node_type - if max_records is not None: - params['MaxRecords'] = max_records - if marker is not None: - params['Marker'] = marker - return self._make_request( - action='DescribeOrderableClusterOptions', - verb='POST', - path='/', params=params) - - def describe_reserved_node_offerings(self, - reserved_node_offering_id=None, - max_records=None, marker=None): - """ - Returns a list of the available reserved node offerings by - Amazon Redshift with their descriptions including the node - type, the fixed and recurring costs of reserving the node and - duration the node will be reserved for you. These descriptions - help you determine which reserve node offering you want to - purchase. You then use the unique offering ID in you call to - PurchaseReservedNodeOffering to reserve one or more nodes for - your Amazon Redshift cluster. - - For more information about managing parameter groups, go to - `Purchasing Reserved Nodes`_ in the Amazon Redshift Management - Guide . - - :type reserved_node_offering_id: string - :param reserved_node_offering_id: The unique identifier for the - offering. - - :type max_records: integer - :param max_records: The maximum number of response records to return in - each call. If the number of remaining response records exceeds the - specified `MaxRecords` value, a value is returned in a `marker` - field of the response. You can retrieve the next set of records by - retrying the command with the returned marker value. - Default: `100` - - Constraints: minimum 20, maximum 100. - - :type marker: string - :param marker: An optional parameter that specifies the starting point - to return a set of response records. When the results of a - DescribeReservedNodeOfferings request exceed the value specified in - `MaxRecords`, AWS returns a value in the `Marker` field of the - response. You can retrieve the next set of response records by - providing the returned marker value in the `Marker` parameter and - retrying the request. - - """ - params = {} - if reserved_node_offering_id is not None: - params['ReservedNodeOfferingId'] = reserved_node_offering_id - if max_records is not None: - params['MaxRecords'] = max_records - if marker is not None: - params['Marker'] = marker - return self._make_request( - action='DescribeReservedNodeOfferings', - verb='POST', - path='/', params=params) - - def describe_reserved_nodes(self, reserved_node_id=None, - max_records=None, marker=None): - """ - Returns the descriptions of the reserved nodes. - - :type reserved_node_id: string - :param reserved_node_id: Identifier for the node reservation. - - :type max_records: integer - :param max_records: The maximum number of response records to return in - each call. If the number of remaining response records exceeds the - specified `MaxRecords` value, a value is returned in a `marker` - field of the response. You can retrieve the next set of records by - retrying the command with the returned marker value. - Default: `100` - - Constraints: minimum 20, maximum 100. - - :type marker: string - :param marker: An optional parameter that specifies the starting point - to return a set of response records. When the results of a - DescribeReservedNodes request exceed the value specified in - `MaxRecords`, AWS returns a value in the `Marker` field of the - response. You can retrieve the next set of response records by - providing the returned marker value in the `Marker` parameter and - retrying the request. - - """ - params = {} - if reserved_node_id is not None: - params['ReservedNodeId'] = reserved_node_id - if max_records is not None: - params['MaxRecords'] = max_records - if marker is not None: - params['Marker'] = marker - return self._make_request( - action='DescribeReservedNodes', - verb='POST', - path='/', params=params) - - def describe_resize(self, cluster_identifier): - """ - Returns information about the last resize operation for the - specified cluster. If no resize operation has ever been - initiated for the specified cluster, a `HTTP 404` error is - returned. If a resize operation was initiated and completed, - the status of the resize remains as `SUCCEEDED` until the next - resize. - - A resize operation can be requested using ModifyCluster and - specifying a different number or type of nodes for the - cluster. - - :type cluster_identifier: string - :param cluster_identifier: The unique identifier of a cluster whose - resize progress you are requesting. This parameter isn't case- - sensitive. - By default, resize operations for all clusters defined for an AWS - account are returned. - - """ - params = {'ClusterIdentifier': cluster_identifier, } - return self._make_request( - action='DescribeResize', - verb='POST', - path='/', params=params) - - def disable_logging(self, cluster_identifier): - """ - Stops logging information, such as queries and connection - attempts, for the specified Amazon Redshift cluster. - - :type cluster_identifier: string - :param cluster_identifier: The identifier of the cluster on which - logging is to be stopped. - Example: `examplecluster` - - """ - params = {'ClusterIdentifier': cluster_identifier, } - return self._make_request( - action='DisableLogging', - verb='POST', - path='/', params=params) - - def disable_snapshot_copy(self, cluster_identifier): - """ - Disables the automatic copying of snapshots from one region to - another region for a specified cluster. - - :type cluster_identifier: string - :param cluster_identifier: The unique identifier of the source cluster - that you want to disable copying of snapshots to a destination - region. - Constraints: Must be the valid name of an existing cluster that has - cross-region snapshot copy enabled. - - """ - params = {'ClusterIdentifier': cluster_identifier, } - return self._make_request( - action='DisableSnapshotCopy', - verb='POST', - path='/', params=params) - - def enable_logging(self, cluster_identifier, bucket_name, - s3_key_prefix=None): - """ - Starts logging information, such as queries and connection - attempts, for the specified Amazon Redshift cluster. - - :type cluster_identifier: string - :param cluster_identifier: The identifier of the cluster on which - logging is to be started. - Example: `examplecluster` - - :type bucket_name: string - :param bucket_name: - The name of an existing S3 bucket where the log files are to be stored. - - Constraints: - - - + Must be in the same region as the cluster - + The cluster must have read bucket and put object permissions - - :type s3_key_prefix: string - :param s3_key_prefix: - The prefix applied to the log file names. - - Constraints: - - - + Cannot exceed 512 characters - + Cannot contain spaces( ), double quotes ("), single quotes ('), a - backslash (\), or control characters. The hexadecimal codes for - invalid characters are: - - + x00 to x20 - + x22 - + x27 - + x5c - + x7f or larger - - """ - params = { - 'ClusterIdentifier': cluster_identifier, - 'BucketName': bucket_name, - } - if s3_key_prefix is not None: - params['S3KeyPrefix'] = s3_key_prefix - return self._make_request( - action='EnableLogging', - verb='POST', - path='/', params=params) - - def enable_snapshot_copy(self, cluster_identifier, destination_region, - retention_period=None): - """ - Enables the automatic copy of snapshots from one region to - another region for a specified cluster. - - :type cluster_identifier: string - :param cluster_identifier: The unique identifier of the source cluster - to copy snapshots from. - Constraints: Must be the valid name of an existing cluster that does - not already have cross-region snapshot copy enabled. - - :type destination_region: string - :param destination_region: The destination region that you want to copy - snapshots to. - Constraints: Must be the name of a valid region. For more information, - see `Regions and Endpoints`_ in the Amazon Web Services General - Reference. - - :type retention_period: integer - :param retention_period: The number of days to retain automated - snapshots in the destination region after they are copied from the - source region. - Default: 7. - - Constraints: Must be at least 1 and no more than 35. - - """ - params = { - 'ClusterIdentifier': cluster_identifier, - 'DestinationRegion': destination_region, - } - if retention_period is not None: - params['RetentionPeriod'] = retention_period - return self._make_request( - action='EnableSnapshotCopy', - verb='POST', - path='/', params=params) - - def modify_cluster(self, cluster_identifier, cluster_type=None, - node_type=None, number_of_nodes=None, - cluster_security_groups=None, - vpc_security_group_ids=None, - master_user_password=None, - cluster_parameter_group_name=None, - automated_snapshot_retention_period=None, - preferred_maintenance_window=None, - cluster_version=None, allow_version_upgrade=None, - hsm_client_certificate_identifier=None, - hsm_configuration_identifier=None, - new_cluster_identifier=None): - """ - Modifies the settings for a cluster. For example, you can add - another security or parameter group, update the preferred - maintenance window, or change the master user password. - Resetting a cluster password or modifying the security groups - associated with a cluster do not need a reboot. However, - modifying a parameter group requires a reboot for parameters - to take effect. For more information about managing clusters, - go to `Amazon Redshift Clusters`_ in the Amazon Redshift - Management Guide - - You can also change node type and the number of nodes to scale - up or down the cluster. When resizing a cluster, you must - specify both the number of nodes and the node type even if one - of the parameters does not change. If you specify the same - number of nodes and node type that are already configured for - the cluster, an error is returned. - - :type cluster_identifier: string - :param cluster_identifier: The unique identifier of the cluster to be - modified. - Example: `examplecluster` - - :type cluster_type: string - :param cluster_type: The new cluster type. - When you submit your cluster resize request, your existing cluster goes - into a read-only mode. After Amazon Redshift provisions a new - cluster based on your resize requirements, there will be outage for - a period while the old cluster is deleted and your connection is - switched to the new cluster. You can use DescribeResize to track - the progress of the resize request. - - Valid Values: ` multi-node | single-node ` - - :type node_type: string - :param node_type: The new node type of the cluster. If you specify a - new node type, you must also specify the number of nodes parameter - also. - When you submit your request to resize a cluster, Amazon Redshift sets - access permissions for the cluster to read-only. After Amazon - Redshift provisions a new cluster according to your resize - requirements, there will be a temporary outage while the old - cluster is deleted and your connection is switched to the new - cluster. When the new connection is complete, the original access - permissions for the cluster are restored. You can use the - DescribeResize to track the progress of the resize request. - - Valid Values: ` dw1.xlarge` | `dw1.8xlarge` | `dw2.large` | - `dw2.8xlarge`. - - :type number_of_nodes: integer - :param number_of_nodes: The new number of nodes of the cluster. If you - specify a new number of nodes, you must also specify the node type - parameter also. - When you submit your request to resize a cluster, Amazon Redshift sets - access permissions for the cluster to read-only. After Amazon - Redshift provisions a new cluster according to your resize - requirements, there will be a temporary outage while the old - cluster is deleted and your connection is switched to the new - cluster. When the new connection is complete, the original access - permissions for the cluster are restored. You can use - DescribeResize to track the progress of the resize request. - - Valid Values: Integer greater than `0`. - - :type cluster_security_groups: list - :param cluster_security_groups: - A list of cluster security groups to be authorized on this cluster. - This change is asynchronously applied as soon as possible. - - Security groups currently associated with the cluster, and not in the - list of groups to apply, will be revoked from the cluster. - - Constraints: - - - + Must be 1 to 255 alphanumeric characters or hyphens - + First character must be a letter - + Cannot end with a hyphen or contain two consecutive hyphens - - :type vpc_security_group_ids: list - :param vpc_security_group_ids: A list of virtual private cloud (VPC) - security groups to be associated with the cluster. - - :type master_user_password: string - :param master_user_password: - The new password for the cluster master user. This change is - asynchronously applied as soon as possible. Between the time of the - request and the completion of the request, the `MasterUserPassword` - element exists in the `PendingModifiedValues` element of the - operation response. - - Default: Uses existing setting. - - Constraints: - - - + Must be between 8 and 64 characters in length. - + Must contain at least one uppercase letter. - + Must contain at least one lowercase letter. - + Must contain one number. - + Can be any printable ASCII character (ASCII code 33 to 126) except ' - (single quote), " (double quote), \, /, @, or space. - - :type cluster_parameter_group_name: string - :param cluster_parameter_group_name: The name of the cluster parameter - group to apply to this cluster. This change is applied only after - the cluster is rebooted. To reboot a cluster use RebootCluster. - Default: Uses existing setting. - - Constraints: The cluster parameter group must be in the same parameter - group family that matches the cluster version. - - :type automated_snapshot_retention_period: integer - :param automated_snapshot_retention_period: The number of days that - automated snapshots are retained. If the value is 0, automated - snapshots are disabled. Even if automated snapshots are disabled, - you can still create manual snapshots when you want with - CreateClusterSnapshot. - If you decrease the automated snapshot retention period from its - current value, existing automated snapshots that fall outside of - the new retention period will be immediately deleted. - - Default: Uses existing setting. - - Constraints: Must be a value from 0 to 35. - - :type preferred_maintenance_window: string - :param preferred_maintenance_window: The weekly time range (in UTC) - during which system maintenance can occur, if necessary. If system - maintenance is necessary during the window, it may result in an - outage. - This maintenance window change is made immediately. If the new - maintenance window indicates the current time, there must be at - least 120 minutes between the current time and end of the window in - order to ensure that pending changes are applied. - - Default: Uses existing setting. - - Format: ddd:hh24:mi-ddd:hh24:mi, for example `wed:07:30-wed:08:00`. - - Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun - - Constraints: Must be at least 30 minutes. - - :type cluster_version: string - :param cluster_version: The new version number of the Amazon Redshift - engine to upgrade to. - For major version upgrades, if a non-default cluster parameter group is - currently in use, a new cluster parameter group in the cluster - parameter group family for the new version must be specified. The - new cluster parameter group can be the default for that cluster - parameter group family. For more information about managing - parameter groups, go to `Amazon Redshift Parameter Groups`_ in the - Amazon Redshift Management Guide . - - Example: `1.0` - - :type allow_version_upgrade: boolean - :param allow_version_upgrade: If `True`, upgrades will be applied - automatically to the cluster during the maintenance window. - Default: `False` - - :type hsm_client_certificate_identifier: string - :param hsm_client_certificate_identifier: Specifies the name of the HSM - client certificate the Amazon Redshift cluster uses to retrieve the - data encryption keys stored in an HSM. - - :type hsm_configuration_identifier: string - :param hsm_configuration_identifier: Specifies the name of the HSM - configuration that contains the information the Amazon Redshift - cluster can use to retrieve and store keys in an HSM. - - :type new_cluster_identifier: string - :param new_cluster_identifier: The new identifier for the cluster. - Constraints: - - - + Must contain from 1 to 63 alphanumeric characters or hyphens. - + Alphabetic characters must be lowercase. - + First character must be a letter. - + Cannot end with a hyphen or contain two consecutive hyphens. - + Must be unique for all clusters within an AWS account. - - - Example: `examplecluster` - - """ - params = {'ClusterIdentifier': cluster_identifier, } - if cluster_type is not None: - params['ClusterType'] = cluster_type - if node_type is not None: - params['NodeType'] = node_type - if number_of_nodes is not None: - params['NumberOfNodes'] = number_of_nodes - if cluster_security_groups is not None: - self.build_list_params(params, - cluster_security_groups, - 'ClusterSecurityGroups.member') - if vpc_security_group_ids is not None: - self.build_list_params(params, - vpc_security_group_ids, - 'VpcSecurityGroupIds.member') - if master_user_password is not None: - params['MasterUserPassword'] = master_user_password - if cluster_parameter_group_name is not None: - params['ClusterParameterGroupName'] = cluster_parameter_group_name - if automated_snapshot_retention_period is not None: - params['AutomatedSnapshotRetentionPeriod'] = automated_snapshot_retention_period - if preferred_maintenance_window is not None: - params['PreferredMaintenanceWindow'] = preferred_maintenance_window - if cluster_version is not None: - params['ClusterVersion'] = cluster_version - if allow_version_upgrade is not None: - params['AllowVersionUpgrade'] = str( - allow_version_upgrade).lower() - if hsm_client_certificate_identifier is not None: - params['HsmClientCertificateIdentifier'] = hsm_client_certificate_identifier - if hsm_configuration_identifier is not None: - params['HsmConfigurationIdentifier'] = hsm_configuration_identifier - if new_cluster_identifier is not None: - params['NewClusterIdentifier'] = new_cluster_identifier - return self._make_request( - action='ModifyCluster', - verb='POST', - path='/', params=params) - - def modify_cluster_parameter_group(self, parameter_group_name, - parameters): - """ - Modifies the parameters of a parameter group. - - For more information about managing parameter groups, go to - `Amazon Redshift Parameter Groups`_ in the Amazon Redshift - Management Guide . - - :type parameter_group_name: string - :param parameter_group_name: The name of the parameter group to be - modified. - - :type parameters: list - :param parameters: An array of parameters to be modified. A maximum of - 20 parameters can be modified in a single request. - For each parameter to be modified, you must supply at least the - parameter name and parameter value; other name-value pairs of the - parameter are optional. - - For the workload management (WLM) configuration, you must supply all - the name-value pairs in the wlm_json_configuration parameter. - - """ - params = {'ParameterGroupName': parameter_group_name, } - self.build_complex_list_params( - params, parameters, - 'Parameters.member', - ('ParameterName', 'ParameterValue', 'Description', 'Source', 'DataType', 'AllowedValues', 'IsModifiable', 'MinimumEngineVersion')) - return self._make_request( - action='ModifyClusterParameterGroup', - verb='POST', - path='/', params=params) - - def modify_cluster_subnet_group(self, cluster_subnet_group_name, - subnet_ids, description=None): - """ - Modifies a cluster subnet group to include the specified list - of VPC subnets. The operation replaces the existing list of - subnets with the new list of subnets. - - :type cluster_subnet_group_name: string - :param cluster_subnet_group_name: The name of the subnet group to be - modified. - - :type description: string - :param description: A text description of the subnet group to be - modified. - - :type subnet_ids: list - :param subnet_ids: An array of VPC subnet IDs. A maximum of 20 subnets - can be modified in a single request. - - """ - params = { - 'ClusterSubnetGroupName': cluster_subnet_group_name, - } - self.build_list_params(params, - subnet_ids, - 'SubnetIds.member') - if description is not None: - params['Description'] = description - return self._make_request( - action='ModifyClusterSubnetGroup', - verb='POST', - path='/', params=params) - - def modify_event_subscription(self, subscription_name, - sns_topic_arn=None, source_type=None, - source_ids=None, event_categories=None, - severity=None, enabled=None): - """ - Modifies an existing Amazon Redshift event notification - subscription. - - :type subscription_name: string - :param subscription_name: The name of the modified Amazon Redshift - event notification subscription. - - :type sns_topic_arn: string - :param sns_topic_arn: The Amazon Resource Name (ARN) of the SNS topic - to be used by the event notification subscription. - - :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 indicating if the subscription is - enabled. `True` indicates the subscription is enabled - - """ - params = {'SubscriptionName': subscription_name, } - if sns_topic_arn is not None: - params['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='ModifyEventSubscription', - verb='POST', - path='/', params=params) - - def modify_snapshot_copy_retention_period(self, cluster_identifier, - retention_period): - """ - Modifies the number of days to retain automated snapshots in - the destination region after they are copied from the source - region. - - :type cluster_identifier: string - :param cluster_identifier: The unique identifier of the cluster for - which you want to change the retention period for automated - snapshots that are copied to a destination region. - Constraints: Must be the valid name of an existing cluster that has - cross-region snapshot copy enabled. - - :type retention_period: integer - :param retention_period: The number of days to retain automated - snapshots in the destination region after they are copied from the - source region. - If you decrease the retention period for automated snapshots that are - copied to a destination region, Amazon Redshift will delete any - existing automated snapshots that were copied to the destination - region and that fall outside of the new retention period. - - Constraints: Must be at least 1 and no more than 35. - - """ - params = { - 'ClusterIdentifier': cluster_identifier, - 'RetentionPeriod': retention_period, - } - return self._make_request( - action='ModifySnapshotCopyRetentionPeriod', - verb='POST', - path='/', params=params) - - def purchase_reserved_node_offering(self, reserved_node_offering_id, - node_count=None): - """ - Allows you to purchase reserved nodes. Amazon Redshift offers - a predefined set of reserved node offerings. You can purchase - one of the offerings. You can call the - DescribeReservedNodeOfferings API to obtain the available - reserved node offerings. You can call this API by providing a - specific reserved node offering and the number of nodes you - want to reserve. - - For more information about managing parameter groups, go to - `Purchasing Reserved Nodes`_ in the Amazon Redshift Management - Guide . - - :type reserved_node_offering_id: string - :param reserved_node_offering_id: The unique identifier of the reserved - node offering you want to purchase. - - :type node_count: integer - :param node_count: The number of reserved nodes you want to purchase. - Default: `1` - - """ - params = { - 'ReservedNodeOfferingId': reserved_node_offering_id, - } - if node_count is not None: - params['NodeCount'] = node_count - return self._make_request( - action='PurchaseReservedNodeOffering', - verb='POST', - path='/', params=params) - - def reboot_cluster(self, cluster_identifier): - """ - Reboots a cluster. This action is taken as soon as possible. - It results in a momentary outage to the cluster, during which - the cluster status is set to `rebooting`. A cluster event is - created when the reboot is completed. Any pending cluster - modifications (see ModifyCluster) are applied at this reboot. - For more information about managing clusters, go to `Amazon - Redshift Clusters`_ in the Amazon Redshift Management Guide - - :type cluster_identifier: string - :param cluster_identifier: The cluster identifier. - - """ - params = {'ClusterIdentifier': cluster_identifier, } - return self._make_request( - action='RebootCluster', - verb='POST', - path='/', params=params) - - def reset_cluster_parameter_group(self, parameter_group_name, - reset_all_parameters=None, - parameters=None): - """ - Sets one or more parameters of the specified parameter group - to their default values and sets the source values of the - parameters to "engine-default". To reset the entire parameter - group specify the ResetAllParameters parameter. For parameter - changes to take effect you must reboot any associated - clusters. - - :type parameter_group_name: string - :param parameter_group_name: The name of the cluster parameter group to - be reset. - - :type reset_all_parameters: boolean - :param reset_all_parameters: If `True`, all parameters in the specified - parameter group will be reset to their default values. - Default: `True` - - :type parameters: list - :param parameters: An array of names of parameters to be reset. If - ResetAllParameters option is not used, then at least one parameter - name must be supplied. - Constraints: A maximum of 20 parameters can be reset in a single - request. - - """ - params = {'ParameterGroupName': parameter_group_name, } - if reset_all_parameters is not None: - params['ResetAllParameters'] = str( - reset_all_parameters).lower() - if parameters is not None: - self.build_complex_list_params( - params, parameters, - 'Parameters.member', - ('ParameterName', 'ParameterValue', 'Description', 'Source', 'DataType', 'AllowedValues', 'IsModifiable', 'MinimumEngineVersion')) - return self._make_request( - action='ResetClusterParameterGroup', - verb='POST', - path='/', params=params) - - def restore_from_cluster_snapshot(self, cluster_identifier, - snapshot_identifier, - snapshot_cluster_identifier=None, - port=None, availability_zone=None, - allow_version_upgrade=None, - cluster_subnet_group_name=None, - publicly_accessible=None, - owner_account=None, - hsm_client_certificate_identifier=None, - hsm_configuration_identifier=None, - elastic_ip=None, - cluster_parameter_group_name=None, - cluster_security_groups=None, - vpc_security_group_ids=None, - preferred_maintenance_window=None, - automated_snapshot_retention_period=None): - """ - Creates a new cluster from a snapshot. Amazon Redshift creates - the resulting cluster with the same configuration as the - original cluster from which the snapshot was created, except - that the new cluster is created with the default cluster - security and parameter group. After Amazon Redshift creates - the cluster you can use the ModifyCluster API to associate a - different security group and different parameter group with - the restored cluster. - - If you restore a cluster into a VPC, you must provide a - cluster subnet group where you want the cluster restored. - - For more information about working with snapshots, go to - `Amazon Redshift Snapshots`_ in the Amazon Redshift Management - Guide . - - :type cluster_identifier: string - :param cluster_identifier: The identifier of the cluster that will be - created from restoring the snapshot. - - Constraints: - - - + Must contain from 1 to 63 alphanumeric characters or hyphens. - + Alphabetic characters must be lowercase. - + First character must be a letter. - + Cannot end with a hyphen or contain two consecutive hyphens. - + Must be unique for all clusters within an AWS account. - - :type snapshot_identifier: string - :param snapshot_identifier: The name of the snapshot from which to - create the new cluster. This parameter isn't case sensitive. - Example: `my-snapshot-id` - - :type snapshot_cluster_identifier: string - :param snapshot_cluster_identifier: The name of the cluster the source - snapshot was created from. This parameter is required if your IAM - user has a policy containing a snapshot resource element that - specifies anything other than * for the cluster name. - - :type port: integer - :param port: The port number on which the cluster accepts connections. - Default: The same port as the original cluster. - - Constraints: Must be between `1115` and `65535`. - - :type availability_zone: string - :param availability_zone: The Amazon EC2 Availability Zone in which to - restore the cluster. - Default: A random, system-chosen Availability Zone. - - Example: `us-east-1a` - - :type allow_version_upgrade: boolean - :param allow_version_upgrade: If `True`, upgrades can be applied during - the maintenance window to the Amazon Redshift engine that is - running on the cluster. - Default: `True` - - :type cluster_subnet_group_name: string - :param cluster_subnet_group_name: The name of the subnet group where - you want to cluster restored. - A snapshot of cluster in VPC can be restored only in VPC. Therefore, - you must provide subnet group name where you want the cluster - restored. - - :type publicly_accessible: boolean - :param publicly_accessible: If `True`, the cluster can be accessed from - a public network. - - :type owner_account: string - :param owner_account: The AWS customer account used to create or copy - the snapshot. Required if you are restoring a snapshot you do not - own, optional if you own the snapshot. - - :type hsm_client_certificate_identifier: string - :param hsm_client_certificate_identifier: Specifies the name of the HSM - client certificate the Amazon Redshift cluster uses to retrieve the - data encryption keys stored in an HSM. - - :type hsm_configuration_identifier: string - :param hsm_configuration_identifier: Specifies the name of the HSM - configuration that contains the information the Amazon Redshift - cluster can use to retrieve and store keys in an HSM. - - :type elastic_ip: string - :param elastic_ip: The elastic IP (EIP) address for the cluster. - - :type cluster_parameter_group_name: string - :param cluster_parameter_group_name: - The name of the parameter group to be associated with this cluster. - - Default: The default Amazon Redshift cluster parameter group. For - information about the default parameter group, go to `Working with - Amazon Redshift Parameter Groups`_. - - Constraints: - - - + Must be 1 to 255 alphanumeric characters or hyphens. - + First character must be a letter. - + Cannot end with a hyphen or contain two consecutive hyphens. - - :type cluster_security_groups: list - :param cluster_security_groups: A list of security groups to be - associated with this cluster. - Default: The default cluster security group for Amazon Redshift. - - Cluster security groups only apply to clusters outside of VPCs. - - :type vpc_security_group_ids: list - :param vpc_security_group_ids: A list of Virtual Private Cloud (VPC) - security groups to be associated with the cluster. - Default: The default VPC security group is associated with the cluster. - - VPC security groups only apply to clusters in VPCs. - - :type preferred_maintenance_window: string - :param preferred_maintenance_window: The weekly time range (in UTC) - during which automated cluster maintenance can occur. - Format: `ddd:hh24:mi-ddd:hh24:mi` - - Default: The value selected for the cluster from which the snapshot was - taken. The following list shows the time blocks for each region - from which the default maintenance windows are assigned. - - - + **US-East (Northern Virginia) Region:** 03:00-11:00 UTC - + **US-West (Oregon) Region** 06:00-14:00 UTC - + **EU (Ireland) Region** 22:00-06:00 UTC - + **Asia Pacific (Singapore) Region** 14:00-22:00 UTC - + **Asia Pacific (Sydney) Region** 12:00-20:00 UTC - + **Asia Pacific (Tokyo) Region** 17:00-03:00 UTC - - - Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun - - Constraints: Minimum 30-minute window. - - :type automated_snapshot_retention_period: integer - :param automated_snapshot_retention_period: The number of days that - automated snapshots are retained. If the value is 0, automated - snapshots are disabled. Even if automated snapshots are disabled, - you can still create manual snapshots when you want with - CreateClusterSnapshot. - Default: The value selected for the cluster from which the snapshot was - taken. - - Constraints: Must be a value from 0 to 35. - - """ - params = { - 'ClusterIdentifier': cluster_identifier, - 'SnapshotIdentifier': snapshot_identifier, - } - if snapshot_cluster_identifier is not None: - params['SnapshotClusterIdentifier'] = snapshot_cluster_identifier - if port is not None: - params['Port'] = port - if availability_zone is not None: - params['AvailabilityZone'] = availability_zone - if allow_version_upgrade is not None: - params['AllowVersionUpgrade'] = str( - allow_version_upgrade).lower() - if cluster_subnet_group_name is not None: - params['ClusterSubnetGroupName'] = cluster_subnet_group_name - if publicly_accessible is not None: - params['PubliclyAccessible'] = str( - publicly_accessible).lower() - if owner_account is not None: - params['OwnerAccount'] = owner_account - if hsm_client_certificate_identifier is not None: - params['HsmClientCertificateIdentifier'] = hsm_client_certificate_identifier - if hsm_configuration_identifier is not None: - params['HsmConfigurationIdentifier'] = hsm_configuration_identifier - if elastic_ip is not None: - params['ElasticIp'] = elastic_ip - if cluster_parameter_group_name is not None: - params['ClusterParameterGroupName'] = cluster_parameter_group_name - if cluster_security_groups is not None: - self.build_list_params(params, - cluster_security_groups, - 'ClusterSecurityGroups.member') - if vpc_security_group_ids is not None: - self.build_list_params(params, - vpc_security_group_ids, - 'VpcSecurityGroupIds.member') - if preferred_maintenance_window is not None: - params['PreferredMaintenanceWindow'] = preferred_maintenance_window - if automated_snapshot_retention_period is not None: - params['AutomatedSnapshotRetentionPeriod'] = automated_snapshot_retention_period - return self._make_request( - action='RestoreFromClusterSnapshot', - verb='POST', - path='/', params=params) - - def revoke_cluster_security_group_ingress(self, - cluster_security_group_name, - cidrip=None, - ec2_security_group_name=None, - ec2_security_group_owner_id=None): - """ - Revokes an ingress rule in an Amazon Redshift security group - for a previously authorized IP range or Amazon EC2 security - group. To add an ingress rule, see - AuthorizeClusterSecurityGroupIngress. For information about - managing security groups, go to `Amazon Redshift Cluster - Security Groups`_ in the Amazon Redshift Management Guide . - - :type cluster_security_group_name: string - :param cluster_security_group_name: The name of the security Group from - which to revoke the ingress rule. - - :type cidrip: string - :param cidrip: The IP range for which to revoke access. This range must - be a valid Classless Inter-Domain Routing (CIDR) block of IP - addresses. If `CIDRIP` is specified, `EC2SecurityGroupName` and - `EC2SecurityGroupOwnerId` cannot be provided. - - :type ec2_security_group_name: string - :param ec2_security_group_name: The name of the EC2 Security Group - whose access is to be revoked. If `EC2SecurityGroupName` is - specified, `EC2SecurityGroupOwnerId` must also be provided and - `CIDRIP` cannot be provided. - - :type ec2_security_group_owner_id: string - :param ec2_security_group_owner_id: The AWS account number of the owner - of the security group specified in the `EC2SecurityGroupName` - parameter. The AWS access key ID is not an acceptable value. If - `EC2SecurityGroupOwnerId` is specified, `EC2SecurityGroupName` must - also be provided. and `CIDRIP` cannot be provided. - Example: `111122223333` - - """ - params = { - 'ClusterSecurityGroupName': cluster_security_group_name, - } - if cidrip is not None: - params['CIDRIP'] = cidrip - if ec2_security_group_name is not None: - params['EC2SecurityGroupName'] = ec2_security_group_name - if ec2_security_group_owner_id is not None: - params['EC2SecurityGroupOwnerId'] = ec2_security_group_owner_id - return self._make_request( - action='RevokeClusterSecurityGroupIngress', - verb='POST', - path='/', params=params) - - def revoke_snapshot_access(self, snapshot_identifier, - account_with_restore_access, - snapshot_cluster_identifier=None): - """ - Removes the ability of the specified AWS customer account to - restore the specified snapshot. If the account is currently - restoring the snapshot, the restore will run to completion. - - For more information about working with snapshots, go to - `Amazon Redshift Snapshots`_ in the Amazon Redshift Management - Guide . - - :type snapshot_identifier: string - :param snapshot_identifier: The identifier of the snapshot that the - account can no longer access. - - :type snapshot_cluster_identifier: string - :param snapshot_cluster_identifier: The identifier of the cluster the - snapshot was created from. This parameter is required if your IAM - user has a policy containing a snapshot resource element that - specifies anything other than * for the cluster name. - - :type account_with_restore_access: string - :param account_with_restore_access: The identifier of the AWS customer - account that can no longer restore the specified snapshot. - - """ - params = { - 'SnapshotIdentifier': snapshot_identifier, - 'AccountWithRestoreAccess': account_with_restore_access, - } - if snapshot_cluster_identifier is not None: - params['SnapshotClusterIdentifier'] = snapshot_cluster_identifier - return self._make_request( - action='RevokeSnapshotAccess', - verb='POST', - path='/', params=params) - - def rotate_encryption_key(self, cluster_identifier): - """ - Rotates the encryption keys for a cluster. - - :type cluster_identifier: string - :param cluster_identifier: The unique identifier of the cluster that - you want to rotate the encryption keys for. - Constraints: Must be the name of valid cluster that has encryption - enabled. - - """ - params = {'ClusterIdentifier': cluster_identifier, } - return self._make_request( - action='RotateEncryptionKey', - verb='POST', - path='/', params=params) - - def _make_request(self, action, verb, path, params): - params['ContentType'] = 'JSON' - response = self.make_request(action=action, verb='POST', - path='/', params=params) - body = response.read().decode('utf-8') - boto.log.debug(body) - if response.status == 200: - return json.loads(body) - else: - json_body = json.loads(body) - fault_name = json_body.get('Error', {}).get('Code', None) - exception_class = self._faults.get(fault_name, self.ResponseError) - raise exception_class(response.status, response.reason, - body=json_body)