comparison env/lib/python3.7/site-packages/boto/redshift/layer1.py @ 0:26e78fe6e8c4 draft

"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author shellac
date Sat, 02 May 2020 07:14:21 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:26e78fe6e8c4
1 # Copyright (c) 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved
2 #
3 # Permission is hereby granted, free of charge, to any person obtaining a
4 # copy of this software and associated documentation files (the
5 # "Software"), to deal in the Software without restriction, including
6 # without limitation the rights to use, copy, modify, merge, publish, dis-
7 # tribute, sublicense, and/or sell copies of the Software, and to permit
8 # persons to whom the Software is furnished to do so, subject to the fol-
9 # lowing conditions:
10 #
11 # The above copyright notice and this permission notice shall be included
12 # in all copies or substantial portions of the Software.
13 #
14 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
16 # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
17 # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
18 # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20 # IN THE SOFTWARE.
21 #
22
23 import boto
24 from boto.compat import json
25 from boto.connection import AWSQueryConnection
26 from boto.regioninfo import RegionInfo
27 from boto.exception import JSONResponseError
28 from boto.redshift import exceptions
29
30
31 class RedshiftConnection(AWSQueryConnection):
32 """
33 Amazon Redshift **Overview**
34 This is an interface reference for Amazon Redshift. It contains
35 documentation for one of the programming or command line
36 interfaces you can use to manage Amazon Redshift clusters. Note
37 that Amazon Redshift is asynchronous, which means that some
38 interfaces may require techniques, such as polling or asynchronous
39 callback handlers, to determine when a command has been applied.
40 In this reference, the parameter descriptions indicate whether a
41 change is applied immediately, on the next instance reboot, or
42 during the next maintenance window. For a summary of the Amazon
43 Redshift cluster management interfaces, go to `Using the Amazon
44 Redshift Management Interfaces `_.
45
46 Amazon Redshift manages all the work of setting up, operating, and
47 scaling a data warehouse: provisioning capacity, monitoring and
48 backing up the cluster, and applying patches and upgrades to the
49 Amazon Redshift engine. You can focus on using your data to
50 acquire new insights for your business and customers.
51
52 If you are a first-time user of Amazon Redshift, we recommend that
53 you begin by reading the The `Amazon Redshift Getting Started
54 Guide`_
55
56 If you are a database developer, the `Amazon Redshift Database
57 Developer Guide`_ explains how to design, build, query, and
58 maintain the databases that make up your data warehouse.
59 """
60 APIVersion = "2012-12-01"
61 DefaultRegionName = "us-east-1"
62 DefaultRegionEndpoint = "redshift.us-east-1.amazonaws.com"
63 ResponseError = JSONResponseError
64
65 _faults = {
66 "SnapshotCopyAlreadyDisabled": exceptions.SnapshotCopyAlreadyDisabled,
67 "ClusterNotFound": exceptions.ClusterNotFound,
68 "UnknownSnapshotCopyRegion": exceptions.UnknownSnapshotCopyRegion,
69 "InvalidClusterSubnetState": exceptions.InvalidClusterSubnetState,
70 "InvalidSubnet": exceptions.InvalidSubnet,
71 "ReservedNodeQuotaExceeded": exceptions.ReservedNodeQuotaExceeded,
72 "InvalidClusterState": exceptions.InvalidClusterState,
73 "HsmClientCertificateQuotaExceeded": exceptions.HsmClientCertificateQuotaExceeded,
74 "SubscriptionCategoryNotFound": exceptions.SubscriptionCategoryNotFound,
75 "HsmClientCertificateNotFound": exceptions.HsmClientCertificateNotFound,
76 "SubscriptionEventIdNotFound": exceptions.SubscriptionEventIdNotFound,
77 "ClusterSecurityGroupAlreadyExists": exceptions.ClusterSecurityGroupAlreadyExists,
78 "HsmConfigurationAlreadyExists": exceptions.HsmConfigurationAlreadyExists,
79 "NumberOfNodesQuotaExceeded": exceptions.NumberOfNodesQuotaExceeded,
80 "ReservedNodeOfferingNotFound": exceptions.ReservedNodeOfferingNotFound,
81 "BucketNotFound": exceptions.BucketNotFound,
82 "InsufficientClusterCapacity": exceptions.InsufficientClusterCapacity,
83 "InvalidRestore": exceptions.InvalidRestore,
84 "UnauthorizedOperation": exceptions.UnauthorizedOperation,
85 "ClusterQuotaExceeded": exceptions.ClusterQuotaExceeded,
86 "InvalidVPCNetworkState": exceptions.InvalidVPCNetworkState,
87 "ClusterSnapshotNotFound": exceptions.ClusterSnapshotNotFound,
88 "AuthorizationQuotaExceeded": exceptions.AuthorizationQuotaExceeded,
89 "InvalidHsmClientCertificateState": exceptions.InvalidHsmClientCertificateState,
90 "SNSTopicArnNotFound": exceptions.SNSTopicArnNotFound,
91 "ResizeNotFound": exceptions.ResizeNotFound,
92 "ClusterSubnetGroupNotFound": exceptions.ClusterSubnetGroupNotFound,
93 "SNSNoAuthorization": exceptions.SNSNoAuthorization,
94 "ClusterSnapshotQuotaExceeded": exceptions.ClusterSnapshotQuotaExceeded,
95 "AccessToSnapshotDenied": exceptions.AccessToSnapshotDenied,
96 "InvalidClusterSecurityGroupState": exceptions.InvalidClusterSecurityGroupState,
97 "NumberOfNodesPerClusterLimitExceeded": exceptions.NumberOfNodesPerClusterLimitExceeded,
98 "ClusterSubnetQuotaExceeded": exceptions.ClusterSubnetQuotaExceeded,
99 "SNSInvalidTopic": exceptions.SNSInvalidTopic,
100 "ClusterSecurityGroupNotFound": exceptions.ClusterSecurityGroupNotFound,
101 "InvalidElasticIp": exceptions.InvalidElasticIp,
102 "InvalidClusterParameterGroupState": exceptions.InvalidClusterParameterGroupState,
103 "InvalidHsmConfigurationState": exceptions.InvalidHsmConfigurationState,
104 "ClusterAlreadyExists": exceptions.ClusterAlreadyExists,
105 "HsmConfigurationQuotaExceeded": exceptions.HsmConfigurationQuotaExceeded,
106 "ClusterSnapshotAlreadyExists": exceptions.ClusterSnapshotAlreadyExists,
107 "SubscriptionSeverityNotFound": exceptions.SubscriptionSeverityNotFound,
108 "SourceNotFound": exceptions.SourceNotFound,
109 "ReservedNodeAlreadyExists": exceptions.ReservedNodeAlreadyExists,
110 "ClusterSubnetGroupQuotaExceeded": exceptions.ClusterSubnetGroupQuotaExceeded,
111 "ClusterParameterGroupNotFound": exceptions.ClusterParameterGroupNotFound,
112 "InvalidS3BucketName": exceptions.InvalidS3BucketName,
113 "InvalidS3KeyPrefix": exceptions.InvalidS3KeyPrefix,
114 "SubscriptionAlreadyExist": exceptions.SubscriptionAlreadyExist,
115 "HsmConfigurationNotFound": exceptions.HsmConfigurationNotFound,
116 "InvalidSubscriptionState": exceptions.InvalidSubscriptionState,
117 "AuthorizationNotFound": exceptions.AuthorizationNotFound,
118 "ClusterSecurityGroupQuotaExceeded": exceptions.ClusterSecurityGroupQuotaExceeded,
119 "SubnetAlreadyInUse": exceptions.SubnetAlreadyInUse,
120 "EventSubscriptionQuotaExceeded": exceptions.EventSubscriptionQuotaExceeded,
121 "AuthorizationAlreadyExists": exceptions.AuthorizationAlreadyExists,
122 "InvalidClusterSnapshotState": exceptions.InvalidClusterSnapshotState,
123 "ClusterParameterGroupQuotaExceeded": exceptions.ClusterParameterGroupQuotaExceeded,
124 "SnapshotCopyDisabled": exceptions.SnapshotCopyDisabled,
125 "ClusterSubnetGroupAlreadyExists": exceptions.ClusterSubnetGroupAlreadyExists,
126 "ReservedNodeNotFound": exceptions.ReservedNodeNotFound,
127 "HsmClientCertificateAlreadyExists": exceptions.HsmClientCertificateAlreadyExists,
128 "InvalidClusterSubnetGroupState": exceptions.InvalidClusterSubnetGroupState,
129 "SubscriptionNotFound": exceptions.SubscriptionNotFound,
130 "InsufficientS3BucketPolicy": exceptions.InsufficientS3BucketPolicy,
131 "ClusterParameterGroupAlreadyExists": exceptions.ClusterParameterGroupAlreadyExists,
132 "UnsupportedOption": exceptions.UnsupportedOption,
133 "CopyToRegionDisabled": exceptions.CopyToRegionDisabled,
134 "SnapshotCopyAlreadyEnabled": exceptions.SnapshotCopyAlreadyEnabled,
135 "IncompatibleOrderableOptions": exceptions.IncompatibleOrderableOptions,
136 }
137
138
139 def __init__(self, **kwargs):
140 region = kwargs.pop('region', None)
141 if not region:
142 region = RegionInfo(self, self.DefaultRegionName,
143 self.DefaultRegionEndpoint)
144
145 if 'host' not in kwargs or kwargs['host'] is None:
146 kwargs['host'] = region.endpoint
147
148 super(RedshiftConnection, self).__init__(**kwargs)
149 self.region = region
150
151 def _required_auth_capability(self):
152 return ['hmac-v4']
153
154 def authorize_cluster_security_group_ingress(self,
155 cluster_security_group_name,
156 cidrip=None,
157 ec2_security_group_name=None,
158 ec2_security_group_owner_id=None):
159 """
160 Adds an inbound (ingress) rule to an Amazon Redshift security
161 group. Depending on whether the application accessing your
162 cluster is running on the Internet or an EC2 instance, you can
163 authorize inbound access to either a Classless Interdomain
164 Routing (CIDR) IP address range or an EC2 security group. You
165 can add as many as 20 ingress rules to an Amazon Redshift
166 security group.
167
168 For an overview of CIDR blocks, see the Wikipedia article on
169 `Classless Inter-Domain Routing`_.
170
171 You must also associate the security group with a cluster so
172 that clients running on these IP addresses or the EC2 instance
173 are authorized to connect to the cluster. For information
174 about managing security groups, go to `Working with Security
175 Groups`_ in the Amazon Redshift Management Guide .
176
177 :type cluster_security_group_name: string
178 :param cluster_security_group_name: The name of the security group to
179 which the ingress rule is added.
180
181 :type cidrip: string
182 :param cidrip: The IP range to be added the Amazon Redshift security
183 group.
184
185 :type ec2_security_group_name: string
186 :param ec2_security_group_name: The EC2 security group to be added the
187 Amazon Redshift security group.
188
189 :type ec2_security_group_owner_id: string
190 :param ec2_security_group_owner_id: The AWS account number of the owner
191 of the security group specified by the EC2SecurityGroupName
192 parameter. The AWS Access Key ID is not an acceptable value.
193 Example: `111122223333`
194
195 """
196 params = {
197 'ClusterSecurityGroupName': cluster_security_group_name,
198 }
199 if cidrip is not None:
200 params['CIDRIP'] = cidrip
201 if ec2_security_group_name is not None:
202 params['EC2SecurityGroupName'] = ec2_security_group_name
203 if ec2_security_group_owner_id is not None:
204 params['EC2SecurityGroupOwnerId'] = ec2_security_group_owner_id
205 return self._make_request(
206 action='AuthorizeClusterSecurityGroupIngress',
207 verb='POST',
208 path='/', params=params)
209
210 def authorize_snapshot_access(self, snapshot_identifier,
211 account_with_restore_access,
212 snapshot_cluster_identifier=None):
213 """
214 Authorizes the specified AWS customer account to restore the
215 specified snapshot.
216
217 For more information about working with snapshots, go to
218 `Amazon Redshift Snapshots`_ in the Amazon Redshift Management
219 Guide .
220
221 :type snapshot_identifier: string
222 :param snapshot_identifier: The identifier of the snapshot the account
223 is authorized to restore.
224
225 :type snapshot_cluster_identifier: string
226 :param snapshot_cluster_identifier: The identifier of the cluster the
227 snapshot was created from. This parameter is required if your IAM
228 user has a policy containing a snapshot resource element that
229 specifies anything other than * for the cluster name.
230
231 :type account_with_restore_access: string
232 :param account_with_restore_access: The identifier of the AWS customer
233 account authorized to restore the specified snapshot.
234
235 """
236 params = {
237 'SnapshotIdentifier': snapshot_identifier,
238 'AccountWithRestoreAccess': account_with_restore_access,
239 }
240 if snapshot_cluster_identifier is not None:
241 params['SnapshotClusterIdentifier'] = snapshot_cluster_identifier
242 return self._make_request(
243 action='AuthorizeSnapshotAccess',
244 verb='POST',
245 path='/', params=params)
246
247 def copy_cluster_snapshot(self, source_snapshot_identifier,
248 target_snapshot_identifier,
249 source_snapshot_cluster_identifier=None):
250 """
251 Copies the specified automated cluster snapshot to a new
252 manual cluster snapshot. The source must be an automated
253 snapshot and it must be in the available state.
254
255 When you delete a cluster, Amazon Redshift deletes any
256 automated snapshots of the cluster. Also, when the retention
257 period of the snapshot expires, Amazon Redshift automatically
258 deletes it. If you want to keep an automated snapshot for a
259 longer period, you can make a manual copy of the snapshot.
260 Manual snapshots are retained until you delete them.
261
262 For more information about working with snapshots, go to
263 `Amazon Redshift Snapshots`_ in the Amazon Redshift Management
264 Guide .
265
266 :type source_snapshot_identifier: string
267 :param source_snapshot_identifier:
268 The identifier for the source snapshot.
269
270 Constraints:
271
272
273 + Must be the identifier for a valid automated snapshot whose state is
274 `available`.
275
276 :type source_snapshot_cluster_identifier: string
277 :param source_snapshot_cluster_identifier:
278 The identifier of the cluster the source snapshot was created from.
279 This parameter is required if your IAM user has a policy containing
280 a snapshot resource element that specifies anything other than *
281 for the cluster name.
282
283 Constraints:
284
285
286 + Must be the identifier for a valid cluster.
287
288 :type target_snapshot_identifier: string
289 :param target_snapshot_identifier:
290 The identifier given to the new manual snapshot.
291
292 Constraints:
293
294
295 + Cannot be null, empty, or blank.
296 + Must contain from 1 to 255 alphanumeric characters or hyphens.
297 + First character must be a letter.
298 + Cannot end with a hyphen or contain two consecutive hyphens.
299 + Must be unique for the AWS account that is making the request.
300
301 """
302 params = {
303 'SourceSnapshotIdentifier': source_snapshot_identifier,
304 'TargetSnapshotIdentifier': target_snapshot_identifier,
305 }
306 if source_snapshot_cluster_identifier is not None:
307 params['SourceSnapshotClusterIdentifier'] = source_snapshot_cluster_identifier
308 return self._make_request(
309 action='CopyClusterSnapshot',
310 verb='POST',
311 path='/', params=params)
312
313 def create_cluster(self, cluster_identifier, node_type, master_username,
314 master_user_password, db_name=None, cluster_type=None,
315 cluster_security_groups=None,
316 vpc_security_group_ids=None,
317 cluster_subnet_group_name=None,
318 availability_zone=None,
319 preferred_maintenance_window=None,
320 cluster_parameter_group_name=None,
321 automated_snapshot_retention_period=None, port=None,
322 cluster_version=None, allow_version_upgrade=None,
323 number_of_nodes=None, publicly_accessible=None,
324 encrypted=None,
325 hsm_client_certificate_identifier=None,
326 hsm_configuration_identifier=None, elastic_ip=None):
327 """
328 Creates a new cluster. To create the cluster in virtual
329 private cloud (VPC), you must provide cluster subnet group
330 name. If you don't provide a cluster subnet group name or the
331 cluster security group parameter, Amazon Redshift creates a
332 non-VPC cluster, it associates the default cluster security
333 group with the cluster. For more information about managing
334 clusters, go to `Amazon Redshift Clusters`_ in the Amazon
335 Redshift Management Guide .
336
337 :type db_name: string
338 :param db_name:
339 The name of the first database to be created when the cluster is
340 created.
341
342 To create additional databases after the cluster is created, connect to
343 the cluster with a SQL client and use SQL commands to create a
344 database. For more information, go to `Create a Database`_ in the
345 Amazon Redshift Database Developer Guide.
346
347 Default: `dev`
348
349 Constraints:
350
351
352 + Must contain 1 to 64 alphanumeric characters.
353 + Must contain only lowercase letters.
354 + Cannot be a word that is reserved by the service. A list of reserved
355 words can be found in `Reserved Words`_ in the Amazon Redshift
356 Database Developer Guide.
357
358 :type cluster_identifier: string
359 :param cluster_identifier: A unique identifier for the cluster. You use
360 this identifier to refer to the cluster for any subsequent cluster
361 operations such as deleting or modifying. The identifier also
362 appears in the Amazon Redshift console.
363 Constraints:
364
365
366 + Must contain from 1 to 63 alphanumeric characters or hyphens.
367 + Alphabetic characters must be lowercase.
368 + First character must be a letter.
369 + Cannot end with a hyphen or contain two consecutive hyphens.
370 + Must be unique for all clusters within an AWS account.
371
372
373 Example: `myexamplecluster`
374
375 :type cluster_type: string
376 :param cluster_type: The type of the cluster. When cluster type is
377 specified as
378
379 + `single-node`, the **NumberOfNodes** parameter is not required.
380 + `multi-node`, the **NumberOfNodes** parameter is required.
381
382
383 Valid Values: `multi-node` | `single-node`
384
385 Default: `multi-node`
386
387 :type node_type: string
388 :param node_type: The node type to be provisioned for the cluster. For
389 information about node types, go to ` Working with Clusters`_ in
390 the Amazon Redshift Management Guide .
391 Valid Values: `dw1.xlarge` | `dw1.8xlarge` | `dw2.large` |
392 `dw2.8xlarge`.
393
394 :type master_username: string
395 :param master_username:
396 The user name associated with the master user account for the cluster
397 that is being created.
398
399 Constraints:
400
401
402 + Must be 1 - 128 alphanumeric characters.
403 + First character must be a letter.
404 + Cannot be a reserved word. A list of reserved words can be found in
405 `Reserved Words`_ in the Amazon Redshift Database Developer Guide.
406
407 :type master_user_password: string
408 :param master_user_password:
409 The password associated with the master user account for the cluster
410 that is being created.
411
412 Constraints:
413
414
415 + Must be between 8 and 64 characters in length.
416 + Must contain at least one uppercase letter.
417 + Must contain at least one lowercase letter.
418 + Must contain one number.
419 + Can be any printable ASCII character (ASCII code 33 to 126) except '
420 (single quote), " (double quote), \, /, @, or space.
421
422 :type cluster_security_groups: list
423 :param cluster_security_groups: A list of security groups to be
424 associated with this cluster.
425 Default: The default cluster security group for Amazon Redshift.
426
427 :type vpc_security_group_ids: list
428 :param vpc_security_group_ids: A list of Virtual Private Cloud (VPC)
429 security groups to be associated with the cluster.
430 Default: The default VPC security group is associated with the cluster.
431
432 :type cluster_subnet_group_name: string
433 :param cluster_subnet_group_name: The name of a cluster subnet group to
434 be associated with this cluster.
435 If this parameter is not provided the resulting cluster will be
436 deployed outside virtual private cloud (VPC).
437
438 :type availability_zone: string
439 :param availability_zone: The EC2 Availability Zone (AZ) in which you
440 want Amazon Redshift to provision the cluster. For example, if you
441 have several EC2 instances running in a specific Availability Zone,
442 then you might want the cluster to be provisioned in the same zone
443 in order to decrease network latency.
444 Default: A random, system-chosen Availability Zone in the region that
445 is specified by the endpoint.
446
447 Example: `us-east-1d`
448
449 Constraint: The specified Availability Zone must be in the same region
450 as the current endpoint.
451
452 :type preferred_maintenance_window: string
453 :param preferred_maintenance_window: The weekly time range (in UTC)
454 during which automated cluster maintenance can occur.
455 Format: `ddd:hh24:mi-ddd:hh24:mi`
456
457 Default: A 30-minute window selected at random from an 8-hour block of
458 time per region, occurring on a random day of the week. The
459 following list shows the time blocks for each region from which the
460 default maintenance windows are assigned.
461
462
463 + **US-East (Northern Virginia) Region:** 03:00-11:00 UTC
464 + **US-West (Oregon) Region** 06:00-14:00 UTC
465 + **EU (Ireland) Region** 22:00-06:00 UTC
466 + **Asia Pacific (Singapore) Region** 14:00-22:00 UTC
467 + **Asia Pacific (Sydney) Region** 12:00-20:00 UTC
468 + **Asia Pacific (Tokyo) Region** 17:00-03:00 UTC
469
470
471 Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun
472
473 Constraints: Minimum 30-minute window.
474
475 :type cluster_parameter_group_name: string
476 :param cluster_parameter_group_name:
477 The name of the parameter group to be associated with this cluster.
478
479 Default: The default Amazon Redshift cluster parameter group. For
480 information about the default parameter group, go to `Working with
481 Amazon Redshift Parameter Groups`_
482
483 Constraints:
484
485
486 + Must be 1 to 255 alphanumeric characters or hyphens.
487 + First character must be a letter.
488 + Cannot end with a hyphen or contain two consecutive hyphens.
489
490 :type automated_snapshot_retention_period: integer
491 :param automated_snapshot_retention_period: The number of days that
492 automated snapshots are retained. If the value is 0, automated
493 snapshots are disabled. Even if automated snapshots are disabled,
494 you can still create manual snapshots when you want with
495 CreateClusterSnapshot.
496 Default: `1`
497
498 Constraints: Must be a value from 0 to 35.
499
500 :type port: integer
501 :param port: The port number on which the cluster accepts incoming
502 connections.
503 The cluster is accessible only via the JDBC and ODBC connection
504 strings. Part of the connection string requires the port on which
505 the cluster will listen for incoming connections.
506
507 Default: `5439`
508
509 Valid Values: `1150-65535`
510
511 :type cluster_version: string
512 :param cluster_version: The version of the Amazon Redshift engine
513 software that you want to deploy on the cluster.
514 The version selected runs on all the nodes in the cluster.
515
516 Constraints: Only version 1.0 is currently available.
517
518 Example: `1.0`
519
520 :type allow_version_upgrade: boolean
521 :param allow_version_upgrade: If `True`, upgrades can be applied during
522 the maintenance window to the Amazon Redshift engine that is
523 running on the cluster.
524 When a new version of the Amazon Redshift engine is released, you can
525 request that the service automatically apply upgrades during the
526 maintenance window to the Amazon Redshift engine that is running on
527 your cluster.
528
529 Default: `True`
530
531 :type number_of_nodes: integer
532 :param number_of_nodes: The number of compute nodes in the cluster.
533 This parameter is required when the **ClusterType** parameter is
534 specified as `multi-node`.
535 For information about determining how many nodes you need, go to `
536 Working with Clusters`_ in the Amazon Redshift Management Guide .
537
538 If you don't specify this parameter, you get a single-node cluster.
539 When requesting a multi-node cluster, you must specify the number
540 of nodes that you want in the cluster.
541
542 Default: `1`
543
544 Constraints: Value must be at least 1 and no more than 100.
545
546 :type publicly_accessible: boolean
547 :param publicly_accessible: If `True`, the cluster can be accessed from
548 a public network.
549
550 :type encrypted: boolean
551 :param encrypted: If `True`, the data in the cluster is encrypted at
552 rest.
553 Default: false
554
555 :type hsm_client_certificate_identifier: string
556 :param hsm_client_certificate_identifier: Specifies the name of the HSM
557 client certificate the Amazon Redshift cluster uses to retrieve the
558 data encryption keys stored in an HSM.
559
560 :type hsm_configuration_identifier: string
561 :param hsm_configuration_identifier: Specifies the name of the HSM
562 configuration that contains the information the Amazon Redshift
563 cluster can use to retrieve and store keys in an HSM.
564
565 :type elastic_ip: string
566 :param elastic_ip: The Elastic IP (EIP) address for the cluster.
567 Constraints: The cluster must be provisioned in EC2-VPC and publicly-
568 accessible through an Internet gateway. For more information about
569 provisioning clusters in EC2-VPC, go to `Supported Platforms to
570 Launch Your Cluster`_ in the Amazon Redshift Management Guide.
571
572 """
573 params = {
574 'ClusterIdentifier': cluster_identifier,
575 'NodeType': node_type,
576 'MasterUsername': master_username,
577 'MasterUserPassword': master_user_password,
578 }
579 if db_name is not None:
580 params['DBName'] = db_name
581 if cluster_type is not None:
582 params['ClusterType'] = cluster_type
583 if cluster_security_groups is not None:
584 self.build_list_params(params,
585 cluster_security_groups,
586 'ClusterSecurityGroups.member')
587 if vpc_security_group_ids is not None:
588 self.build_list_params(params,
589 vpc_security_group_ids,
590 'VpcSecurityGroupIds.member')
591 if cluster_subnet_group_name is not None:
592 params['ClusterSubnetGroupName'] = cluster_subnet_group_name
593 if availability_zone is not None:
594 params['AvailabilityZone'] = availability_zone
595 if preferred_maintenance_window is not None:
596 params['PreferredMaintenanceWindow'] = preferred_maintenance_window
597 if cluster_parameter_group_name is not None:
598 params['ClusterParameterGroupName'] = cluster_parameter_group_name
599 if automated_snapshot_retention_period is not None:
600 params['AutomatedSnapshotRetentionPeriod'] = automated_snapshot_retention_period
601 if port is not None:
602 params['Port'] = port
603 if cluster_version is not None:
604 params['ClusterVersion'] = cluster_version
605 if allow_version_upgrade is not None:
606 params['AllowVersionUpgrade'] = str(
607 allow_version_upgrade).lower()
608 if number_of_nodes is not None:
609 params['NumberOfNodes'] = number_of_nodes
610 if publicly_accessible is not None:
611 params['PubliclyAccessible'] = str(
612 publicly_accessible).lower()
613 if encrypted is not None:
614 params['Encrypted'] = str(
615 encrypted).lower()
616 if hsm_client_certificate_identifier is not None:
617 params['HsmClientCertificateIdentifier'] = hsm_client_certificate_identifier
618 if hsm_configuration_identifier is not None:
619 params['HsmConfigurationIdentifier'] = hsm_configuration_identifier
620 if elastic_ip is not None:
621 params['ElasticIp'] = elastic_ip
622 return self._make_request(
623 action='CreateCluster',
624 verb='POST',
625 path='/', params=params)
626
627 def create_cluster_parameter_group(self, parameter_group_name,
628 parameter_group_family, description):
629 """
630 Creates an Amazon Redshift parameter group.
631
632 Creating parameter groups is independent of creating clusters.
633 You can associate a cluster with a parameter group when you
634 create the cluster. You can also associate an existing cluster
635 with a parameter group after the cluster is created by using
636 ModifyCluster.
637
638 Parameters in the parameter group define specific behavior
639 that applies to the databases you create on the cluster. For
640 more information about managing parameter groups, go to
641 `Amazon Redshift Parameter Groups`_ in the Amazon Redshift
642 Management Guide .
643
644 :type parameter_group_name: string
645 :param parameter_group_name:
646 The name of the cluster parameter group.
647
648 Constraints:
649
650
651 + Must be 1 to 255 alphanumeric characters or hyphens
652 + First character must be a letter.
653 + Cannot end with a hyphen or contain two consecutive hyphens.
654 + Must be unique within your AWS account.
655
656 This value is stored as a lower-case string.
657
658 :type parameter_group_family: string
659 :param parameter_group_family: The Amazon Redshift engine version to
660 which the cluster parameter group applies. The cluster engine
661 version determines the set of parameters.
662 To get a list of valid parameter group family names, you can call
663 DescribeClusterParameterGroups. By default, Amazon Redshift returns
664 a list of all the parameter groups that are owned by your AWS
665 account, including the default parameter groups for each Amazon
666 Redshift engine version. The parameter group family names
667 associated with the default parameter groups provide you the valid
668 values. For example, a valid family name is "redshift-1.0".
669
670 :type description: string
671 :param description: A description of the parameter group.
672
673 """
674 params = {
675 'ParameterGroupName': parameter_group_name,
676 'ParameterGroupFamily': parameter_group_family,
677 'Description': description,
678 }
679 return self._make_request(
680 action='CreateClusterParameterGroup',
681 verb='POST',
682 path='/', params=params)
683
684 def create_cluster_security_group(self, cluster_security_group_name,
685 description):
686 """
687 Creates a new Amazon Redshift security group. You use security
688 groups to control access to non-VPC clusters.
689
690 For information about managing security groups, go to `Amazon
691 Redshift Cluster Security Groups`_ in the Amazon Redshift
692 Management Guide .
693
694 :type cluster_security_group_name: string
695 :param cluster_security_group_name: The name for the security group.
696 Amazon Redshift stores the value as a lowercase string.
697 Constraints:
698
699
700 + Must contain no more than 255 alphanumeric characters or hyphens.
701 + Must not be "Default".
702 + Must be unique for all security groups that are created by your AWS
703 account.
704
705
706 Example: `examplesecuritygroup`
707
708 :type description: string
709 :param description: A description for the security group.
710
711 """
712 params = {
713 'ClusterSecurityGroupName': cluster_security_group_name,
714 'Description': description,
715 }
716 return self._make_request(
717 action='CreateClusterSecurityGroup',
718 verb='POST',
719 path='/', params=params)
720
721 def create_cluster_snapshot(self, snapshot_identifier,
722 cluster_identifier):
723 """
724 Creates a manual snapshot of the specified cluster. The
725 cluster must be in the `available` state.
726
727 For more information about working with snapshots, go to
728 `Amazon Redshift Snapshots`_ in the Amazon Redshift Management
729 Guide .
730
731 :type snapshot_identifier: string
732 :param snapshot_identifier: A unique identifier for the snapshot that
733 you are requesting. This identifier must be unique for all
734 snapshots within the AWS account.
735 Constraints:
736
737
738 + Cannot be null, empty, or blank
739 + Must contain from 1 to 255 alphanumeric characters or hyphens
740 + First character must be a letter
741 + Cannot end with a hyphen or contain two consecutive hyphens
742
743
744 Example: `my-snapshot-id`
745
746 :type cluster_identifier: string
747 :param cluster_identifier: The cluster identifier for which you want a
748 snapshot.
749
750 """
751 params = {
752 'SnapshotIdentifier': snapshot_identifier,
753 'ClusterIdentifier': cluster_identifier,
754 }
755 return self._make_request(
756 action='CreateClusterSnapshot',
757 verb='POST',
758 path='/', params=params)
759
760 def create_cluster_subnet_group(self, cluster_subnet_group_name,
761 description, subnet_ids):
762 """
763 Creates a new Amazon Redshift subnet group. You must provide a
764 list of one or more subnets in your existing Amazon Virtual
765 Private Cloud (Amazon VPC) when creating Amazon Redshift
766 subnet group.
767
768 For information about subnet groups, go to `Amazon Redshift
769 Cluster Subnet Groups`_ in the Amazon Redshift Management
770 Guide .
771
772 :type cluster_subnet_group_name: string
773 :param cluster_subnet_group_name: The name for the subnet group. Amazon
774 Redshift stores the value as a lowercase string.
775 Constraints:
776
777
778 + Must contain no more than 255 alphanumeric characters or hyphens.
779 + Must not be "Default".
780 + Must be unique for all subnet groups that are created by your AWS
781 account.
782
783
784 Example: `examplesubnetgroup`
785
786 :type description: string
787 :param description: A description for the subnet group.
788
789 :type subnet_ids: list
790 :param subnet_ids: An array of VPC subnet IDs. A maximum of 20 subnets
791 can be modified in a single request.
792
793 """
794 params = {
795 'ClusterSubnetGroupName': cluster_subnet_group_name,
796 'Description': description,
797 }
798 self.build_list_params(params,
799 subnet_ids,
800 'SubnetIds.member')
801 return self._make_request(
802 action='CreateClusterSubnetGroup',
803 verb='POST',
804 path='/', params=params)
805
806 def create_event_subscription(self, subscription_name, sns_topic_arn,
807 source_type=None, source_ids=None,
808 event_categories=None, severity=None,
809 enabled=None):
810 """
811 Creates an Amazon Redshift event notification subscription.
812 This action requires an ARN (Amazon Resource Name) of an
813 Amazon SNS topic created by either the Amazon Redshift
814 console, the Amazon SNS console, or the Amazon SNS API. To
815 obtain an ARN with Amazon SNS, you must create a topic in
816 Amazon SNS and subscribe to the topic. The ARN is displayed in
817 the SNS console.
818
819 You can specify the source type, and lists of Amazon Redshift
820 source IDs, event categories, and event severities.
821 Notifications will be sent for all events you want that match
822 those criteria. For example, you can specify source type =
823 cluster, source ID = my-cluster-1 and mycluster2, event
824 categories = Availability, Backup, and severity = ERROR. The
825 subscription will only send notifications for those ERROR
826 events in the Availability and Backup categories for the
827 specified clusters.
828
829 If you specify both the source type and source IDs, such as
830 source type = cluster and source identifier = my-cluster-1,
831 notifications will be sent for all the cluster events for my-
832 cluster-1. If you specify a source type but do not specify a
833 source identifier, you will receive notice of the events for
834 the objects of that type in your AWS account. If you do not
835 specify either the SourceType nor the SourceIdentifier, you
836 will be notified of events generated from all Amazon Redshift
837 sources belonging to your AWS account. You must specify a
838 source type if you specify a source ID.
839
840 :type subscription_name: string
841 :param subscription_name:
842 The name of the event subscription to be created.
843
844 Constraints:
845
846
847 + Cannot be null, empty, or blank.
848 + Must contain from 1 to 255 alphanumeric characters or hyphens.
849 + First character must be a letter.
850 + Cannot end with a hyphen or contain two consecutive hyphens.
851
852 :type sns_topic_arn: string
853 :param sns_topic_arn: The Amazon Resource Name (ARN) of the Amazon SNS
854 topic used to transmit the event notifications. The ARN is created
855 by Amazon SNS when you create a topic and subscribe to it.
856
857 :type source_type: string
858 :param source_type: The type of source that will be generating the
859 events. For example, if you want to be notified of events generated
860 by a cluster, you would set this parameter to cluster. If this
861 value is not specified, events are returned for all Amazon Redshift
862 objects in your AWS account. You must specify a source type in
863 order to specify source IDs.
864 Valid values: cluster, cluster-parameter-group, cluster-security-group,
865 and cluster-snapshot.
866
867 :type source_ids: list
868 :param source_ids: A list of one or more identifiers of Amazon Redshift
869 source objects. All of the objects must be of the same type as was
870 specified in the source type parameter. The event subscription will
871 return only events generated by the specified objects. If not
872 specified, then events are returned for all objects within the
873 source type specified.
874 Example: my-cluster-1, my-cluster-2
875
876 Example: my-snapshot-20131010
877
878 :type event_categories: list
879 :param event_categories: Specifies the Amazon Redshift event categories
880 to be published by the event notification subscription.
881 Values: Configuration, Management, Monitoring, Security
882
883 :type severity: string
884 :param severity: Specifies the Amazon Redshift event severity to be
885 published by the event notification subscription.
886 Values: ERROR, INFO
887
888 :type enabled: boolean
889 :param enabled: A Boolean value; set to `True` to activate the
890 subscription, set to `False` to create the subscription but not
891 active it.
892
893 """
894 params = {
895 'SubscriptionName': subscription_name,
896 'SnsTopicArn': sns_topic_arn,
897 }
898 if source_type is not None:
899 params['SourceType'] = source_type
900 if source_ids is not None:
901 self.build_list_params(params,
902 source_ids,
903 'SourceIds.member')
904 if event_categories is not None:
905 self.build_list_params(params,
906 event_categories,
907 'EventCategories.member')
908 if severity is not None:
909 params['Severity'] = severity
910 if enabled is not None:
911 params['Enabled'] = str(
912 enabled).lower()
913 return self._make_request(
914 action='CreateEventSubscription',
915 verb='POST',
916 path='/', params=params)
917
918 def create_hsm_client_certificate(self,
919 hsm_client_certificate_identifier):
920 """
921 Creates an HSM client certificate that an Amazon Redshift
922 cluster will use to connect to the client's HSM in order to
923 store and retrieve the keys used to encrypt the cluster
924 databases.
925
926 The command returns a public key, which you must store in the
927 HSM. In addition to creating the HSM certificate, you must
928 create an Amazon Redshift HSM configuration that provides a
929 cluster the information needed to store and use encryption
930 keys in the HSM. For more information, go to `Hardware
931 Security Modules`_ in the Amazon Redshift Management Guide.
932
933 :type hsm_client_certificate_identifier: string
934 :param hsm_client_certificate_identifier: The identifier to be assigned
935 to the new HSM client certificate that the cluster will use to
936 connect to the HSM to use the database encryption keys.
937
938 """
939 params = {
940 'HsmClientCertificateIdentifier': hsm_client_certificate_identifier,
941 }
942 return self._make_request(
943 action='CreateHsmClientCertificate',
944 verb='POST',
945 path='/', params=params)
946
947 def create_hsm_configuration(self, hsm_configuration_identifier,
948 description, hsm_ip_address,
949 hsm_partition_name, hsm_partition_password,
950 hsm_server_public_certificate):
951 """
952 Creates an HSM configuration that contains the information
953 required by an Amazon Redshift cluster to store and use
954 database encryption keys in a Hardware Security Module (HSM).
955 After creating the HSM configuration, you can specify it as a
956 parameter when creating a cluster. The cluster will then store
957 its encryption keys in the HSM.
958
959 In addition to creating an HSM configuration, you must also
960 create an HSM client certificate. For more information, go to
961 `Hardware Security Modules`_ in the Amazon Redshift Management
962 Guide.
963
964 :type hsm_configuration_identifier: string
965 :param hsm_configuration_identifier: The identifier to be assigned to
966 the new Amazon Redshift HSM configuration.
967
968 :type description: string
969 :param description: A text description of the HSM configuration to be
970 created.
971
972 :type hsm_ip_address: string
973 :param hsm_ip_address: The IP address that the Amazon Redshift cluster
974 must use to access the HSM.
975
976 :type hsm_partition_name: string
977 :param hsm_partition_name: The name of the partition in the HSM where
978 the Amazon Redshift clusters will store their database encryption
979 keys.
980
981 :type hsm_partition_password: string
982 :param hsm_partition_password: The password required to access the HSM
983 partition.
984
985 :type hsm_server_public_certificate: string
986 :param hsm_server_public_certificate: The HSMs public certificate file.
987 When using Cloud HSM, the file name is server.pem.
988
989 """
990 params = {
991 'HsmConfigurationIdentifier': hsm_configuration_identifier,
992 'Description': description,
993 'HsmIpAddress': hsm_ip_address,
994 'HsmPartitionName': hsm_partition_name,
995 'HsmPartitionPassword': hsm_partition_password,
996 'HsmServerPublicCertificate': hsm_server_public_certificate,
997 }
998 return self._make_request(
999 action='CreateHsmConfiguration',
1000 verb='POST',
1001 path='/', params=params)
1002
1003 def delete_cluster(self, cluster_identifier,
1004 skip_final_cluster_snapshot=None,
1005 final_cluster_snapshot_identifier=None):
1006 """
1007 Deletes a previously provisioned cluster. A successful
1008 response from the web service indicates that the request was
1009 received correctly. If a final cluster snapshot is requested
1010 the status of the cluster will be "final-snapshot" while the
1011 snapshot is being taken, then it's "deleting" once Amazon
1012 Redshift begins deleting the cluster. Use DescribeClusters to
1013 monitor the status of the deletion. The delete operation
1014 cannot be canceled or reverted once submitted. For more
1015 information about managing clusters, go to `Amazon Redshift
1016 Clusters`_ in the Amazon Redshift Management Guide .
1017
1018 :type cluster_identifier: string
1019 :param cluster_identifier:
1020 The identifier of the cluster to be deleted.
1021
1022 Constraints:
1023
1024
1025 + Must contain lowercase characters.
1026 + Must contain from 1 to 63 alphanumeric characters or hyphens.
1027 + First character must be a letter.
1028 + Cannot end with a hyphen or contain two consecutive hyphens.
1029
1030 :type skip_final_cluster_snapshot: boolean
1031 :param skip_final_cluster_snapshot: Determines whether a final snapshot
1032 of the cluster is created before Amazon Redshift deletes the
1033 cluster. If `True`, a final cluster snapshot is not created. If
1034 `False`, a final cluster snapshot is created before the cluster is
1035 deleted.
1036 Default: `False`
1037
1038 :type final_cluster_snapshot_identifier: string
1039 :param final_cluster_snapshot_identifier:
1040 The identifier of the final snapshot that is to be created immediately
1041 before deleting the cluster. If this parameter is provided,
1042 SkipFinalClusterSnapshot must be `False`.
1043
1044 Constraints:
1045
1046
1047 + Must be 1 to 255 alphanumeric characters.
1048 + First character must be a letter.
1049 + Cannot end with a hyphen or contain two consecutive hyphens.
1050
1051 """
1052 params = {'ClusterIdentifier': cluster_identifier, }
1053 if skip_final_cluster_snapshot is not None:
1054 params['SkipFinalClusterSnapshot'] = str(
1055 skip_final_cluster_snapshot).lower()
1056 if final_cluster_snapshot_identifier is not None:
1057 params['FinalClusterSnapshotIdentifier'] = final_cluster_snapshot_identifier
1058 return self._make_request(
1059 action='DeleteCluster',
1060 verb='POST',
1061 path='/', params=params)
1062
1063 def delete_cluster_parameter_group(self, parameter_group_name):
1064 """
1065 Deletes a specified Amazon Redshift parameter group.
1066
1067 :type parameter_group_name: string
1068 :param parameter_group_name:
1069 The name of the parameter group to be deleted.
1070
1071 Constraints:
1072
1073
1074 + Must be the name of an existing cluster parameter group.
1075 + Cannot delete a default cluster parameter group.
1076
1077 """
1078 params = {'ParameterGroupName': parameter_group_name, }
1079 return self._make_request(
1080 action='DeleteClusterParameterGroup',
1081 verb='POST',
1082 path='/', params=params)
1083
1084 def delete_cluster_security_group(self, cluster_security_group_name):
1085 """
1086 Deletes an Amazon Redshift security group.
1087
1088 For information about managing security groups, go to `Amazon
1089 Redshift Cluster Security Groups`_ in the Amazon Redshift
1090 Management Guide .
1091
1092 :type cluster_security_group_name: string
1093 :param cluster_security_group_name: The name of the cluster security
1094 group to be deleted.
1095
1096 """
1097 params = {
1098 'ClusterSecurityGroupName': cluster_security_group_name,
1099 }
1100 return self._make_request(
1101 action='DeleteClusterSecurityGroup',
1102 verb='POST',
1103 path='/', params=params)
1104
1105 def delete_cluster_snapshot(self, snapshot_identifier,
1106 snapshot_cluster_identifier=None):
1107 """
1108 Deletes the specified manual snapshot. The snapshot must be in
1109 the `available` state, with no other users authorized to
1110 access the snapshot.
1111
1112 Unlike automated snapshots, manual snapshots are retained even
1113 after you delete your cluster. Amazon Redshift does not delete
1114 your manual snapshots. You must delete manual snapshot
1115 explicitly to avoid getting charged. If other accounts are
1116 authorized to access the snapshot, you must revoke all of the
1117 authorizations before you can delete the snapshot.
1118
1119 :type snapshot_identifier: string
1120 :param snapshot_identifier: The unique identifier of the manual
1121 snapshot to be deleted.
1122 Constraints: Must be the name of an existing snapshot that is in the
1123 `available` state.
1124
1125 :type snapshot_cluster_identifier: string
1126 :param snapshot_cluster_identifier: The unique identifier of the
1127 cluster the snapshot was created from. This parameter is required
1128 if your IAM user has a policy containing a snapshot resource
1129 element that specifies anything other than * for the cluster name.
1130 Constraints: Must be the name of valid cluster.
1131
1132 """
1133 params = {'SnapshotIdentifier': snapshot_identifier, }
1134 if snapshot_cluster_identifier is not None:
1135 params['SnapshotClusterIdentifier'] = snapshot_cluster_identifier
1136 return self._make_request(
1137 action='DeleteClusterSnapshot',
1138 verb='POST',
1139 path='/', params=params)
1140
1141 def delete_cluster_subnet_group(self, cluster_subnet_group_name):
1142 """
1143 Deletes the specified cluster subnet group.
1144
1145 :type cluster_subnet_group_name: string
1146 :param cluster_subnet_group_name: The name of the cluster subnet group
1147 name to be deleted.
1148
1149 """
1150 params = {
1151 'ClusterSubnetGroupName': cluster_subnet_group_name,
1152 }
1153 return self._make_request(
1154 action='DeleteClusterSubnetGroup',
1155 verb='POST',
1156 path='/', params=params)
1157
1158 def delete_event_subscription(self, subscription_name):
1159 """
1160 Deletes an Amazon Redshift event notification subscription.
1161
1162 :type subscription_name: string
1163 :param subscription_name: The name of the Amazon Redshift event
1164 notification subscription to be deleted.
1165
1166 """
1167 params = {'SubscriptionName': subscription_name, }
1168 return self._make_request(
1169 action='DeleteEventSubscription',
1170 verb='POST',
1171 path='/', params=params)
1172
1173 def delete_hsm_client_certificate(self,
1174 hsm_client_certificate_identifier):
1175 """
1176 Deletes the specified HSM client certificate.
1177
1178 :type hsm_client_certificate_identifier: string
1179 :param hsm_client_certificate_identifier: The identifier of the HSM
1180 client certificate to be deleted.
1181
1182 """
1183 params = {
1184 'HsmClientCertificateIdentifier': hsm_client_certificate_identifier,
1185 }
1186 return self._make_request(
1187 action='DeleteHsmClientCertificate',
1188 verb='POST',
1189 path='/', params=params)
1190
1191 def delete_hsm_configuration(self, hsm_configuration_identifier):
1192 """
1193 Deletes the specified Amazon Redshift HSM configuration.
1194
1195 :type hsm_configuration_identifier: string
1196 :param hsm_configuration_identifier: The identifier of the Amazon
1197 Redshift HSM configuration to be deleted.
1198
1199 """
1200 params = {
1201 'HsmConfigurationIdentifier': hsm_configuration_identifier,
1202 }
1203 return self._make_request(
1204 action='DeleteHsmConfiguration',
1205 verb='POST',
1206 path='/', params=params)
1207
1208 def describe_cluster_parameter_groups(self, parameter_group_name=None,
1209 max_records=None, marker=None):
1210 """
1211 Returns a list of Amazon Redshift parameter groups, including
1212 parameter groups you created and the default parameter group.
1213 For each parameter group, the response includes the parameter
1214 group name, description, and parameter group family name. You
1215 can optionally specify a name to retrieve the description of a
1216 specific parameter group.
1217
1218 For more information about managing parameter groups, go to
1219 `Amazon Redshift Parameter Groups`_ in the Amazon Redshift
1220 Management Guide .
1221
1222 :type parameter_group_name: string
1223 :param parameter_group_name: The name of a specific parameter group for
1224 which to return details. By default, details about all parameter
1225 groups and the default parameter group are returned.
1226
1227 :type max_records: integer
1228 :param max_records: The maximum number of response records to return in
1229 each call. If the number of remaining response records exceeds the
1230 specified `MaxRecords` value, a value is returned in a `marker`
1231 field of the response. You can retrieve the next set of records by
1232 retrying the command with the returned marker value.
1233 Default: `100`
1234
1235 Constraints: minimum 20, maximum 100.
1236
1237 :type marker: string
1238 :param marker: An optional parameter that specifies the starting point
1239 to return a set of response records. When the results of a
1240 DescribeClusterParameterGroups request exceed the value specified
1241 in `MaxRecords`, AWS returns a value in the `Marker` field of the
1242 response. You can retrieve the next set of response records by
1243 providing the returned marker value in the `Marker` parameter and
1244 retrying the request.
1245
1246 """
1247 params = {}
1248 if parameter_group_name is not None:
1249 params['ParameterGroupName'] = parameter_group_name
1250 if max_records is not None:
1251 params['MaxRecords'] = max_records
1252 if marker is not None:
1253 params['Marker'] = marker
1254 return self._make_request(
1255 action='DescribeClusterParameterGroups',
1256 verb='POST',
1257 path='/', params=params)
1258
1259 def describe_cluster_parameters(self, parameter_group_name, source=None,
1260 max_records=None, marker=None):
1261 """
1262 Returns a detailed list of parameters contained within the
1263 specified Amazon Redshift parameter group. For each parameter
1264 the response includes information such as parameter name,
1265 description, data type, value, whether the parameter value is
1266 modifiable, and so on.
1267
1268 You can specify source filter to retrieve parameters of only
1269 specific type. For example, to retrieve parameters that were
1270 modified by a user action such as from
1271 ModifyClusterParameterGroup, you can specify source equal to
1272 user .
1273
1274 For more information about managing parameter groups, go to
1275 `Amazon Redshift Parameter Groups`_ in the Amazon Redshift
1276 Management Guide .
1277
1278 :type parameter_group_name: string
1279 :param parameter_group_name: The name of a cluster parameter group for
1280 which to return details.
1281
1282 :type source: string
1283 :param source: The parameter types to return. Specify `user` to show
1284 parameters that are different form the default. Similarly, specify
1285 `engine-default` to show parameters that are the same as the
1286 default parameter group.
1287 Default: All parameter types returned.
1288
1289 Valid Values: `user` | `engine-default`
1290
1291 :type max_records: integer
1292 :param max_records: The maximum number of response records to return in
1293 each call. If the number of remaining response records exceeds the
1294 specified `MaxRecords` value, a value is returned in a `marker`
1295 field of the response. You can retrieve the next set of records by
1296 retrying the command with the returned marker value.
1297 Default: `100`
1298
1299 Constraints: minimum 20, maximum 100.
1300
1301 :type marker: string
1302 :param marker: An optional parameter that specifies the starting point
1303 to return a set of response records. When the results of a
1304 DescribeClusterParameters request exceed the value specified in
1305 `MaxRecords`, AWS returns a value in the `Marker` field of the
1306 response. You can retrieve the next set of response records by
1307 providing the returned marker value in the `Marker` parameter and
1308 retrying the request.
1309
1310 """
1311 params = {'ParameterGroupName': parameter_group_name, }
1312 if source is not None:
1313 params['Source'] = source
1314 if max_records is not None:
1315 params['MaxRecords'] = max_records
1316 if marker is not None:
1317 params['Marker'] = marker
1318 return self._make_request(
1319 action='DescribeClusterParameters',
1320 verb='POST',
1321 path='/', params=params)
1322
1323 def describe_cluster_security_groups(self,
1324 cluster_security_group_name=None,
1325 max_records=None, marker=None):
1326 """
1327 Returns information about Amazon Redshift security groups. If
1328 the name of a security group is specified, the response will
1329 contain only information about only that security group.
1330
1331 For information about managing security groups, go to `Amazon
1332 Redshift Cluster Security Groups`_ in the Amazon Redshift
1333 Management Guide .
1334
1335 :type cluster_security_group_name: string
1336 :param cluster_security_group_name: The name of a cluster security
1337 group for which you are requesting details. You can specify either
1338 the **Marker** parameter or a **ClusterSecurityGroupName**
1339 parameter, but not both.
1340 Example: `securitygroup1`
1341
1342 :type max_records: integer
1343 :param max_records: The maximum number of response records to return in
1344 each call. If the number of remaining response records exceeds the
1345 specified `MaxRecords` value, a value is returned in a `marker`
1346 field of the response. You can retrieve the next set of records by
1347 retrying the command with the returned marker value.
1348 Default: `100`
1349
1350 Constraints: minimum 20, maximum 100.
1351
1352 :type marker: string
1353 :param marker: An optional parameter that specifies the starting point
1354 to return a set of response records. When the results of a
1355 DescribeClusterSecurityGroups request exceed the value specified in
1356 `MaxRecords`, AWS returns a value in the `Marker` field of the
1357 response. You can retrieve the next set of response records by
1358 providing the returned marker value in the `Marker` parameter and
1359 retrying the request.
1360 Constraints: You can specify either the **ClusterSecurityGroupName**
1361 parameter or the **Marker** parameter, but not both.
1362
1363 """
1364 params = {}
1365 if cluster_security_group_name is not None:
1366 params['ClusterSecurityGroupName'] = cluster_security_group_name
1367 if max_records is not None:
1368 params['MaxRecords'] = max_records
1369 if marker is not None:
1370 params['Marker'] = marker
1371 return self._make_request(
1372 action='DescribeClusterSecurityGroups',
1373 verb='POST',
1374 path='/', params=params)
1375
1376 def describe_cluster_snapshots(self, cluster_identifier=None,
1377 snapshot_identifier=None,
1378 snapshot_type=None, start_time=None,
1379 end_time=None, max_records=None,
1380 marker=None, owner_account=None):
1381 """
1382 Returns one or more snapshot objects, which contain metadata
1383 about your cluster snapshots. By default, this operation
1384 returns information about all snapshots of all clusters that
1385 are owned by you AWS customer account. No information is
1386 returned for snapshots owned by inactive AWS customer
1387 accounts.
1388
1389 :type cluster_identifier: string
1390 :param cluster_identifier: The identifier of the cluster for which
1391 information about snapshots is requested.
1392
1393 :type snapshot_identifier: string
1394 :param snapshot_identifier: The snapshot identifier of the snapshot
1395 about which to return information.
1396
1397 :type snapshot_type: string
1398 :param snapshot_type: The type of snapshots for which you are
1399 requesting information. By default, snapshots of all types are
1400 returned.
1401 Valid Values: `automated` | `manual`
1402
1403 :type start_time: timestamp
1404 :param start_time: A value that requests only snapshots created at or
1405 after the specified time. The time value is specified in ISO 8601
1406 format. For more information about ISO 8601, go to the `ISO8601
1407 Wikipedia page.`_
1408 Example: `2012-07-16T18:00:00Z`
1409
1410 :type end_time: timestamp
1411 :param end_time: A time value that requests only snapshots created at
1412 or before the specified time. The time value is specified in ISO
1413 8601 format. For more information about ISO 8601, go to the
1414 `ISO8601 Wikipedia page.`_
1415 Example: `2012-07-16T18:00:00Z`
1416
1417 :type max_records: integer
1418 :param max_records: The maximum number of response records to return in
1419 each call. If the number of remaining response records exceeds the
1420 specified `MaxRecords` value, a value is returned in a `marker`
1421 field of the response. You can retrieve the next set of records by
1422 retrying the command with the returned marker value.
1423 Default: `100`
1424
1425 Constraints: minimum 20, maximum 100.
1426
1427 :type marker: string
1428 :param marker: An optional parameter that specifies the starting point
1429 to return a set of response records. When the results of a
1430 DescribeClusterSnapshots request exceed the value specified in
1431 `MaxRecords`, AWS returns a value in the `Marker` field of the
1432 response. You can retrieve the next set of response records by
1433 providing the returned marker value in the `Marker` parameter and
1434 retrying the request.
1435
1436 :type owner_account: string
1437 :param owner_account: The AWS customer account used to create or copy
1438 the snapshot. Use this field to filter the results to snapshots
1439 owned by a particular account. To describe snapshots you own,
1440 either specify your AWS customer account, or do not specify the
1441 parameter.
1442
1443 """
1444 params = {}
1445 if cluster_identifier is not None:
1446 params['ClusterIdentifier'] = cluster_identifier
1447 if snapshot_identifier is not None:
1448 params['SnapshotIdentifier'] = snapshot_identifier
1449 if snapshot_type is not None:
1450 params['SnapshotType'] = snapshot_type
1451 if start_time is not None:
1452 params['StartTime'] = start_time
1453 if end_time is not None:
1454 params['EndTime'] = end_time
1455 if max_records is not None:
1456 params['MaxRecords'] = max_records
1457 if marker is not None:
1458 params['Marker'] = marker
1459 if owner_account is not None:
1460 params['OwnerAccount'] = owner_account
1461 return self._make_request(
1462 action='DescribeClusterSnapshots',
1463 verb='POST',
1464 path='/', params=params)
1465
1466 def describe_cluster_subnet_groups(self, cluster_subnet_group_name=None,
1467 max_records=None, marker=None):
1468 """
1469 Returns one or more cluster subnet group objects, which
1470 contain metadata about your cluster subnet groups. By default,
1471 this operation returns information about all cluster subnet
1472 groups that are defined in you AWS account.
1473
1474 :type cluster_subnet_group_name: string
1475 :param cluster_subnet_group_name: The name of the cluster subnet group
1476 for which information is requested.
1477
1478 :type max_records: integer
1479 :param max_records: The maximum number of response records to return in
1480 each call. If the number of remaining response records exceeds the
1481 specified `MaxRecords` value, a value is returned in a `marker`
1482 field of the response. You can retrieve the next set of records by
1483 retrying the command with the returned marker value.
1484 Default: `100`
1485
1486 Constraints: minimum 20, maximum 100.
1487
1488 :type marker: string
1489 :param marker: An optional parameter that specifies the starting point
1490 to return a set of response records. When the results of a
1491 DescribeClusterSubnetGroups request exceed the value specified in
1492 `MaxRecords`, AWS returns a value in the `Marker` field of the
1493 response. You can retrieve the next set of response records by
1494 providing the returned marker value in the `Marker` parameter and
1495 retrying the request.
1496
1497 """
1498 params = {}
1499 if cluster_subnet_group_name is not None:
1500 params['ClusterSubnetGroupName'] = cluster_subnet_group_name
1501 if max_records is not None:
1502 params['MaxRecords'] = max_records
1503 if marker is not None:
1504 params['Marker'] = marker
1505 return self._make_request(
1506 action='DescribeClusterSubnetGroups',
1507 verb='POST',
1508 path='/', params=params)
1509
1510 def describe_cluster_versions(self, cluster_version=None,
1511 cluster_parameter_group_family=None,
1512 max_records=None, marker=None):
1513 """
1514 Returns descriptions of the available Amazon Redshift cluster
1515 versions. You can call this operation even before creating any
1516 clusters to learn more about the Amazon Redshift versions. For
1517 more information about managing clusters, go to `Amazon
1518 Redshift Clusters`_ in the Amazon Redshift Management Guide
1519
1520 :type cluster_version: string
1521 :param cluster_version: The specific cluster version to return.
1522 Example: `1.0`
1523
1524 :type cluster_parameter_group_family: string
1525 :param cluster_parameter_group_family:
1526 The name of a specific cluster parameter group family to return details
1527 for.
1528
1529 Constraints:
1530
1531
1532 + Must be 1 to 255 alphanumeric characters
1533 + First character must be a letter
1534 + Cannot end with a hyphen or contain two consecutive hyphens
1535
1536 :type max_records: integer
1537 :param max_records: The maximum number of response records to return in
1538 each call. If the number of remaining response records exceeds the
1539 specified `MaxRecords` value, a value is returned in a `marker`
1540 field of the response. You can retrieve the next set of records by
1541 retrying the command with the returned marker value.
1542 Default: `100`
1543
1544 Constraints: minimum 20, maximum 100.
1545
1546 :type marker: string
1547 :param marker: An optional parameter that specifies the starting point
1548 to return a set of response records. When the results of a
1549 DescribeClusterVersions request exceed the value specified in
1550 `MaxRecords`, AWS returns a value in the `Marker` field of the
1551 response. You can retrieve the next set of response records by
1552 providing the returned marker value in the `Marker` parameter and
1553 retrying the request.
1554
1555 """
1556 params = {}
1557 if cluster_version is not None:
1558 params['ClusterVersion'] = cluster_version
1559 if cluster_parameter_group_family is not None:
1560 params['ClusterParameterGroupFamily'] = cluster_parameter_group_family
1561 if max_records is not None:
1562 params['MaxRecords'] = max_records
1563 if marker is not None:
1564 params['Marker'] = marker
1565 return self._make_request(
1566 action='DescribeClusterVersions',
1567 verb='POST',
1568 path='/', params=params)
1569
1570 def describe_clusters(self, cluster_identifier=None, max_records=None,
1571 marker=None):
1572 """
1573 Returns properties of provisioned clusters including general
1574 cluster properties, cluster database properties, maintenance
1575 and backup properties, and security and access properties.
1576 This operation supports pagination. For more information about
1577 managing clusters, go to `Amazon Redshift Clusters`_ in the
1578 Amazon Redshift Management Guide .
1579
1580 :type cluster_identifier: string
1581 :param cluster_identifier: The unique identifier of a cluster whose
1582 properties you are requesting. This parameter is case sensitive.
1583 The default is that all clusters defined for an account are returned.
1584
1585 :type max_records: integer
1586 :param max_records: The maximum number of response records to return in
1587 each call. If the number of remaining response records exceeds the
1588 specified `MaxRecords` value, a value is returned in a `marker`
1589 field of the response. You can retrieve the next set of records by
1590 retrying the command with the returned marker value.
1591 Default: `100`
1592
1593 Constraints: minimum 20, maximum 100.
1594
1595 :type marker: string
1596 :param marker: An optional parameter that specifies the starting point
1597 to return a set of response records. When the results of a
1598 DescribeClusters request exceed the value specified in
1599 `MaxRecords`, AWS returns a value in the `Marker` field of the
1600 response. You can retrieve the next set of response records by
1601 providing the returned marker value in the `Marker` parameter and
1602 retrying the request.
1603 Constraints: You can specify either the **ClusterIdentifier** parameter
1604 or the **Marker** parameter, but not both.
1605
1606 """
1607 params = {}
1608 if cluster_identifier is not None:
1609 params['ClusterIdentifier'] = cluster_identifier
1610 if max_records is not None:
1611 params['MaxRecords'] = max_records
1612 if marker is not None:
1613 params['Marker'] = marker
1614 return self._make_request(
1615 action='DescribeClusters',
1616 verb='POST',
1617 path='/', params=params)
1618
1619 def describe_default_cluster_parameters(self, parameter_group_family,
1620 max_records=None, marker=None):
1621 """
1622 Returns a list of parameter settings for the specified
1623 parameter group family.
1624
1625 For more information about managing parameter groups, go to
1626 `Amazon Redshift Parameter Groups`_ in the Amazon Redshift
1627 Management Guide .
1628
1629 :type parameter_group_family: string
1630 :param parameter_group_family: The name of the cluster parameter group
1631 family.
1632
1633 :type max_records: integer
1634 :param max_records: The maximum number of response records to return in
1635 each call. If the number of remaining response records exceeds the
1636 specified `MaxRecords` value, a value is returned in a `marker`
1637 field of the response. You can retrieve the next set of records by
1638 retrying the command with the returned marker value.
1639 Default: `100`
1640
1641 Constraints: minimum 20, maximum 100.
1642
1643 :type marker: string
1644 :param marker: An optional parameter that specifies the starting point
1645 to return a set of response records. When the results of a
1646 DescribeDefaultClusterParameters request exceed the value specified
1647 in `MaxRecords`, AWS returns a value in the `Marker` field of the
1648 response. You can retrieve the next set of response records by
1649 providing the returned marker value in the `Marker` parameter and
1650 retrying the request.
1651
1652 """
1653 params = {'ParameterGroupFamily': parameter_group_family, }
1654 if max_records is not None:
1655 params['MaxRecords'] = max_records
1656 if marker is not None:
1657 params['Marker'] = marker
1658 return self._make_request(
1659 action='DescribeDefaultClusterParameters',
1660 verb='POST',
1661 path='/', params=params)
1662
1663 def describe_event_categories(self, source_type=None):
1664 """
1665 Displays a list of event categories for all event source
1666 types, or for a specified source type. For a list of the event
1667 categories and source types, go to `Amazon Redshift Event
1668 Notifications`_.
1669
1670 :type source_type: string
1671 :param source_type: The source type, such as cluster or parameter
1672 group, to which the described event categories apply.
1673 Valid values: cluster, snapshot, parameter group, and security group.
1674
1675 """
1676 params = {}
1677 if source_type is not None:
1678 params['SourceType'] = source_type
1679 return self._make_request(
1680 action='DescribeEventCategories',
1681 verb='POST',
1682 path='/', params=params)
1683
1684 def describe_event_subscriptions(self, subscription_name=None,
1685 max_records=None, marker=None):
1686 """
1687 Lists descriptions of all the Amazon Redshift event
1688 notifications subscription for a customer account. If you
1689 specify a subscription name, lists the description for that
1690 subscription.
1691
1692 :type subscription_name: string
1693 :param subscription_name: The name of the Amazon Redshift event
1694 notification subscription to be described.
1695
1696 :type max_records: integer
1697 :param max_records: The maximum number of response records to return in
1698 each call. If the number of remaining response records exceeds the
1699 specified `MaxRecords` value, a value is returned in a `marker`
1700 field of the response. You can retrieve the next set of records by
1701 retrying the command with the returned marker value.
1702 Default: `100`
1703
1704 Constraints: minimum 20, maximum 100.
1705
1706 :type marker: string
1707 :param marker: An optional parameter that specifies the starting point
1708 to return a set of response records. When the results of a
1709 DescribeEventSubscriptions request exceed the value specified in
1710 `MaxRecords`, AWS returns a value in the `Marker` field of the
1711 response. You can retrieve the next set of response records by
1712 providing the returned marker value in the `Marker` parameter and
1713 retrying the request.
1714
1715 """
1716 params = {}
1717 if subscription_name is not None:
1718 params['SubscriptionName'] = subscription_name
1719 if max_records is not None:
1720 params['MaxRecords'] = max_records
1721 if marker is not None:
1722 params['Marker'] = marker
1723 return self._make_request(
1724 action='DescribeEventSubscriptions',
1725 verb='POST',
1726 path='/', params=params)
1727
1728 def describe_events(self, source_identifier=None, source_type=None,
1729 start_time=None, end_time=None, duration=None,
1730 max_records=None, marker=None):
1731 """
1732 Returns events related to clusters, security groups,
1733 snapshots, and parameter groups for the past 14 days. Events
1734 specific to a particular cluster, security group, snapshot or
1735 parameter group can be obtained by providing the name as a
1736 parameter. By default, the past hour of events are returned.
1737
1738 :type source_identifier: string
1739 :param source_identifier:
1740 The identifier of the event source for which events will be returned.
1741 If this parameter is not specified, then all sources are included
1742 in the response.
1743
1744 Constraints:
1745
1746 If SourceIdentifier is supplied, SourceType must also be provided.
1747
1748
1749 + Specify a cluster identifier when SourceType is `cluster`.
1750 + Specify a cluster security group name when SourceType is `cluster-
1751 security-group`.
1752 + Specify a cluster parameter group name when SourceType is `cluster-
1753 parameter-group`.
1754 + Specify a cluster snapshot identifier when SourceType is `cluster-
1755 snapshot`.
1756
1757 :type source_type: string
1758 :param source_type:
1759 The event source to retrieve events for. If no value is specified, all
1760 events are returned.
1761
1762 Constraints:
1763
1764 If SourceType is supplied, SourceIdentifier must also be provided.
1765
1766
1767 + Specify `cluster` when SourceIdentifier is a cluster identifier.
1768 + Specify `cluster-security-group` when SourceIdentifier is a cluster
1769 security group name.
1770 + Specify `cluster-parameter-group` when SourceIdentifier is a cluster
1771 parameter group name.
1772 + Specify `cluster-snapshot` when SourceIdentifier is a cluster
1773 snapshot identifier.
1774
1775 :type start_time: timestamp
1776 :param start_time: The beginning of the time interval to retrieve
1777 events for, specified in ISO 8601 format. For more information
1778 about ISO 8601, go to the `ISO8601 Wikipedia page.`_
1779 Example: `2009-07-08T18:00Z`
1780
1781 :type end_time: timestamp
1782 :param end_time: The end of the time interval for which to retrieve
1783 events, specified in ISO 8601 format. For more information about
1784 ISO 8601, go to the `ISO8601 Wikipedia page.`_
1785 Example: `2009-07-08T18:00Z`
1786
1787 :type duration: integer
1788 :param duration: The number of minutes prior to the time of the request
1789 for which to retrieve events. For example, if the request is sent
1790 at 18:00 and you specify a duration of 60, then only events which
1791 have occurred after 17:00 will be returned.
1792 Default: `60`
1793
1794 :type max_records: integer
1795 :param max_records: The maximum number of response records to return in
1796 each call. If the number of remaining response records exceeds the
1797 specified `MaxRecords` value, a value is returned in a `marker`
1798 field of the response. You can retrieve the next set of records by
1799 retrying the command with the returned marker value.
1800 Default: `100`
1801
1802 Constraints: minimum 20, maximum 100.
1803
1804 :type marker: string
1805 :param marker: An optional parameter that specifies the starting point
1806 to return a set of response records. When the results of a
1807 DescribeEvents request exceed the value specified in `MaxRecords`,
1808 AWS returns a value in the `Marker` field of the response. You can
1809 retrieve the next set of response records by providing the returned
1810 marker value in the `Marker` parameter and retrying the request.
1811
1812 """
1813 params = {}
1814 if source_identifier is not None:
1815 params['SourceIdentifier'] = source_identifier
1816 if source_type is not None:
1817 params['SourceType'] = source_type
1818 if start_time is not None:
1819 params['StartTime'] = start_time
1820 if end_time is not None:
1821 params['EndTime'] = end_time
1822 if duration is not None:
1823 params['Duration'] = duration
1824 if max_records is not None:
1825 params['MaxRecords'] = max_records
1826 if marker is not None:
1827 params['Marker'] = marker
1828 return self._make_request(
1829 action='DescribeEvents',
1830 verb='POST',
1831 path='/', params=params)
1832
1833 def describe_hsm_client_certificates(self,
1834 hsm_client_certificate_identifier=None,
1835 max_records=None, marker=None):
1836 """
1837 Returns information about the specified HSM client
1838 certificate. If no certificate ID is specified, returns
1839 information about all the HSM certificates owned by your AWS
1840 customer account.
1841
1842 :type hsm_client_certificate_identifier: string
1843 :param hsm_client_certificate_identifier: The identifier of a specific
1844 HSM client certificate for which you want information. If no
1845 identifier is specified, information is returned for all HSM client
1846 certificates owned by your AWS customer account.
1847
1848 :type max_records: integer
1849 :param max_records: The maximum number of response records to return in
1850 each call. If the number of remaining response records exceeds the
1851 specified `MaxRecords` value, a value is returned in a `marker`
1852 field of the response. You can retrieve the next set of records by
1853 retrying the command with the returned marker value.
1854 Default: `100`
1855
1856 Constraints: minimum 20, maximum 100.
1857
1858 :type marker: string
1859 :param marker: An optional parameter that specifies the starting point
1860 to return a set of response records. When the results of a
1861 DescribeHsmClientCertificates request exceed the value specified in
1862 `MaxRecords`, AWS returns a value in the `Marker` field of the
1863 response. You can retrieve the next set of response records by
1864 providing the returned marker value in the `Marker` parameter and
1865 retrying the request.
1866
1867 """
1868 params = {}
1869 if hsm_client_certificate_identifier is not None:
1870 params['HsmClientCertificateIdentifier'] = hsm_client_certificate_identifier
1871 if max_records is not None:
1872 params['MaxRecords'] = max_records
1873 if marker is not None:
1874 params['Marker'] = marker
1875 return self._make_request(
1876 action='DescribeHsmClientCertificates',
1877 verb='POST',
1878 path='/', params=params)
1879
1880 def describe_hsm_configurations(self, hsm_configuration_identifier=None,
1881 max_records=None, marker=None):
1882 """
1883 Returns information about the specified Amazon Redshift HSM
1884 configuration. If no configuration ID is specified, returns
1885 information about all the HSM configurations owned by your AWS
1886 customer account.
1887
1888 :type hsm_configuration_identifier: string
1889 :param hsm_configuration_identifier: The identifier of a specific
1890 Amazon Redshift HSM configuration to be described. If no identifier
1891 is specified, information is returned for all HSM configurations
1892 owned by your AWS customer account.
1893
1894 :type max_records: integer
1895 :param max_records: The maximum number of response records to return in
1896 each call. If the number of remaining response records exceeds the
1897 specified `MaxRecords` value, a value is returned in a `marker`
1898 field of the response. You can retrieve the next set of records by
1899 retrying the command with the returned marker value.
1900 Default: `100`
1901
1902 Constraints: minimum 20, maximum 100.
1903
1904 :type marker: string
1905 :param marker: An optional parameter that specifies the starting point
1906 to return a set of response records. When the results of a
1907 DescribeHsmConfigurations request exceed the value specified in
1908 `MaxRecords`, AWS returns a value in the `Marker` field of the
1909 response. You can retrieve the next set of response records by
1910 providing the returned marker value in the `Marker` parameter and
1911 retrying the request.
1912
1913 """
1914 params = {}
1915 if hsm_configuration_identifier is not None:
1916 params['HsmConfigurationIdentifier'] = hsm_configuration_identifier
1917 if max_records is not None:
1918 params['MaxRecords'] = max_records
1919 if marker is not None:
1920 params['Marker'] = marker
1921 return self._make_request(
1922 action='DescribeHsmConfigurations',
1923 verb='POST',
1924 path='/', params=params)
1925
1926 def describe_logging_status(self, cluster_identifier):
1927 """
1928 Describes whether information, such as queries and connection
1929 attempts, is being logged for the specified Amazon Redshift
1930 cluster.
1931
1932 :type cluster_identifier: string
1933 :param cluster_identifier: The identifier of the cluster to get the
1934 logging status from.
1935 Example: `examplecluster`
1936
1937 """
1938 params = {'ClusterIdentifier': cluster_identifier, }
1939 return self._make_request(
1940 action='DescribeLoggingStatus',
1941 verb='POST',
1942 path='/', params=params)
1943
1944 def describe_orderable_cluster_options(self, cluster_version=None,
1945 node_type=None, max_records=None,
1946 marker=None):
1947 """
1948 Returns a list of orderable cluster options. Before you create
1949 a new cluster you can use this operation to find what options
1950 are available, such as the EC2 Availability Zones (AZ) in the
1951 specific AWS region that you can specify, and the node types
1952 you can request. The node types differ by available storage,
1953 memory, CPU and price. With the cost involved you might want
1954 to obtain a list of cluster options in the specific region and
1955 specify values when creating a cluster. For more information
1956 about managing clusters, go to `Amazon Redshift Clusters`_ in
1957 the Amazon Redshift Management Guide
1958
1959 :type cluster_version: string
1960 :param cluster_version: The version filter value. Specify this
1961 parameter to show only the available offerings matching the
1962 specified version.
1963 Default: All versions.
1964
1965 Constraints: Must be one of the version returned from
1966 DescribeClusterVersions.
1967
1968 :type node_type: string
1969 :param node_type: The node type filter value. Specify this parameter to
1970 show only the available offerings matching the specified node type.
1971
1972 :type max_records: integer
1973 :param max_records: The maximum number of response records to return in
1974 each call. If the number of remaining response records exceeds the
1975 specified `MaxRecords` value, a value is returned in a `marker`
1976 field of the response. You can retrieve the next set of records by
1977 retrying the command with the returned marker value.
1978 Default: `100`
1979
1980 Constraints: minimum 20, maximum 100.
1981
1982 :type marker: string
1983 :param marker: An optional parameter that specifies the starting point
1984 to return a set of response records. When the results of a
1985 DescribeOrderableClusterOptions request exceed the value specified
1986 in `MaxRecords`, AWS returns a value in the `Marker` field of the
1987 response. You can retrieve the next set of response records by
1988 providing the returned marker value in the `Marker` parameter and
1989 retrying the request.
1990
1991 """
1992 params = {}
1993 if cluster_version is not None:
1994 params['ClusterVersion'] = cluster_version
1995 if node_type is not None:
1996 params['NodeType'] = node_type
1997 if max_records is not None:
1998 params['MaxRecords'] = max_records
1999 if marker is not None:
2000 params['Marker'] = marker
2001 return self._make_request(
2002 action='DescribeOrderableClusterOptions',
2003 verb='POST',
2004 path='/', params=params)
2005
2006 def describe_reserved_node_offerings(self,
2007 reserved_node_offering_id=None,
2008 max_records=None, marker=None):
2009 """
2010 Returns a list of the available reserved node offerings by
2011 Amazon Redshift with their descriptions including the node
2012 type, the fixed and recurring costs of reserving the node and
2013 duration the node will be reserved for you. These descriptions
2014 help you determine which reserve node offering you want to
2015 purchase. You then use the unique offering ID in you call to
2016 PurchaseReservedNodeOffering to reserve one or more nodes for
2017 your Amazon Redshift cluster.
2018
2019 For more information about managing parameter groups, go to
2020 `Purchasing Reserved Nodes`_ in the Amazon Redshift Management
2021 Guide .
2022
2023 :type reserved_node_offering_id: string
2024 :param reserved_node_offering_id: The unique identifier for the
2025 offering.
2026
2027 :type max_records: integer
2028 :param max_records: The maximum number of response records to return in
2029 each call. If the number of remaining response records exceeds the
2030 specified `MaxRecords` value, a value is returned in a `marker`
2031 field of the response. You can retrieve the next set of records by
2032 retrying the command with the returned marker value.
2033 Default: `100`
2034
2035 Constraints: minimum 20, maximum 100.
2036
2037 :type marker: string
2038 :param marker: An optional parameter that specifies the starting point
2039 to return a set of response records. When the results of a
2040 DescribeReservedNodeOfferings request exceed the value specified in
2041 `MaxRecords`, AWS returns a value in the `Marker` field of the
2042 response. You can retrieve the next set of response records by
2043 providing the returned marker value in the `Marker` parameter and
2044 retrying the request.
2045
2046 """
2047 params = {}
2048 if reserved_node_offering_id is not None:
2049 params['ReservedNodeOfferingId'] = reserved_node_offering_id
2050 if max_records is not None:
2051 params['MaxRecords'] = max_records
2052 if marker is not None:
2053 params['Marker'] = marker
2054 return self._make_request(
2055 action='DescribeReservedNodeOfferings',
2056 verb='POST',
2057 path='/', params=params)
2058
2059 def describe_reserved_nodes(self, reserved_node_id=None,
2060 max_records=None, marker=None):
2061 """
2062 Returns the descriptions of the reserved nodes.
2063
2064 :type reserved_node_id: string
2065 :param reserved_node_id: Identifier for the node reservation.
2066
2067 :type max_records: integer
2068 :param max_records: The maximum number of response records to return in
2069 each call. If the number of remaining response records exceeds the
2070 specified `MaxRecords` value, a value is returned in a `marker`
2071 field of the response. You can retrieve the next set of records by
2072 retrying the command with the returned marker value.
2073 Default: `100`
2074
2075 Constraints: minimum 20, maximum 100.
2076
2077 :type marker: string
2078 :param marker: An optional parameter that specifies the starting point
2079 to return a set of response records. When the results of a
2080 DescribeReservedNodes request exceed the value specified in
2081 `MaxRecords`, AWS returns a value in the `Marker` field of the
2082 response. You can retrieve the next set of response records by
2083 providing the returned marker value in the `Marker` parameter and
2084 retrying the request.
2085
2086 """
2087 params = {}
2088 if reserved_node_id is not None:
2089 params['ReservedNodeId'] = reserved_node_id
2090 if max_records is not None:
2091 params['MaxRecords'] = max_records
2092 if marker is not None:
2093 params['Marker'] = marker
2094 return self._make_request(
2095 action='DescribeReservedNodes',
2096 verb='POST',
2097 path='/', params=params)
2098
2099 def describe_resize(self, cluster_identifier):
2100 """
2101 Returns information about the last resize operation for the
2102 specified cluster. If no resize operation has ever been
2103 initiated for the specified cluster, a `HTTP 404` error is
2104 returned. If a resize operation was initiated and completed,
2105 the status of the resize remains as `SUCCEEDED` until the next
2106 resize.
2107
2108 A resize operation can be requested using ModifyCluster and
2109 specifying a different number or type of nodes for the
2110 cluster.
2111
2112 :type cluster_identifier: string
2113 :param cluster_identifier: The unique identifier of a cluster whose
2114 resize progress you are requesting. This parameter isn't case-
2115 sensitive.
2116 By default, resize operations for all clusters defined for an AWS
2117 account are returned.
2118
2119 """
2120 params = {'ClusterIdentifier': cluster_identifier, }
2121 return self._make_request(
2122 action='DescribeResize',
2123 verb='POST',
2124 path='/', params=params)
2125
2126 def disable_logging(self, cluster_identifier):
2127 """
2128 Stops logging information, such as queries and connection
2129 attempts, for the specified Amazon Redshift cluster.
2130
2131 :type cluster_identifier: string
2132 :param cluster_identifier: The identifier of the cluster on which
2133 logging is to be stopped.
2134 Example: `examplecluster`
2135
2136 """
2137 params = {'ClusterIdentifier': cluster_identifier, }
2138 return self._make_request(
2139 action='DisableLogging',
2140 verb='POST',
2141 path='/', params=params)
2142
2143 def disable_snapshot_copy(self, cluster_identifier):
2144 """
2145 Disables the automatic copying of snapshots from one region to
2146 another region for a specified cluster.
2147
2148 :type cluster_identifier: string
2149 :param cluster_identifier: The unique identifier of the source cluster
2150 that you want to disable copying of snapshots to a destination
2151 region.
2152 Constraints: Must be the valid name of an existing cluster that has
2153 cross-region snapshot copy enabled.
2154
2155 """
2156 params = {'ClusterIdentifier': cluster_identifier, }
2157 return self._make_request(
2158 action='DisableSnapshotCopy',
2159 verb='POST',
2160 path='/', params=params)
2161
2162 def enable_logging(self, cluster_identifier, bucket_name,
2163 s3_key_prefix=None):
2164 """
2165 Starts logging information, such as queries and connection
2166 attempts, for the specified Amazon Redshift cluster.
2167
2168 :type cluster_identifier: string
2169 :param cluster_identifier: The identifier of the cluster on which
2170 logging is to be started.
2171 Example: `examplecluster`
2172
2173 :type bucket_name: string
2174 :param bucket_name:
2175 The name of an existing S3 bucket where the log files are to be stored.
2176
2177 Constraints:
2178
2179
2180 + Must be in the same region as the cluster
2181 + The cluster must have read bucket and put object permissions
2182
2183 :type s3_key_prefix: string
2184 :param s3_key_prefix:
2185 The prefix applied to the log file names.
2186
2187 Constraints:
2188
2189
2190 + Cannot exceed 512 characters
2191 + Cannot contain spaces( ), double quotes ("), single quotes ('), a
2192 backslash (\), or control characters. The hexadecimal codes for
2193 invalid characters are:
2194
2195 + x00 to x20
2196 + x22
2197 + x27
2198 + x5c
2199 + x7f or larger
2200
2201 """
2202 params = {
2203 'ClusterIdentifier': cluster_identifier,
2204 'BucketName': bucket_name,
2205 }
2206 if s3_key_prefix is not None:
2207 params['S3KeyPrefix'] = s3_key_prefix
2208 return self._make_request(
2209 action='EnableLogging',
2210 verb='POST',
2211 path='/', params=params)
2212
2213 def enable_snapshot_copy(self, cluster_identifier, destination_region,
2214 retention_period=None):
2215 """
2216 Enables the automatic copy of snapshots from one region to
2217 another region for a specified cluster.
2218
2219 :type cluster_identifier: string
2220 :param cluster_identifier: The unique identifier of the source cluster
2221 to copy snapshots from.
2222 Constraints: Must be the valid name of an existing cluster that does
2223 not already have cross-region snapshot copy enabled.
2224
2225 :type destination_region: string
2226 :param destination_region: The destination region that you want to copy
2227 snapshots to.
2228 Constraints: Must be the name of a valid region. For more information,
2229 see `Regions and Endpoints`_ in the Amazon Web Services General
2230 Reference.
2231
2232 :type retention_period: integer
2233 :param retention_period: The number of days to retain automated
2234 snapshots in the destination region after they are copied from the
2235 source region.
2236 Default: 7.
2237
2238 Constraints: Must be at least 1 and no more than 35.
2239
2240 """
2241 params = {
2242 'ClusterIdentifier': cluster_identifier,
2243 'DestinationRegion': destination_region,
2244 }
2245 if retention_period is not None:
2246 params['RetentionPeriod'] = retention_period
2247 return self._make_request(
2248 action='EnableSnapshotCopy',
2249 verb='POST',
2250 path='/', params=params)
2251
2252 def modify_cluster(self, cluster_identifier, cluster_type=None,
2253 node_type=None, number_of_nodes=None,
2254 cluster_security_groups=None,
2255 vpc_security_group_ids=None,
2256 master_user_password=None,
2257 cluster_parameter_group_name=None,
2258 automated_snapshot_retention_period=None,
2259 preferred_maintenance_window=None,
2260 cluster_version=None, allow_version_upgrade=None,
2261 hsm_client_certificate_identifier=None,
2262 hsm_configuration_identifier=None,
2263 new_cluster_identifier=None):
2264 """
2265 Modifies the settings for a cluster. For example, you can add
2266 another security or parameter group, update the preferred
2267 maintenance window, or change the master user password.
2268 Resetting a cluster password or modifying the security groups
2269 associated with a cluster do not need a reboot. However,
2270 modifying a parameter group requires a reboot for parameters
2271 to take effect. For more information about managing clusters,
2272 go to `Amazon Redshift Clusters`_ in the Amazon Redshift
2273 Management Guide
2274
2275 You can also change node type and the number of nodes to scale
2276 up or down the cluster. When resizing a cluster, you must
2277 specify both the number of nodes and the node type even if one
2278 of the parameters does not change. If you specify the same
2279 number of nodes and node type that are already configured for
2280 the cluster, an error is returned.
2281
2282 :type cluster_identifier: string
2283 :param cluster_identifier: The unique identifier of the cluster to be
2284 modified.
2285 Example: `examplecluster`
2286
2287 :type cluster_type: string
2288 :param cluster_type: The new cluster type.
2289 When you submit your cluster resize request, your existing cluster goes
2290 into a read-only mode. After Amazon Redshift provisions a new
2291 cluster based on your resize requirements, there will be outage for
2292 a period while the old cluster is deleted and your connection is
2293 switched to the new cluster. You can use DescribeResize to track
2294 the progress of the resize request.
2295
2296 Valid Values: ` multi-node | single-node `
2297
2298 :type node_type: string
2299 :param node_type: The new node type of the cluster. If you specify a
2300 new node type, you must also specify the number of nodes parameter
2301 also.
2302 When you submit your request to resize a cluster, Amazon Redshift sets
2303 access permissions for the cluster to read-only. After Amazon
2304 Redshift provisions a new cluster according to your resize
2305 requirements, there will be a temporary outage while the old
2306 cluster is deleted and your connection is switched to the new
2307 cluster. When the new connection is complete, the original access
2308 permissions for the cluster are restored. You can use the
2309 DescribeResize to track the progress of the resize request.
2310
2311 Valid Values: ` dw1.xlarge` | `dw1.8xlarge` | `dw2.large` |
2312 `dw2.8xlarge`.
2313
2314 :type number_of_nodes: integer
2315 :param number_of_nodes: The new number of nodes of the cluster. If you
2316 specify a new number of nodes, you must also specify the node type
2317 parameter also.
2318 When you submit your request to resize a cluster, Amazon Redshift sets
2319 access permissions for the cluster to read-only. After Amazon
2320 Redshift provisions a new cluster according to your resize
2321 requirements, there will be a temporary outage while the old
2322 cluster is deleted and your connection is switched to the new
2323 cluster. When the new connection is complete, the original access
2324 permissions for the cluster are restored. You can use
2325 DescribeResize to track the progress of the resize request.
2326
2327 Valid Values: Integer greater than `0`.
2328
2329 :type cluster_security_groups: list
2330 :param cluster_security_groups:
2331 A list of cluster security groups to be authorized on this cluster.
2332 This change is asynchronously applied as soon as possible.
2333
2334 Security groups currently associated with the cluster, and not in the
2335 list of groups to apply, will be revoked from the cluster.
2336
2337 Constraints:
2338
2339
2340 + Must be 1 to 255 alphanumeric characters or hyphens
2341 + First character must be a letter
2342 + Cannot end with a hyphen or contain two consecutive hyphens
2343
2344 :type vpc_security_group_ids: list
2345 :param vpc_security_group_ids: A list of virtual private cloud (VPC)
2346 security groups to be associated with the cluster.
2347
2348 :type master_user_password: string
2349 :param master_user_password:
2350 The new password for the cluster master user. This change is
2351 asynchronously applied as soon as possible. Between the time of the
2352 request and the completion of the request, the `MasterUserPassword`
2353 element exists in the `PendingModifiedValues` element of the
2354 operation response.
2355
2356 Default: Uses existing setting.
2357
2358 Constraints:
2359
2360
2361 + Must be between 8 and 64 characters in length.
2362 + Must contain at least one uppercase letter.
2363 + Must contain at least one lowercase letter.
2364 + Must contain one number.
2365 + Can be any printable ASCII character (ASCII code 33 to 126) except '
2366 (single quote), " (double quote), \, /, @, or space.
2367
2368 :type cluster_parameter_group_name: string
2369 :param cluster_parameter_group_name: The name of the cluster parameter
2370 group to apply to this cluster. This change is applied only after
2371 the cluster is rebooted. To reboot a cluster use RebootCluster.
2372 Default: Uses existing setting.
2373
2374 Constraints: The cluster parameter group must be in the same parameter
2375 group family that matches the cluster version.
2376
2377 :type automated_snapshot_retention_period: integer
2378 :param automated_snapshot_retention_period: The number of days that
2379 automated snapshots are retained. If the value is 0, automated
2380 snapshots are disabled. Even if automated snapshots are disabled,
2381 you can still create manual snapshots when you want with
2382 CreateClusterSnapshot.
2383 If you decrease the automated snapshot retention period from its
2384 current value, existing automated snapshots that fall outside of
2385 the new retention period will be immediately deleted.
2386
2387 Default: Uses existing setting.
2388
2389 Constraints: Must be a value from 0 to 35.
2390
2391 :type preferred_maintenance_window: string
2392 :param preferred_maintenance_window: The weekly time range (in UTC)
2393 during which system maintenance can occur, if necessary. If system
2394 maintenance is necessary during the window, it may result in an
2395 outage.
2396 This maintenance window change is made immediately. If the new
2397 maintenance window indicates the current time, there must be at
2398 least 120 minutes between the current time and end of the window in
2399 order to ensure that pending changes are applied.
2400
2401 Default: Uses existing setting.
2402
2403 Format: ddd:hh24:mi-ddd:hh24:mi, for example `wed:07:30-wed:08:00`.
2404
2405 Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun
2406
2407 Constraints: Must be at least 30 minutes.
2408
2409 :type cluster_version: string
2410 :param cluster_version: The new version number of the Amazon Redshift
2411 engine to upgrade to.
2412 For major version upgrades, if a non-default cluster parameter group is
2413 currently in use, a new cluster parameter group in the cluster
2414 parameter group family for the new version must be specified. The
2415 new cluster parameter group can be the default for that cluster
2416 parameter group family. For more information about managing
2417 parameter groups, go to `Amazon Redshift Parameter Groups`_ in the
2418 Amazon Redshift Management Guide .
2419
2420 Example: `1.0`
2421
2422 :type allow_version_upgrade: boolean
2423 :param allow_version_upgrade: If `True`, upgrades will be applied
2424 automatically to the cluster during the maintenance window.
2425 Default: `False`
2426
2427 :type hsm_client_certificate_identifier: string
2428 :param hsm_client_certificate_identifier: Specifies the name of the HSM
2429 client certificate the Amazon Redshift cluster uses to retrieve the
2430 data encryption keys stored in an HSM.
2431
2432 :type hsm_configuration_identifier: string
2433 :param hsm_configuration_identifier: Specifies the name of the HSM
2434 configuration that contains the information the Amazon Redshift
2435 cluster can use to retrieve and store keys in an HSM.
2436
2437 :type new_cluster_identifier: string
2438 :param new_cluster_identifier: The new identifier for the cluster.
2439 Constraints:
2440
2441
2442 + Must contain from 1 to 63 alphanumeric characters or hyphens.
2443 + Alphabetic characters must be lowercase.
2444 + First character must be a letter.
2445 + Cannot end with a hyphen or contain two consecutive hyphens.
2446 + Must be unique for all clusters within an AWS account.
2447
2448
2449 Example: `examplecluster`
2450
2451 """
2452 params = {'ClusterIdentifier': cluster_identifier, }
2453 if cluster_type is not None:
2454 params['ClusterType'] = cluster_type
2455 if node_type is not None:
2456 params['NodeType'] = node_type
2457 if number_of_nodes is not None:
2458 params['NumberOfNodes'] = number_of_nodes
2459 if cluster_security_groups is not None:
2460 self.build_list_params(params,
2461 cluster_security_groups,
2462 'ClusterSecurityGroups.member')
2463 if vpc_security_group_ids is not None:
2464 self.build_list_params(params,
2465 vpc_security_group_ids,
2466 'VpcSecurityGroupIds.member')
2467 if master_user_password is not None:
2468 params['MasterUserPassword'] = master_user_password
2469 if cluster_parameter_group_name is not None:
2470 params['ClusterParameterGroupName'] = cluster_parameter_group_name
2471 if automated_snapshot_retention_period is not None:
2472 params['AutomatedSnapshotRetentionPeriod'] = automated_snapshot_retention_period
2473 if preferred_maintenance_window is not None:
2474 params['PreferredMaintenanceWindow'] = preferred_maintenance_window
2475 if cluster_version is not None:
2476 params['ClusterVersion'] = cluster_version
2477 if allow_version_upgrade is not None:
2478 params['AllowVersionUpgrade'] = str(
2479 allow_version_upgrade).lower()
2480 if hsm_client_certificate_identifier is not None:
2481 params['HsmClientCertificateIdentifier'] = hsm_client_certificate_identifier
2482 if hsm_configuration_identifier is not None:
2483 params['HsmConfigurationIdentifier'] = hsm_configuration_identifier
2484 if new_cluster_identifier is not None:
2485 params['NewClusterIdentifier'] = new_cluster_identifier
2486 return self._make_request(
2487 action='ModifyCluster',
2488 verb='POST',
2489 path='/', params=params)
2490
2491 def modify_cluster_parameter_group(self, parameter_group_name,
2492 parameters):
2493 """
2494 Modifies the parameters of a parameter group.
2495
2496 For more information about managing parameter groups, go to
2497 `Amazon Redshift Parameter Groups`_ in the Amazon Redshift
2498 Management Guide .
2499
2500 :type parameter_group_name: string
2501 :param parameter_group_name: The name of the parameter group to be
2502 modified.
2503
2504 :type parameters: list
2505 :param parameters: An array of parameters to be modified. A maximum of
2506 20 parameters can be modified in a single request.
2507 For each parameter to be modified, you must supply at least the
2508 parameter name and parameter value; other name-value pairs of the
2509 parameter are optional.
2510
2511 For the workload management (WLM) configuration, you must supply all
2512 the name-value pairs in the wlm_json_configuration parameter.
2513
2514 """
2515 params = {'ParameterGroupName': parameter_group_name, }
2516 self.build_complex_list_params(
2517 params, parameters,
2518 'Parameters.member',
2519 ('ParameterName', 'ParameterValue', 'Description', 'Source', 'DataType', 'AllowedValues', 'IsModifiable', 'MinimumEngineVersion'))
2520 return self._make_request(
2521 action='ModifyClusterParameterGroup',
2522 verb='POST',
2523 path='/', params=params)
2524
2525 def modify_cluster_subnet_group(self, cluster_subnet_group_name,
2526 subnet_ids, description=None):
2527 """
2528 Modifies a cluster subnet group to include the specified list
2529 of VPC subnets. The operation replaces the existing list of
2530 subnets with the new list of subnets.
2531
2532 :type cluster_subnet_group_name: string
2533 :param cluster_subnet_group_name: The name of the subnet group to be
2534 modified.
2535
2536 :type description: string
2537 :param description: A text description of the subnet group to be
2538 modified.
2539
2540 :type subnet_ids: list
2541 :param subnet_ids: An array of VPC subnet IDs. A maximum of 20 subnets
2542 can be modified in a single request.
2543
2544 """
2545 params = {
2546 'ClusterSubnetGroupName': cluster_subnet_group_name,
2547 }
2548 self.build_list_params(params,
2549 subnet_ids,
2550 'SubnetIds.member')
2551 if description is not None:
2552 params['Description'] = description
2553 return self._make_request(
2554 action='ModifyClusterSubnetGroup',
2555 verb='POST',
2556 path='/', params=params)
2557
2558 def modify_event_subscription(self, subscription_name,
2559 sns_topic_arn=None, source_type=None,
2560 source_ids=None, event_categories=None,
2561 severity=None, enabled=None):
2562 """
2563 Modifies an existing Amazon Redshift event notification
2564 subscription.
2565
2566 :type subscription_name: string
2567 :param subscription_name: The name of the modified Amazon Redshift
2568 event notification subscription.
2569
2570 :type sns_topic_arn: string
2571 :param sns_topic_arn: The Amazon Resource Name (ARN) of the SNS topic
2572 to be used by the event notification subscription.
2573
2574 :type source_type: string
2575 :param source_type: The type of source that will be generating the
2576 events. For example, if you want to be notified of events generated
2577 by a cluster, you would set this parameter to cluster. If this
2578 value is not specified, events are returned for all Amazon Redshift
2579 objects in your AWS account. You must specify a source type in
2580 order to specify source IDs.
2581 Valid values: cluster, cluster-parameter-group, cluster-security-group,
2582 and cluster-snapshot.
2583
2584 :type source_ids: list
2585 :param source_ids: A list of one or more identifiers of Amazon Redshift
2586 source objects. All of the objects must be of the same type as was
2587 specified in the source type parameter. The event subscription will
2588 return only events generated by the specified objects. If not
2589 specified, then events are returned for all objects within the
2590 source type specified.
2591 Example: my-cluster-1, my-cluster-2
2592
2593 Example: my-snapshot-20131010
2594
2595 :type event_categories: list
2596 :param event_categories: Specifies the Amazon Redshift event categories
2597 to be published by the event notification subscription.
2598 Values: Configuration, Management, Monitoring, Security
2599
2600 :type severity: string
2601 :param severity: Specifies the Amazon Redshift event severity to be
2602 published by the event notification subscription.
2603 Values: ERROR, INFO
2604
2605 :type enabled: boolean
2606 :param enabled: A Boolean value indicating if the subscription is
2607 enabled. `True` indicates the subscription is enabled
2608
2609 """
2610 params = {'SubscriptionName': subscription_name, }
2611 if sns_topic_arn is not None:
2612 params['SnsTopicArn'] = sns_topic_arn
2613 if source_type is not None:
2614 params['SourceType'] = source_type
2615 if source_ids is not None:
2616 self.build_list_params(params,
2617 source_ids,
2618 'SourceIds.member')
2619 if event_categories is not None:
2620 self.build_list_params(params,
2621 event_categories,
2622 'EventCategories.member')
2623 if severity is not None:
2624 params['Severity'] = severity
2625 if enabled is not None:
2626 params['Enabled'] = str(
2627 enabled).lower()
2628 return self._make_request(
2629 action='ModifyEventSubscription',
2630 verb='POST',
2631 path='/', params=params)
2632
2633 def modify_snapshot_copy_retention_period(self, cluster_identifier,
2634 retention_period):
2635 """
2636 Modifies the number of days to retain automated snapshots in
2637 the destination region after they are copied from the source
2638 region.
2639
2640 :type cluster_identifier: string
2641 :param cluster_identifier: The unique identifier of the cluster for
2642 which you want to change the retention period for automated
2643 snapshots that are copied to a destination region.
2644 Constraints: Must be the valid name of an existing cluster that has
2645 cross-region snapshot copy enabled.
2646
2647 :type retention_period: integer
2648 :param retention_period: The number of days to retain automated
2649 snapshots in the destination region after they are copied from the
2650 source region.
2651 If you decrease the retention period for automated snapshots that are
2652 copied to a destination region, Amazon Redshift will delete any
2653 existing automated snapshots that were copied to the destination
2654 region and that fall outside of the new retention period.
2655
2656 Constraints: Must be at least 1 and no more than 35.
2657
2658 """
2659 params = {
2660 'ClusterIdentifier': cluster_identifier,
2661 'RetentionPeriod': retention_period,
2662 }
2663 return self._make_request(
2664 action='ModifySnapshotCopyRetentionPeriod',
2665 verb='POST',
2666 path='/', params=params)
2667
2668 def purchase_reserved_node_offering(self, reserved_node_offering_id,
2669 node_count=None):
2670 """
2671 Allows you to purchase reserved nodes. Amazon Redshift offers
2672 a predefined set of reserved node offerings. You can purchase
2673 one of the offerings. You can call the
2674 DescribeReservedNodeOfferings API to obtain the available
2675 reserved node offerings. You can call this API by providing a
2676 specific reserved node offering and the number of nodes you
2677 want to reserve.
2678
2679 For more information about managing parameter groups, go to
2680 `Purchasing Reserved Nodes`_ in the Amazon Redshift Management
2681 Guide .
2682
2683 :type reserved_node_offering_id: string
2684 :param reserved_node_offering_id: The unique identifier of the reserved
2685 node offering you want to purchase.
2686
2687 :type node_count: integer
2688 :param node_count: The number of reserved nodes you want to purchase.
2689 Default: `1`
2690
2691 """
2692 params = {
2693 'ReservedNodeOfferingId': reserved_node_offering_id,
2694 }
2695 if node_count is not None:
2696 params['NodeCount'] = node_count
2697 return self._make_request(
2698 action='PurchaseReservedNodeOffering',
2699 verb='POST',
2700 path='/', params=params)
2701
2702 def reboot_cluster(self, cluster_identifier):
2703 """
2704 Reboots a cluster. This action is taken as soon as possible.
2705 It results in a momentary outage to the cluster, during which
2706 the cluster status is set to `rebooting`. A cluster event is
2707 created when the reboot is completed. Any pending cluster
2708 modifications (see ModifyCluster) are applied at this reboot.
2709 For more information about managing clusters, go to `Amazon
2710 Redshift Clusters`_ in the Amazon Redshift Management Guide
2711
2712 :type cluster_identifier: string
2713 :param cluster_identifier: The cluster identifier.
2714
2715 """
2716 params = {'ClusterIdentifier': cluster_identifier, }
2717 return self._make_request(
2718 action='RebootCluster',
2719 verb='POST',
2720 path='/', params=params)
2721
2722 def reset_cluster_parameter_group(self, parameter_group_name,
2723 reset_all_parameters=None,
2724 parameters=None):
2725 """
2726 Sets one or more parameters of the specified parameter group
2727 to their default values and sets the source values of the
2728 parameters to "engine-default". To reset the entire parameter
2729 group specify the ResetAllParameters parameter. For parameter
2730 changes to take effect you must reboot any associated
2731 clusters.
2732
2733 :type parameter_group_name: string
2734 :param parameter_group_name: The name of the cluster parameter group to
2735 be reset.
2736
2737 :type reset_all_parameters: boolean
2738 :param reset_all_parameters: If `True`, all parameters in the specified
2739 parameter group will be reset to their default values.
2740 Default: `True`
2741
2742 :type parameters: list
2743 :param parameters: An array of names of parameters to be reset. If
2744 ResetAllParameters option is not used, then at least one parameter
2745 name must be supplied.
2746 Constraints: A maximum of 20 parameters can be reset in a single
2747 request.
2748
2749 """
2750 params = {'ParameterGroupName': parameter_group_name, }
2751 if reset_all_parameters is not None:
2752 params['ResetAllParameters'] = str(
2753 reset_all_parameters).lower()
2754 if parameters is not None:
2755 self.build_complex_list_params(
2756 params, parameters,
2757 'Parameters.member',
2758 ('ParameterName', 'ParameterValue', 'Description', 'Source', 'DataType', 'AllowedValues', 'IsModifiable', 'MinimumEngineVersion'))
2759 return self._make_request(
2760 action='ResetClusterParameterGroup',
2761 verb='POST',
2762 path='/', params=params)
2763
2764 def restore_from_cluster_snapshot(self, cluster_identifier,
2765 snapshot_identifier,
2766 snapshot_cluster_identifier=None,
2767 port=None, availability_zone=None,
2768 allow_version_upgrade=None,
2769 cluster_subnet_group_name=None,
2770 publicly_accessible=None,
2771 owner_account=None,
2772 hsm_client_certificate_identifier=None,
2773 hsm_configuration_identifier=None,
2774 elastic_ip=None,
2775 cluster_parameter_group_name=None,
2776 cluster_security_groups=None,
2777 vpc_security_group_ids=None,
2778 preferred_maintenance_window=None,
2779 automated_snapshot_retention_period=None):
2780 """
2781 Creates a new cluster from a snapshot. Amazon Redshift creates
2782 the resulting cluster with the same configuration as the
2783 original cluster from which the snapshot was created, except
2784 that the new cluster is created with the default cluster
2785 security and parameter group. After Amazon Redshift creates
2786 the cluster you can use the ModifyCluster API to associate a
2787 different security group and different parameter group with
2788 the restored cluster.
2789
2790 If you restore a cluster into a VPC, you must provide a
2791 cluster subnet group where you want the cluster restored.
2792
2793 For more information about working with snapshots, go to
2794 `Amazon Redshift Snapshots`_ in the Amazon Redshift Management
2795 Guide .
2796
2797 :type cluster_identifier: string
2798 :param cluster_identifier: The identifier of the cluster that will be
2799 created from restoring the snapshot.
2800
2801 Constraints:
2802
2803
2804 + Must contain from 1 to 63 alphanumeric characters or hyphens.
2805 + Alphabetic characters must be lowercase.
2806 + First character must be a letter.
2807 + Cannot end with a hyphen or contain two consecutive hyphens.
2808 + Must be unique for all clusters within an AWS account.
2809
2810 :type snapshot_identifier: string
2811 :param snapshot_identifier: The name of the snapshot from which to
2812 create the new cluster. This parameter isn't case sensitive.
2813 Example: `my-snapshot-id`
2814
2815 :type snapshot_cluster_identifier: string
2816 :param snapshot_cluster_identifier: The name of the cluster the source
2817 snapshot was created from. This parameter is required if your IAM
2818 user has a policy containing a snapshot resource element that
2819 specifies anything other than * for the cluster name.
2820
2821 :type port: integer
2822 :param port: The port number on which the cluster accepts connections.
2823 Default: The same port as the original cluster.
2824
2825 Constraints: Must be between `1115` and `65535`.
2826
2827 :type availability_zone: string
2828 :param availability_zone: The Amazon EC2 Availability Zone in which to
2829 restore the cluster.
2830 Default: A random, system-chosen Availability Zone.
2831
2832 Example: `us-east-1a`
2833
2834 :type allow_version_upgrade: boolean
2835 :param allow_version_upgrade: If `True`, upgrades can be applied during
2836 the maintenance window to the Amazon Redshift engine that is
2837 running on the cluster.
2838 Default: `True`
2839
2840 :type cluster_subnet_group_name: string
2841 :param cluster_subnet_group_name: The name of the subnet group where
2842 you want to cluster restored.
2843 A snapshot of cluster in VPC can be restored only in VPC. Therefore,
2844 you must provide subnet group name where you want the cluster
2845 restored.
2846
2847 :type publicly_accessible: boolean
2848 :param publicly_accessible: If `True`, the cluster can be accessed from
2849 a public network.
2850
2851 :type owner_account: string
2852 :param owner_account: The AWS customer account used to create or copy
2853 the snapshot. Required if you are restoring a snapshot you do not
2854 own, optional if you own the snapshot.
2855
2856 :type hsm_client_certificate_identifier: string
2857 :param hsm_client_certificate_identifier: Specifies the name of the HSM
2858 client certificate the Amazon Redshift cluster uses to retrieve the
2859 data encryption keys stored in an HSM.
2860
2861 :type hsm_configuration_identifier: string
2862 :param hsm_configuration_identifier: Specifies the name of the HSM
2863 configuration that contains the information the Amazon Redshift
2864 cluster can use to retrieve and store keys in an HSM.
2865
2866 :type elastic_ip: string
2867 :param elastic_ip: The elastic IP (EIP) address for the cluster.
2868
2869 :type cluster_parameter_group_name: string
2870 :param cluster_parameter_group_name:
2871 The name of the parameter group to be associated with this cluster.
2872
2873 Default: The default Amazon Redshift cluster parameter group. For
2874 information about the default parameter group, go to `Working with
2875 Amazon Redshift Parameter Groups`_.
2876
2877 Constraints:
2878
2879
2880 + Must be 1 to 255 alphanumeric characters or hyphens.
2881 + First character must be a letter.
2882 + Cannot end with a hyphen or contain two consecutive hyphens.
2883
2884 :type cluster_security_groups: list
2885 :param cluster_security_groups: A list of security groups to be
2886 associated with this cluster.
2887 Default: The default cluster security group for Amazon Redshift.
2888
2889 Cluster security groups only apply to clusters outside of VPCs.
2890
2891 :type vpc_security_group_ids: list
2892 :param vpc_security_group_ids: A list of Virtual Private Cloud (VPC)
2893 security groups to be associated with the cluster.
2894 Default: The default VPC security group is associated with the cluster.
2895
2896 VPC security groups only apply to clusters in VPCs.
2897
2898 :type preferred_maintenance_window: string
2899 :param preferred_maintenance_window: The weekly time range (in UTC)
2900 during which automated cluster maintenance can occur.
2901 Format: `ddd:hh24:mi-ddd:hh24:mi`
2902
2903 Default: The value selected for the cluster from which the snapshot was
2904 taken. The following list shows the time blocks for each region
2905 from which the default maintenance windows are assigned.
2906
2907
2908 + **US-East (Northern Virginia) Region:** 03:00-11:00 UTC
2909 + **US-West (Oregon) Region** 06:00-14:00 UTC
2910 + **EU (Ireland) Region** 22:00-06:00 UTC
2911 + **Asia Pacific (Singapore) Region** 14:00-22:00 UTC
2912 + **Asia Pacific (Sydney) Region** 12:00-20:00 UTC
2913 + **Asia Pacific (Tokyo) Region** 17:00-03:00 UTC
2914
2915
2916 Valid Days: Mon | Tue | Wed | Thu | Fri | Sat | Sun
2917
2918 Constraints: Minimum 30-minute window.
2919
2920 :type automated_snapshot_retention_period: integer
2921 :param automated_snapshot_retention_period: The number of days that
2922 automated snapshots are retained. If the value is 0, automated
2923 snapshots are disabled. Even if automated snapshots are disabled,
2924 you can still create manual snapshots when you want with
2925 CreateClusterSnapshot.
2926 Default: The value selected for the cluster from which the snapshot was
2927 taken.
2928
2929 Constraints: Must be a value from 0 to 35.
2930
2931 """
2932 params = {
2933 'ClusterIdentifier': cluster_identifier,
2934 'SnapshotIdentifier': snapshot_identifier,
2935 }
2936 if snapshot_cluster_identifier is not None:
2937 params['SnapshotClusterIdentifier'] = snapshot_cluster_identifier
2938 if port is not None:
2939 params['Port'] = port
2940 if availability_zone is not None:
2941 params['AvailabilityZone'] = availability_zone
2942 if allow_version_upgrade is not None:
2943 params['AllowVersionUpgrade'] = str(
2944 allow_version_upgrade).lower()
2945 if cluster_subnet_group_name is not None:
2946 params['ClusterSubnetGroupName'] = cluster_subnet_group_name
2947 if publicly_accessible is not None:
2948 params['PubliclyAccessible'] = str(
2949 publicly_accessible).lower()
2950 if owner_account is not None:
2951 params['OwnerAccount'] = owner_account
2952 if hsm_client_certificate_identifier is not None:
2953 params['HsmClientCertificateIdentifier'] = hsm_client_certificate_identifier
2954 if hsm_configuration_identifier is not None:
2955 params['HsmConfigurationIdentifier'] = hsm_configuration_identifier
2956 if elastic_ip is not None:
2957 params['ElasticIp'] = elastic_ip
2958 if cluster_parameter_group_name is not None:
2959 params['ClusterParameterGroupName'] = cluster_parameter_group_name
2960 if cluster_security_groups is not None:
2961 self.build_list_params(params,
2962 cluster_security_groups,
2963 'ClusterSecurityGroups.member')
2964 if vpc_security_group_ids is not None:
2965 self.build_list_params(params,
2966 vpc_security_group_ids,
2967 'VpcSecurityGroupIds.member')
2968 if preferred_maintenance_window is not None:
2969 params['PreferredMaintenanceWindow'] = preferred_maintenance_window
2970 if automated_snapshot_retention_period is not None:
2971 params['AutomatedSnapshotRetentionPeriod'] = automated_snapshot_retention_period
2972 return self._make_request(
2973 action='RestoreFromClusterSnapshot',
2974 verb='POST',
2975 path='/', params=params)
2976
2977 def revoke_cluster_security_group_ingress(self,
2978 cluster_security_group_name,
2979 cidrip=None,
2980 ec2_security_group_name=None,
2981 ec2_security_group_owner_id=None):
2982 """
2983 Revokes an ingress rule in an Amazon Redshift security group
2984 for a previously authorized IP range or Amazon EC2 security
2985 group. To add an ingress rule, see
2986 AuthorizeClusterSecurityGroupIngress. For information about
2987 managing security groups, go to `Amazon Redshift Cluster
2988 Security Groups`_ in the Amazon Redshift Management Guide .
2989
2990 :type cluster_security_group_name: string
2991 :param cluster_security_group_name: The name of the security Group from
2992 which to revoke the ingress rule.
2993
2994 :type cidrip: string
2995 :param cidrip: The IP range for which to revoke access. This range must
2996 be a valid Classless Inter-Domain Routing (CIDR) block of IP
2997 addresses. If `CIDRIP` is specified, `EC2SecurityGroupName` and
2998 `EC2SecurityGroupOwnerId` cannot be provided.
2999
3000 :type ec2_security_group_name: string
3001 :param ec2_security_group_name: The name of the EC2 Security Group
3002 whose access is to be revoked. If `EC2SecurityGroupName` is
3003 specified, `EC2SecurityGroupOwnerId` must also be provided and
3004 `CIDRIP` cannot be provided.
3005
3006 :type ec2_security_group_owner_id: string
3007 :param ec2_security_group_owner_id: The AWS account number of the owner
3008 of the security group specified in the `EC2SecurityGroupName`
3009 parameter. The AWS access key ID is not an acceptable value. If
3010 `EC2SecurityGroupOwnerId` is specified, `EC2SecurityGroupName` must
3011 also be provided. and `CIDRIP` cannot be provided.
3012 Example: `111122223333`
3013
3014 """
3015 params = {
3016 'ClusterSecurityGroupName': cluster_security_group_name,
3017 }
3018 if cidrip is not None:
3019 params['CIDRIP'] = cidrip
3020 if ec2_security_group_name is not None:
3021 params['EC2SecurityGroupName'] = ec2_security_group_name
3022 if ec2_security_group_owner_id is not None:
3023 params['EC2SecurityGroupOwnerId'] = ec2_security_group_owner_id
3024 return self._make_request(
3025 action='RevokeClusterSecurityGroupIngress',
3026 verb='POST',
3027 path='/', params=params)
3028
3029 def revoke_snapshot_access(self, snapshot_identifier,
3030 account_with_restore_access,
3031 snapshot_cluster_identifier=None):
3032 """
3033 Removes the ability of the specified AWS customer account to
3034 restore the specified snapshot. If the account is currently
3035 restoring the snapshot, the restore will run to completion.
3036
3037 For more information about working with snapshots, go to
3038 `Amazon Redshift Snapshots`_ in the Amazon Redshift Management
3039 Guide .
3040
3041 :type snapshot_identifier: string
3042 :param snapshot_identifier: The identifier of the snapshot that the
3043 account can no longer access.
3044
3045 :type snapshot_cluster_identifier: string
3046 :param snapshot_cluster_identifier: The identifier of the cluster the
3047 snapshot was created from. This parameter is required if your IAM
3048 user has a policy containing a snapshot resource element that
3049 specifies anything other than * for the cluster name.
3050
3051 :type account_with_restore_access: string
3052 :param account_with_restore_access: The identifier of the AWS customer
3053 account that can no longer restore the specified snapshot.
3054
3055 """
3056 params = {
3057 'SnapshotIdentifier': snapshot_identifier,
3058 'AccountWithRestoreAccess': account_with_restore_access,
3059 }
3060 if snapshot_cluster_identifier is not None:
3061 params['SnapshotClusterIdentifier'] = snapshot_cluster_identifier
3062 return self._make_request(
3063 action='RevokeSnapshotAccess',
3064 verb='POST',
3065 path='/', params=params)
3066
3067 def rotate_encryption_key(self, cluster_identifier):
3068 """
3069 Rotates the encryption keys for a cluster.
3070
3071 :type cluster_identifier: string
3072 :param cluster_identifier: The unique identifier of the cluster that
3073 you want to rotate the encryption keys for.
3074 Constraints: Must be the name of valid cluster that has encryption
3075 enabled.
3076
3077 """
3078 params = {'ClusterIdentifier': cluster_identifier, }
3079 return self._make_request(
3080 action='RotateEncryptionKey',
3081 verb='POST',
3082 path='/', params=params)
3083
3084 def _make_request(self, action, verb, path, params):
3085 params['ContentType'] = 'JSON'
3086 response = self.make_request(action=action, verb='POST',
3087 path='/', params=params)
3088 body = response.read().decode('utf-8')
3089 boto.log.debug(body)
3090 if response.status == 200:
3091 return json.loads(body)
3092 else:
3093 json_body = json.loads(body)
3094 fault_name = json_body.get('Error', {}).get('Code', None)
3095 exception_class = self._faults.get(fault_name, self.ResponseError)
3096 raise exception_class(response.status, response.reason,
3097 body=json_body)