aws-sdk-elasticache 1.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b289a6200585ca409fe5b53839a9beff968bced6
4
+ data.tar.gz: 0da1eaec49a1a501c4244240c5d3248102f4ced5
5
+ SHA512:
6
+ metadata.gz: d160dbba2e119ab584ba81486ca2bfaf99a669dfd8b78c602dc192daefd971de436b13fe809c428008669d9e4ebe15d76ddf2f69f2bbabb0523be0a8c71234aa
7
+ data.tar.gz: 6090d34928ab29b64aec38bf6e65dea0b203de22666099bd943758ff096c8016549d76d54a70936f8dc4b0b835df6e270ee490e36f273ee3cc2b6a4eb00a42a5
@@ -0,0 +1,48 @@
1
+ # WARNING ABOUT GENERATED CODE
2
+ #
3
+ # This file is generated. See the contributing for info on making contributions:
4
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
5
+ #
6
+ # WARNING ABOUT GENERATED CODE
7
+
8
+ require 'aws-sdk-core'
9
+ require 'aws-sigv4'
10
+
11
+ require_relative 'aws-sdk-elasticache/types'
12
+ require_relative 'aws-sdk-elasticache/client_api'
13
+ require_relative 'aws-sdk-elasticache/client'
14
+ require_relative 'aws-sdk-elasticache/errors'
15
+ require_relative 'aws-sdk-elasticache/waiters'
16
+ require_relative 'aws-sdk-elasticache/resource'
17
+ require_relative 'aws-sdk-elasticache/customizations'
18
+
19
+ # This module provides support for Amazon ElastiCache. This module is available in the
20
+ # `aws-sdk-elasticache` gem.
21
+ #
22
+ # # Client
23
+ #
24
+ # The {Client} class provides one method for each API operation. Operation
25
+ # methods each accept a hash of request parameters and return a response
26
+ # structure.
27
+ #
28
+ # See {Client} for more information.
29
+ #
30
+ # # Errors
31
+ #
32
+ # Errors returned from Amazon ElastiCache all
33
+ # extend {Errors::ServiceError}.
34
+ #
35
+ # begin
36
+ # # do stuff
37
+ # rescue Aws::ElastiCache::Errors::ServiceError
38
+ # # rescues all service API errors
39
+ # end
40
+ #
41
+ # See {Errors} for more information.
42
+ #
43
+ # @service
44
+ module Aws::ElastiCache
45
+
46
+ GEM_VERSION = '1.0.0.rc1'
47
+
48
+ end
@@ -0,0 +1,3673 @@
1
+ # WARNING ABOUT GENERATED CODE
2
+ #
3
+ # This file is generated. See the contributing for info on making contributions:
4
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
5
+ #
6
+ # WARNING ABOUT GENERATED CODE
7
+
8
+ require 'seahorse/client/plugins/content_length.rb'
9
+ require 'aws-sdk-core/plugins/credentials_configuration.rb'
10
+ require 'aws-sdk-core/plugins/logging.rb'
11
+ require 'aws-sdk-core/plugins/param_converter.rb'
12
+ require 'aws-sdk-core/plugins/param_validator.rb'
13
+ require 'aws-sdk-core/plugins/user_agent.rb'
14
+ require 'aws-sdk-core/plugins/helpful_socket_errors.rb'
15
+ require 'aws-sdk-core/plugins/retry_errors.rb'
16
+ require 'aws-sdk-core/plugins/global_configuration.rb'
17
+ require 'aws-sdk-core/plugins/regional_endpoint.rb'
18
+ require 'aws-sdk-core/plugins/response_paging.rb'
19
+ require 'aws-sdk-core/plugins/stub_responses.rb'
20
+ require 'aws-sdk-core/plugins/idempotency_token.rb'
21
+ require 'aws-sdk-core/plugins/signature_v4.rb'
22
+ require 'aws-sdk-core/plugins/protocols/query.rb'
23
+
24
+ Aws::Plugins::GlobalConfiguration.add_identifier(:elasticache)
25
+
26
+ module Aws
27
+ module ElastiCache
28
+ class Client < Seahorse::Client::Base
29
+
30
+ include Aws::ClientStubs
31
+
32
+ @identifier = :elasticache
33
+
34
+ set_api(ClientApi::API)
35
+
36
+ add_plugin(Seahorse::Client::Plugins::ContentLength)
37
+ add_plugin(Aws::Plugins::CredentialsConfiguration)
38
+ add_plugin(Aws::Plugins::Logging)
39
+ add_plugin(Aws::Plugins::ParamConverter)
40
+ add_plugin(Aws::Plugins::ParamValidator)
41
+ add_plugin(Aws::Plugins::UserAgent)
42
+ add_plugin(Aws::Plugins::HelpfulSocketErrors)
43
+ add_plugin(Aws::Plugins::RetryErrors)
44
+ add_plugin(Aws::Plugins::GlobalConfiguration)
45
+ add_plugin(Aws::Plugins::RegionalEndpoint)
46
+ add_plugin(Aws::Plugins::ResponsePaging)
47
+ add_plugin(Aws::Plugins::StubResponses)
48
+ add_plugin(Aws::Plugins::IdempotencyToken)
49
+ add_plugin(Aws::Plugins::SignatureV4)
50
+ add_plugin(Aws::Plugins::Protocols::Query)
51
+
52
+ # @option options [required, Aws::CredentialProvider] :credentials
53
+ # Your AWS credentials. This can be an instance of any one of the
54
+ # following classes:
55
+ #
56
+ # * `Aws::Credentials` - Used for configuring static, non-refreshing
57
+ # credentials.
58
+ #
59
+ # * `Aws::InstanceProfileCredentials` - Used for loading credentials
60
+ # from an EC2 IMDS on an EC2 instance.
61
+ #
62
+ # * `Aws::SharedCredentials` - Used for loading credentials from a
63
+ # shared file, such as `~/.aws/config`.
64
+ #
65
+ # * `Aws::AssumeRoleCredentials` - Used when you need to assume a role.
66
+ #
67
+ # When `:credentials` are not configured directly, the following
68
+ # locations will be searched for credentials:
69
+ #
70
+ # * `Aws.config[:credentials]`
71
+ # * The `:access_key_id`, `:secret_access_key`, and `:session_token` options.
72
+ # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']
73
+ # * `~/.aws/credentials`
74
+ # * `~/.aws/config`
75
+ # * EC2 IMDS instance profile - When used by default, the timeouts are
76
+ # very aggressive. Construct and pass an instance of
77
+ # `Aws::InstanceProfileCredentails` to enable retries and extended
78
+ # timeouts.
79
+ # @option options [required, String] :region
80
+ # The AWS region to connect to. The configured `:region` is
81
+ # used to determine the service `:endpoint`. When not passed,
82
+ # a default `:region` is search for in the following locations:
83
+ #
84
+ # * `Aws.config[:region]`
85
+ # * `ENV['AWS_REGION']`
86
+ # * `ENV['AMAZON_REGION']`
87
+ # * `ENV['AWS_DEFAULT_REGION']`
88
+ # * `~/.aws/credentials`
89
+ # * `~/.aws/config`
90
+ # @option options [String] :access_key_id
91
+ # @option options [Boolean] :convert_params (true)
92
+ # When `true`, an attempt is made to coerce request parameters into
93
+ # the required types.
94
+ # @option options [String] :endpoint
95
+ # The client endpoint is normally constructed from the `:region`
96
+ # option. You should only configure an `:endpoint` when connecting
97
+ # to test endpoints. This should be avalid HTTP(S) URI.
98
+ # @option options [Aws::Log::Formatter] :log_formatter (Aws::Log::Formatter.default)
99
+ # The log formatter.
100
+ # @option options [Symbol] :log_level (:info)
101
+ # The log level to send messages to the `:logger` at.
102
+ # @option options [Logger] :logger
103
+ # The Logger instance to send log messages to. If this option
104
+ # is not set, logging will be disabled.
105
+ # @option options [String] :profile ("default")
106
+ # Used when loading credentials from the shared credentials file
107
+ # at HOME/.aws/credentials. When not specified, 'default' is used.
108
+ # @option options [Integer] :retry_limit (3)
109
+ # The maximum number of times to retry failed requests. Only
110
+ # ~ 500 level server errors and certain ~ 400 level client errors
111
+ # are retried. Generally, these are throttling errors, data
112
+ # checksum errors, networking errors, timeout errors and auth
113
+ # errors from expired credentials.
114
+ # @option options [String] :secret_access_key
115
+ # @option options [String] :session_token
116
+ # @option options [Boolean] :stub_responses (false)
117
+ # Causes the client to return stubbed responses. By default
118
+ # fake responses are generated and returned. You can specify
119
+ # the response data to return or errors to raise by calling
120
+ # {ClientStubs#stub_responses}. See {ClientStubs} for more information.
121
+ #
122
+ # ** Please note ** When response stubbing is enabled, no HTTP
123
+ # requests are made, and retries are disabled.
124
+ # @option options [Boolean] :validate_params (true)
125
+ # When `true`, request parameters are validated before
126
+ # sending the request.
127
+ def initialize(*args)
128
+ super
129
+ end
130
+
131
+ # @!group API Operations
132
+
133
+ # Adds up to 10 cost allocation tags to the named resource. A cost
134
+ # allocation tag is a key-value pair where the key and value are
135
+ # case-sensitive. You can use cost allocation tags to categorize and
136
+ # track your AWS costs.
137
+ #
138
+ # When you apply tags to your ElastiCache resources, AWS generates a
139
+ # cost allocation report as a comma-separated value (CSV) file with your
140
+ # usage and costs aggregated by your tags. You can apply tags that
141
+ # represent business categories (such as cost centers, application
142
+ # names, or owners) to organize your costs across multiple services. For
143
+ # more information, see [Using Cost Allocation Tags in Amazon
144
+ # ElastiCache][1] in the *ElastiCache User Guide*.
145
+ #
146
+ #
147
+ #
148
+ # [1]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Tagging.html
149
+ # @option params [required, String] :resource_name
150
+ # The Amazon Resource Name (ARN) of the resource to which the tags are
151
+ # to be added, for example
152
+ # `arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster` or
153
+ # `arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot`.
154
+ #
155
+ # For more information about ARNs, see [Amazon Resource Names (ARNs) and
156
+ # AWS Service Namespaces][1].
157
+ #
158
+ #
159
+ #
160
+ # [1]: http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
161
+ # @option params [required, Array<Types::Tag>] :tags
162
+ # A list of cost allocation tags to be added to this resource. A tag is
163
+ # a key-value pair. A tag key must be accompanied by a tag value.
164
+ # @return [Types::TagListMessage] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
165
+ #
166
+ # * {Types::TagListMessage#tag_list #TagList} => Array&lt;Types::Tag&gt;
167
+ #
168
+ # @example Request syntax with placeholder values
169
+ # resp = client.add_tags_to_resource({
170
+ # resource_name: "String", # required
171
+ # tags: [ # required
172
+ # {
173
+ # key: "String",
174
+ # value: "String",
175
+ # },
176
+ # ],
177
+ # })
178
+ #
179
+ # @example Response structure
180
+ # resp.tag_list #=> Array
181
+ # resp.tag_list[0].key #=> String
182
+ # resp.tag_list[0].value #=> String
183
+ # @overload add_tags_to_resource(params = {})
184
+ # @param [Hash] params ({})
185
+ def add_tags_to_resource(params = {}, options = {})
186
+ req = build_request(:add_tags_to_resource, params)
187
+ req.send_request(options)
188
+ end
189
+
190
+ # Allows network ingress to a cache security group. Applications using
191
+ # ElastiCache must be running on Amazon EC2, and Amazon EC2 security
192
+ # groups are used as the authorization mechanism.
193
+ #
194
+ # <note markdown="1"> You cannot authorize ingress from an Amazon EC2 security group in one
195
+ # region to an ElastiCache cluster in another region.
196
+ #
197
+ # </note>
198
+ # @option params [required, String] :cache_security_group_name
199
+ # The cache security group that allows network ingress.
200
+ # @option params [required, String] :ec2_security_group_name
201
+ # The Amazon EC2 security group to be authorized for ingress to the
202
+ # cache security group.
203
+ # @option params [required, String] :ec2_security_group_owner_id
204
+ # The AWS account number of the Amazon EC2 security group owner. Note
205
+ # that this is not the same thing as an AWS access key ID - you must
206
+ # provide a valid AWS account number for this parameter.
207
+ # @return [Types::AuthorizeCacheSecurityGroupIngressResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
208
+ #
209
+ # * {Types::AuthorizeCacheSecurityGroupIngressResult#cache_security_group #CacheSecurityGroup} => Types::CacheSecurityGroup
210
+ #
211
+ # @example Request syntax with placeholder values
212
+ # resp = client.authorize_cache_security_group_ingress({
213
+ # cache_security_group_name: "String", # required
214
+ # ec2_security_group_name: "String", # required
215
+ # ec2_security_group_owner_id: "String", # required
216
+ # })
217
+ #
218
+ # @example Response structure
219
+ # resp.cache_security_group.owner_id #=> String
220
+ # resp.cache_security_group.cache_security_group_name #=> String
221
+ # resp.cache_security_group.description #=> String
222
+ # resp.cache_security_group.ec2_security_groups #=> Array
223
+ # resp.cache_security_group.ec2_security_groups[0].status #=> String
224
+ # resp.cache_security_group.ec2_security_groups[0].ec2_security_group_name #=> String
225
+ # resp.cache_security_group.ec2_security_groups[0].ec2_security_group_owner_id #=> String
226
+ # @overload authorize_cache_security_group_ingress(params = {})
227
+ # @param [Hash] params ({})
228
+ def authorize_cache_security_group_ingress(params = {}, options = {})
229
+ req = build_request(:authorize_cache_security_group_ingress, params)
230
+ req.send_request(options)
231
+ end
232
+
233
+ # Makes a copy of an existing snapshot.
234
+ #
235
+ # <note markdown="1"> This operation is valid for Redis only.
236
+ #
237
+ # </note>
238
+ #
239
+ # Users or groups that have permissions to use the `CopySnapshot`
240
+ # operation can create their own Amazon S3 buckets and copy snapshots to
241
+ # it. To control access to your snapshots, use an IAM policy to control
242
+ # who has the ability to use the `CopySnapshot` operation. For more
243
+ # information about using IAM to control the use of ElastiCache
244
+ # operations, see [Exporting Snapshots][1] and [Authentication &amp;
245
+ # Access Control][2].
246
+ #
247
+ # You could receive the following error messages.
248
+ #
249
+ # **Error Messages**
250
+ #
251
+ # * **Error Message:** The S3 bucket %s is outside of the region.
252
+ #
253
+ # **Solution:** Create an Amazon S3 bucket in the same region as your
254
+ # snapshot. For more information, see [Step 1: Create an Amazon S3
255
+ # Bucket][3] in the ElastiCache User Guide.
256
+ #
257
+ # * **Error Message:** The S3 bucket %s does not exist.
258
+ #
259
+ # **Solution:** Create an Amazon S3 bucket in the same region as your
260
+ # snapshot. For more information, see [Step 1: Create an Amazon S3
261
+ # Bucket][3] in the ElastiCache User Guide.
262
+ #
263
+ # * **Error Message:** The S3 bucket %s is not owned by the
264
+ # authenticated user.
265
+ #
266
+ # **Solution:** Create an Amazon S3 bucket in the same region as your
267
+ # snapshot. For more information, see [Step 1: Create an Amazon S3
268
+ # Bucket][3] in the ElastiCache User Guide.
269
+ #
270
+ # * **Error Message:** The authenticated user does not have sufficient
271
+ # permissions to perform the desired activity.
272
+ #
273
+ # **Solution:** Contact your system administrator to get the needed
274
+ # permissions.
275
+ #
276
+ # * **Error Message:** The S3 bucket %s already contains an object with
277
+ # key %s.
278
+ #
279
+ # **Solution:** Give the `TargetSnapshotName` a new and unique value.
280
+ # If exporting a snapshot, you could alternatively create a new Amazon
281
+ # S3 bucket and use this same value for `TargetSnapshotName`.
282
+ #
283
+ # * <b>Error Message: </b> ElastiCache has not been granted READ
284
+ # permissions %s on the S3 Bucket.
285
+ #
286
+ # **Solution:** Add List and Read permissions on the bucket. For more
287
+ # information, see [Step 2: Grant ElastiCache Access to Your Amazon S3
288
+ # Bucket][4] in the ElastiCache User Guide.
289
+ #
290
+ # * <b>Error Message: </b> ElastiCache has not been granted WRITE
291
+ # permissions %s on the S3 Bucket.
292
+ #
293
+ # **Solution:** Add Upload/Delete permissions on the bucket. For more
294
+ # information, see [Step 2: Grant ElastiCache Access to Your Amazon S3
295
+ # Bucket][4] in the ElastiCache User Guide.
296
+ #
297
+ # * <b>Error Message: </b> ElastiCache has not been granted READ\_ACP
298
+ # permissions %s on the S3 Bucket.
299
+ #
300
+ # **Solution:** Add View Permissions on the bucket. For more
301
+ # information, see [Step 2: Grant ElastiCache Access to Your Amazon S3
302
+ # Bucket][4] in the ElastiCache User Guide.
303
+ #
304
+ #
305
+ #
306
+ # [1]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html
307
+ # [2]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/IAM.html
308
+ # [3]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html#Snapshots.Exporting.CreateBucket
309
+ # [4]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html#Snapshots.Exporting.GrantAccess
310
+ # @option params [required, String] :source_snapshot_name
311
+ # The name of an existing snapshot from which to make a copy.
312
+ # @option params [required, String] :target_snapshot_name
313
+ # A name for the snapshot copy. ElastiCache does not permit overwriting
314
+ # a snapshot, therefore this name must be unique within its context -
315
+ # ElastiCache or an Amazon S3 bucket if exporting.
316
+ # @option params [String] :target_bucket
317
+ # The Amazon S3 bucket to which the snapshot is exported. This parameter
318
+ # is used only when exporting a snapshot for external access.
319
+ #
320
+ # When using this parameter to export a snapshot, be sure Amazon
321
+ # ElastiCache has the needed permissions to this S3 bucket. For more
322
+ # information, see [Step 2: Grant ElastiCache Access to Your Amazon S3
323
+ # Bucket][1] in the *Amazon ElastiCache User Guide*.
324
+ #
325
+ # For more information, see [Exporting a Snapshot][2] in the *Amazon
326
+ # ElastiCache User Guide*.
327
+ #
328
+ #
329
+ #
330
+ # [1]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html#Snapshots.Exporting.GrantAccess
331
+ # [2]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Snapshots.Exporting.html
332
+ # @return [Types::CopySnapshotResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
333
+ #
334
+ # * {Types::CopySnapshotResult#snapshot #Snapshot} => Types::Snapshot
335
+ #
336
+ # @example Request syntax with placeholder values
337
+ # resp = client.copy_snapshot({
338
+ # source_snapshot_name: "String", # required
339
+ # target_snapshot_name: "String", # required
340
+ # target_bucket: "String",
341
+ # })
342
+ #
343
+ # @example Response structure
344
+ # resp.snapshot.snapshot_name #=> String
345
+ # resp.snapshot.replication_group_id #=> String
346
+ # resp.snapshot.replication_group_description #=> String
347
+ # resp.snapshot.cache_cluster_id #=> String
348
+ # resp.snapshot.snapshot_status #=> String
349
+ # resp.snapshot.snapshot_source #=> String
350
+ # resp.snapshot.cache_node_type #=> String
351
+ # resp.snapshot.engine #=> String
352
+ # resp.snapshot.engine_version #=> String
353
+ # resp.snapshot.num_cache_nodes #=> Integer
354
+ # resp.snapshot.preferred_availability_zone #=> String
355
+ # resp.snapshot.cache_cluster_create_time #=> Time
356
+ # resp.snapshot.preferred_maintenance_window #=> String
357
+ # resp.snapshot.topic_arn #=> String
358
+ # resp.snapshot.port #=> Integer
359
+ # resp.snapshot.cache_parameter_group_name #=> String
360
+ # resp.snapshot.cache_subnet_group_name #=> String
361
+ # resp.snapshot.vpc_id #=> String
362
+ # resp.snapshot.auto_minor_version_upgrade #=> Boolean
363
+ # resp.snapshot.snapshot_retention_limit #=> Integer
364
+ # resp.snapshot.snapshot_window #=> String
365
+ # resp.snapshot.num_node_groups #=> Integer
366
+ # resp.snapshot.automatic_failover #=> String, one of "enabled", "disabled", "enabling", "disabling"
367
+ # resp.snapshot.node_snapshots #=> Array
368
+ # resp.snapshot.node_snapshots[0].cache_cluster_id #=> String
369
+ # resp.snapshot.node_snapshots[0].node_group_id #=> String
370
+ # resp.snapshot.node_snapshots[0].cache_node_id #=> String
371
+ # resp.snapshot.node_snapshots[0].node_group_configuration.slots #=> String
372
+ # resp.snapshot.node_snapshots[0].node_group_configuration.replica_count #=> Integer
373
+ # resp.snapshot.node_snapshots[0].node_group_configuration.primary_availability_zone #=> String
374
+ # resp.snapshot.node_snapshots[0].node_group_configuration.replica_availability_zones #=> Array
375
+ # resp.snapshot.node_snapshots[0].node_group_configuration.replica_availability_zones[0] #=> String
376
+ # resp.snapshot.node_snapshots[0].cache_size #=> String
377
+ # resp.snapshot.node_snapshots[0].cache_node_create_time #=> Time
378
+ # resp.snapshot.node_snapshots[0].snapshot_create_time #=> Time
379
+ # @overload copy_snapshot(params = {})
380
+ # @param [Hash] params ({})
381
+ def copy_snapshot(params = {}, options = {})
382
+ req = build_request(:copy_snapshot, params)
383
+ req.send_request(options)
384
+ end
385
+
386
+ # Creates a cache cluster. All nodes in the cache cluster run the same
387
+ # protocol-compliant cache engine software, either Memcached or Redis.
388
+ #
389
+ # Due to current limitations on Redis (cluster mode disabled), this
390
+ # operation or parameter is not supported on Redis (cluster mode
391
+ # enabled) replication groups.
392
+ # @option params [required, String] :cache_cluster_id
393
+ # The node group (shard) identifier. This parameter is stored as a
394
+ # lowercase string.
395
+ #
396
+ # **Constraints:**
397
+ #
398
+ # * A name must contain from 1 to 20 alphanumeric characters or hyphens.
399
+ #
400
+ # * The first character must be a letter.
401
+ #
402
+ # * A name cannot end with a hyphen or contain two consecutive hyphens.
403
+ # @option params [String] :replication_group_id
404
+ # Due to current limitations on Redis (cluster mode disabled), this
405
+ # operation or parameter is not supported on Redis (cluster mode
406
+ # enabled) replication groups.
407
+ #
408
+ # The ID of the replication group to which this cache cluster should
409
+ # belong. If this parameter is specified, the cache cluster is added to
410
+ # the specified replication group as a read replica; otherwise, the
411
+ # cache cluster is a standalone primary that is not part of any
412
+ # replication group.
413
+ #
414
+ # If the specified replication group is Multi-AZ enabled and the
415
+ # Availability Zone is not specified, the cache cluster is created in
416
+ # Availability Zones that provide the best spread of read replicas
417
+ # across Availability Zones.
418
+ #
419
+ # <note markdown="1"> This parameter is only valid if the `Engine` parameter is `redis`.
420
+ #
421
+ # </note>
422
+ # @option params [String] :az_mode
423
+ # Specifies whether the nodes in this Memcached cluster are created in a
424
+ # single Availability Zone or created across multiple Availability Zones
425
+ # in the cluster's region.
426
+ #
427
+ # This parameter is only supported for Memcached cache clusters.
428
+ #
429
+ # If the `AZMode` and `PreferredAvailabilityZones` are not specified,
430
+ # ElastiCache assumes `single-az` mode.
431
+ # @option params [String] :preferred_availability_zone
432
+ # The EC2 Availability Zone in which the cache cluster is created.
433
+ #
434
+ # All nodes belonging to this Memcached cache cluster are placed in the
435
+ # preferred Availability Zone. If you want to create your nodes across
436
+ # multiple Availability Zones, use `PreferredAvailabilityZones`.
437
+ #
438
+ # Default: System chosen Availability Zone.
439
+ # @option params [Array<String>] :preferred_availability_zones
440
+ # A list of the Availability Zones in which cache nodes are created. The
441
+ # order of the zones in the list is not important.
442
+ #
443
+ # This option is only supported on Memcached.
444
+ #
445
+ # <note markdown="1"> If you are creating your cache cluster in an Amazon VPC (recommended)
446
+ # you can only locate nodes in Availability Zones that are associated
447
+ # with the subnets in the selected subnet group.
448
+ #
449
+ # The number of Availability Zones listed must equal the value of
450
+ # `NumCacheNodes`.
451
+ #
452
+ # </note>
453
+ #
454
+ # If you want all the nodes in the same Availability Zone, use
455
+ # `PreferredAvailabilityZone` instead, or repeat the Availability Zone
456
+ # multiple times in the list.
457
+ #
458
+ # Default: System chosen Availability Zones.
459
+ # @option params [Integer] :num_cache_nodes
460
+ # The initial number of cache nodes that the cache cluster has.
461
+ #
462
+ # For clusters running Redis, this value must be 1. For clusters running
463
+ # Memcached, this value must be between 1 and 20.
464
+ #
465
+ # If you need more than 20 nodes for your Memcached cluster, please fill
466
+ # out the ElastiCache Limit Increase Request form at
467
+ # [http://aws.amazon.com/contact-us/elasticache-node-limit-request/][1].
468
+ #
469
+ #
470
+ #
471
+ # [1]: http://aws.amazon.com/contact-us/elasticache-node-limit-request/
472
+ # @option params [String] :cache_node_type
473
+ # The compute and memory capacity of the nodes in the node group
474
+ # (shard).
475
+ #
476
+ # Valid node types are as follows:
477
+ #
478
+ # * General purpose:
479
+ #
480
+ # * Current generation: `cache.t2.micro`, `cache.t2.small`,
481
+ # `cache.t2.medium`, `cache.m3.medium`, `cache.m3.large`,
482
+ # `cache.m3.xlarge`, `cache.m3.2xlarge`, `cache.m4.large`,
483
+ # `cache.m4.xlarge`, `cache.m4.2xlarge`, `cache.m4.4xlarge`,
484
+ # `cache.m4.10xlarge`
485
+ #
486
+ # * Previous generation: `cache.t1.micro`, `cache.m1.small`,
487
+ # `cache.m1.medium`, `cache.m1.large`, `cache.m1.xlarge`
488
+ #
489
+ # * Compute optimized: `cache.c1.xlarge`
490
+ #
491
+ # * Memory optimized:
492
+ #
493
+ # * Current generation: `cache.r3.large`, `cache.r3.xlarge`,
494
+ # `cache.r3.2xlarge`, `cache.r3.4xlarge`, `cache.r3.8xlarge`
495
+ #
496
+ # * Previous generation: `cache.m2.xlarge`, `cache.m2.2xlarge`,
497
+ # `cache.m2.4xlarge`
498
+ #
499
+ # **Notes:**
500
+ #
501
+ # * All T2 instances are created in an Amazon Virtual Private Cloud
502
+ # (Amazon VPC).
503
+ #
504
+ # * Redis backup/restore is not supported for Redis (cluster mode
505
+ # disabled) T1 and T2 instances. Backup/restore is supported on Redis
506
+ # (cluster mode enabled) T2 instances.
507
+ #
508
+ # * Redis Append-only files (AOF) functionality is not supported for T1
509
+ # or T2 instances.
510
+ #
511
+ # For a complete listing of node types and specifications, see [Amazon
512
+ # ElastiCache Product Features and Details][1] and either [Cache Node
513
+ # Type-Specific Parameters for Memcached][2] or [Cache Node
514
+ # Type-Specific Parameters for Redis][3].
515
+ #
516
+ #
517
+ #
518
+ # [1]: http://aws.amazon.com/elasticache/details
519
+ # [2]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific
520
+ # [3]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific
521
+ # @option params [String] :engine
522
+ # The name of the cache engine to be used for this cache cluster.
523
+ #
524
+ # Valid values for this parameter are: `memcached` \| `redis`
525
+ # @option params [String] :engine_version
526
+ # The version number of the cache engine to be used for this cache
527
+ # cluster. To view the supported cache engine versions, use the
528
+ # DescribeCacheEngineVersions operation.
529
+ #
530
+ # **Important:** You can upgrade to a newer engine version (see
531
+ # [Selecting a Cache Engine and Version][1]), but you cannot downgrade
532
+ # to an earlier engine version. If you want to use an earlier engine
533
+ # version, you must delete the existing cache cluster or replication
534
+ # group and create it anew with the earlier engine version.
535
+ #
536
+ #
537
+ #
538
+ # [1]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement
539
+ # @option params [String] :cache_parameter_group_name
540
+ # The name of the parameter group to associate with this cache cluster.
541
+ # If this argument is omitted, the default parameter group for the
542
+ # specified engine is used. You cannot use any parameter group which has
543
+ # `cluster-enabled='yes'` when creating a cluster.
544
+ # @option params [String] :cache_subnet_group_name
545
+ # The name of the subnet group to be used for the cache cluster.
546
+ #
547
+ # Use this parameter only when you are creating a cache cluster in an
548
+ # Amazon Virtual Private Cloud (Amazon VPC).
549
+ #
550
+ # If you're going to launch your cluster in an Amazon VPC, you need to
551
+ # create a subnet group before you start creating a cluster. For more
552
+ # information, see [Subnets and Subnet Groups][1].
553
+ #
554
+ #
555
+ #
556
+ # [1]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SubnetGroups.html
557
+ # @option params [Array<String>] :cache_security_group_names
558
+ # A list of security group names to associate with this cache cluster.
559
+ #
560
+ # Use this parameter only when you are creating a cache cluster outside
561
+ # of an Amazon Virtual Private Cloud (Amazon VPC).
562
+ # @option params [Array<String>] :security_group_ids
563
+ # One or more VPC security groups associated with the cache cluster.
564
+ #
565
+ # Use this parameter only when you are creating a cache cluster in an
566
+ # Amazon Virtual Private Cloud (Amazon VPC).
567
+ # @option params [Array<Types::Tag>] :tags
568
+ # A list of cost allocation tags to be added to this resource. A tag is
569
+ # a key-value pair. A tag key must be accompanied by a tag value.
570
+ # @option params [Array<String>] :snapshot_arns
571
+ # A single-element string list containing an Amazon Resource Name (ARN)
572
+ # that uniquely identifies a Redis RDB snapshot file stored in Amazon
573
+ # S3. The snapshot file is used to populate the node group (shard). The
574
+ # Amazon S3 object name in the ARN cannot contain any commas.
575
+ #
576
+ # <note markdown="1"> This parameter is only valid if the `Engine` parameter is `redis`.
577
+ #
578
+ # </note>
579
+ #
580
+ # Example of an Amazon S3 ARN: `arn:aws:s3:::my_bucket/snapshot1.rdb`
581
+ # @option params [String] :snapshot_name
582
+ # The name of a Redis snapshot from which to restore data into the new
583
+ # node group (shard). The snapshot status changes to `restoring` while
584
+ # the new node group (shard) is being created.
585
+ #
586
+ # <note markdown="1"> This parameter is only valid if the `Engine` parameter is `redis`.
587
+ #
588
+ # </note>
589
+ # @option params [String] :preferred_maintenance_window
590
+ # Specifies the weekly time range during which maintenance on the cache
591
+ # cluster is performed. It is specified as a range in the format
592
+ # ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance
593
+ # window is a 60 minute period. Valid values for `ddd` are:
594
+ #
595
+ # Specifies the weekly time range during which maintenance on the
596
+ # cluster is performed. It is specified as a range in the format
597
+ # ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance
598
+ # window is a 60 minute period.
599
+ #
600
+ # Valid values for `ddd` are:
601
+ #
602
+ # * `sun`
603
+ #
604
+ # * `mon`
605
+ #
606
+ # * `tue`
607
+ #
608
+ # * `wed`
609
+ #
610
+ # * `thu`
611
+ #
612
+ # * `fri`
613
+ #
614
+ # * `sat`
615
+ #
616
+ # Example: `sun:23:00-mon:01:30`
617
+ # @option params [Integer] :port
618
+ # The port number on which each of the cache nodes accepts connections.
619
+ # @option params [String] :notification_topic_arn
620
+ # The Amazon Resource Name (ARN) of the Amazon Simple Notification
621
+ # Service (SNS) topic to which notifications are sent.
622
+ #
623
+ # <note markdown="1"> The Amazon SNS topic owner must be the same as the cache cluster
624
+ # owner.
625
+ #
626
+ # </note>
627
+ # @option params [Boolean] :auto_minor_version_upgrade
628
+ # This parameter is currently disabled.
629
+ # @option params [Integer] :snapshot_retention_limit
630
+ # The number of days for which ElastiCache retains automatic snapshots
631
+ # before deleting them. For example, if you set `SnapshotRetentionLimit`
632
+ # to 5, a snapshot taken today is retained for 5 days before being
633
+ # deleted.
634
+ #
635
+ # <note markdown="1"> This parameter is only valid if the `Engine` parameter is `redis`.
636
+ #
637
+ # </note>
638
+ #
639
+ # Default: 0 (i.e., automatic backups are disabled for this cache
640
+ # cluster).
641
+ # @option params [String] :snapshot_window
642
+ # The daily time range (in UTC) during which ElastiCache begins taking a
643
+ # daily snapshot of your node group (shard).
644
+ #
645
+ # Example: `05:00-09:00`
646
+ #
647
+ # If you do not specify this parameter, ElastiCache automatically
648
+ # chooses an appropriate time range.
649
+ #
650
+ # **Note:** This parameter is only valid if the `Engine` parameter is
651
+ # `redis`.
652
+ # @option params [String] :auth_token
653
+ # The password used to access a password protected server.
654
+ #
655
+ # Password constraints:
656
+ #
657
+ # * Must be only printable ASCII characters.
658
+ #
659
+ # * Must be at least 16 characters and no more than 128 characters in
660
+ # length.
661
+ #
662
+ # * Cannot contain any of the following characters: '/', '"', or
663
+ # "@".
664
+ #
665
+ # For more information, see [AUTH password][1] at Redis.
666
+ #
667
+ #
668
+ #
669
+ # [1]: http://redis.io/commands/AUTH
670
+ # @return [Types::CreateCacheClusterResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
671
+ #
672
+ # * {Types::CreateCacheClusterResult#cache_cluster #CacheCluster} => Types::CacheCluster
673
+ #
674
+ # @example Request syntax with placeholder values
675
+ # resp = client.create_cache_cluster({
676
+ # cache_cluster_id: "String", # required
677
+ # replication_group_id: "String",
678
+ # az_mode: "single-az", # accepts single-az, cross-az
679
+ # preferred_availability_zone: "String",
680
+ # preferred_availability_zones: ["String"],
681
+ # num_cache_nodes: 1,
682
+ # cache_node_type: "String",
683
+ # engine: "String",
684
+ # engine_version: "String",
685
+ # cache_parameter_group_name: "String",
686
+ # cache_subnet_group_name: "String",
687
+ # cache_security_group_names: ["String"],
688
+ # security_group_ids: ["String"],
689
+ # tags: [
690
+ # {
691
+ # key: "String",
692
+ # value: "String",
693
+ # },
694
+ # ],
695
+ # snapshot_arns: ["String"],
696
+ # snapshot_name: "String",
697
+ # preferred_maintenance_window: "String",
698
+ # port: 1,
699
+ # notification_topic_arn: "String",
700
+ # auto_minor_version_upgrade: false,
701
+ # snapshot_retention_limit: 1,
702
+ # snapshot_window: "String",
703
+ # auth_token: "String",
704
+ # })
705
+ #
706
+ # @example Response structure
707
+ # resp.cache_cluster.cache_cluster_id #=> String
708
+ # resp.cache_cluster.configuration_endpoint.address #=> String
709
+ # resp.cache_cluster.configuration_endpoint.port #=> Integer
710
+ # resp.cache_cluster.client_download_landing_page #=> String
711
+ # resp.cache_cluster.cache_node_type #=> String
712
+ # resp.cache_cluster.engine #=> String
713
+ # resp.cache_cluster.engine_version #=> String
714
+ # resp.cache_cluster.cache_cluster_status #=> String
715
+ # resp.cache_cluster.num_cache_nodes #=> Integer
716
+ # resp.cache_cluster.preferred_availability_zone #=> String
717
+ # resp.cache_cluster.cache_cluster_create_time #=> Time
718
+ # resp.cache_cluster.preferred_maintenance_window #=> String
719
+ # resp.cache_cluster.pending_modified_values.num_cache_nodes #=> Integer
720
+ # resp.cache_cluster.pending_modified_values.cache_node_ids_to_remove #=> Array
721
+ # resp.cache_cluster.pending_modified_values.cache_node_ids_to_remove[0] #=> String
722
+ # resp.cache_cluster.pending_modified_values.engine_version #=> String
723
+ # resp.cache_cluster.pending_modified_values.cache_node_type #=> String
724
+ # resp.cache_cluster.notification_configuration.topic_arn #=> String
725
+ # resp.cache_cluster.notification_configuration.topic_status #=> String
726
+ # resp.cache_cluster.cache_security_groups #=> Array
727
+ # resp.cache_cluster.cache_security_groups[0].cache_security_group_name #=> String
728
+ # resp.cache_cluster.cache_security_groups[0].status #=> String
729
+ # resp.cache_cluster.cache_parameter_group.cache_parameter_group_name #=> String
730
+ # resp.cache_cluster.cache_parameter_group.parameter_apply_status #=> String
731
+ # resp.cache_cluster.cache_parameter_group.cache_node_ids_to_reboot #=> Array
732
+ # resp.cache_cluster.cache_parameter_group.cache_node_ids_to_reboot[0] #=> String
733
+ # resp.cache_cluster.cache_subnet_group_name #=> String
734
+ # resp.cache_cluster.cache_nodes #=> Array
735
+ # resp.cache_cluster.cache_nodes[0].cache_node_id #=> String
736
+ # resp.cache_cluster.cache_nodes[0].cache_node_status #=> String
737
+ # resp.cache_cluster.cache_nodes[0].cache_node_create_time #=> Time
738
+ # resp.cache_cluster.cache_nodes[0].endpoint.address #=> String
739
+ # resp.cache_cluster.cache_nodes[0].endpoint.port #=> Integer
740
+ # resp.cache_cluster.cache_nodes[0].parameter_group_status #=> String
741
+ # resp.cache_cluster.cache_nodes[0].source_cache_node_id #=> String
742
+ # resp.cache_cluster.cache_nodes[0].customer_availability_zone #=> String
743
+ # resp.cache_cluster.auto_minor_version_upgrade #=> Boolean
744
+ # resp.cache_cluster.security_groups #=> Array
745
+ # resp.cache_cluster.security_groups[0].security_group_id #=> String
746
+ # resp.cache_cluster.security_groups[0].status #=> String
747
+ # resp.cache_cluster.replication_group_id #=> String
748
+ # resp.cache_cluster.snapshot_retention_limit #=> Integer
749
+ # resp.cache_cluster.snapshot_window #=> String
750
+ # @overload create_cache_cluster(params = {})
751
+ # @param [Hash] params ({})
752
+ def create_cache_cluster(params = {}, options = {})
753
+ req = build_request(:create_cache_cluster, params)
754
+ req.send_request(options)
755
+ end
756
+
757
+ # Creates a new cache parameter group. A cache parameter group is a
758
+ # collection of parameters that you apply to all of the nodes in a cache
759
+ # cluster.
760
+ # @option params [required, String] :cache_parameter_group_name
761
+ # A user-specified name for the cache parameter group.
762
+ # @option params [required, String] :cache_parameter_group_family
763
+ # The name of the cache parameter group family that the cache parameter
764
+ # group can be used with.
765
+ #
766
+ # Valid values are: `memcached1.4` \| `redis2.6` \| `redis2.8` \|
767
+ # `redis3.2`
768
+ # @option params [required, String] :description
769
+ # A user-specified description for the cache parameter group.
770
+ # @return [Types::CreateCacheParameterGroupResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
771
+ #
772
+ # * {Types::CreateCacheParameterGroupResult#cache_parameter_group #CacheParameterGroup} => Types::CacheParameterGroup
773
+ #
774
+ # @example Request syntax with placeholder values
775
+ # resp = client.create_cache_parameter_group({
776
+ # cache_parameter_group_name: "String", # required
777
+ # cache_parameter_group_family: "String", # required
778
+ # description: "String", # required
779
+ # })
780
+ #
781
+ # @example Response structure
782
+ # resp.cache_parameter_group.cache_parameter_group_name #=> String
783
+ # resp.cache_parameter_group.cache_parameter_group_family #=> String
784
+ # resp.cache_parameter_group.description #=> String
785
+ # @overload create_cache_parameter_group(params = {})
786
+ # @param [Hash] params ({})
787
+ def create_cache_parameter_group(params = {}, options = {})
788
+ req = build_request(:create_cache_parameter_group, params)
789
+ req.send_request(options)
790
+ end
791
+
792
+ # Creates a new cache security group. Use a cache security group to
793
+ # control access to one or more cache clusters.
794
+ #
795
+ # Cache security groups are only used when you are creating a cache
796
+ # cluster outside of an Amazon Virtual Private Cloud (Amazon VPC). If
797
+ # you are creating a cache cluster inside of a VPC, use a cache subnet
798
+ # group instead. For more information, see [CreateCacheSubnetGroup][1].
799
+ #
800
+ #
801
+ #
802
+ # [1]: http://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateCacheSubnetGroup.html
803
+ # @option params [required, String] :cache_security_group_name
804
+ # A name for the cache security group. This value is stored as a
805
+ # lowercase string.
806
+ #
807
+ # Constraints: Must contain no more than 255 alphanumeric characters.
808
+ # Cannot be the word "Default".
809
+ #
810
+ # Example: `mysecuritygroup`
811
+ # @option params [required, String] :description
812
+ # A description for the cache security group.
813
+ # @return [Types::CreateCacheSecurityGroupResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
814
+ #
815
+ # * {Types::CreateCacheSecurityGroupResult#cache_security_group #CacheSecurityGroup} => Types::CacheSecurityGroup
816
+ #
817
+ # @example Request syntax with placeholder values
818
+ # resp = client.create_cache_security_group({
819
+ # cache_security_group_name: "String", # required
820
+ # description: "String", # required
821
+ # })
822
+ #
823
+ # @example Response structure
824
+ # resp.cache_security_group.owner_id #=> String
825
+ # resp.cache_security_group.cache_security_group_name #=> String
826
+ # resp.cache_security_group.description #=> String
827
+ # resp.cache_security_group.ec2_security_groups #=> Array
828
+ # resp.cache_security_group.ec2_security_groups[0].status #=> String
829
+ # resp.cache_security_group.ec2_security_groups[0].ec2_security_group_name #=> String
830
+ # resp.cache_security_group.ec2_security_groups[0].ec2_security_group_owner_id #=> String
831
+ # @overload create_cache_security_group(params = {})
832
+ # @param [Hash] params ({})
833
+ def create_cache_security_group(params = {}, options = {})
834
+ req = build_request(:create_cache_security_group, params)
835
+ req.send_request(options)
836
+ end
837
+
838
+ # Creates a new cache subnet group.
839
+ #
840
+ # Use this parameter only when you are creating a cluster in an Amazon
841
+ # Virtual Private Cloud (Amazon VPC).
842
+ # @option params [required, String] :cache_subnet_group_name
843
+ # A name for the cache subnet group. This value is stored as a lowercase
844
+ # string.
845
+ #
846
+ # Constraints: Must contain no more than 255 alphanumeric characters or
847
+ # hyphens.
848
+ #
849
+ # Example: `mysubnetgroup`
850
+ # @option params [required, String] :cache_subnet_group_description
851
+ # A description for the cache subnet group.
852
+ # @option params [required, Array<String>] :subnet_ids
853
+ # A list of VPC subnet IDs for the cache subnet group.
854
+ # @return [Types::CreateCacheSubnetGroupResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
855
+ #
856
+ # * {Types::CreateCacheSubnetGroupResult#cache_subnet_group #CacheSubnetGroup} => Types::CacheSubnetGroup
857
+ #
858
+ # @example Request syntax with placeholder values
859
+ # resp = client.create_cache_subnet_group({
860
+ # cache_subnet_group_name: "String", # required
861
+ # cache_subnet_group_description: "String", # required
862
+ # subnet_ids: ["String"], # required
863
+ # })
864
+ #
865
+ # @example Response structure
866
+ # resp.cache_subnet_group.cache_subnet_group_name #=> String
867
+ # resp.cache_subnet_group.cache_subnet_group_description #=> String
868
+ # resp.cache_subnet_group.vpc_id #=> String
869
+ # resp.cache_subnet_group.subnets #=> Array
870
+ # resp.cache_subnet_group.subnets[0].subnet_identifier #=> String
871
+ # resp.cache_subnet_group.subnets[0].subnet_availability_zone.name #=> String
872
+ # @overload create_cache_subnet_group(params = {})
873
+ # @param [Hash] params ({})
874
+ def create_cache_subnet_group(params = {}, options = {})
875
+ req = build_request(:create_cache_subnet_group, params)
876
+ req.send_request(options)
877
+ end
878
+
879
+ # Creates a Redis (cluster mode disabled) or a Redis (cluster mode
880
+ # enabled) replication group.
881
+ #
882
+ # A Redis (cluster mode disabled) replication group is a collection of
883
+ # cache clusters, where one of the cache clusters is a read/write
884
+ # primary and the others are read-only replicas. Writes to the primary
885
+ # are asynchronously propagated to the replicas.
886
+ #
887
+ # A Redis (cluster mode enabled) replication group is a collection of 1
888
+ # to 15 node groups (shards). Each node group (shard) has one read/write
889
+ # primary node and up to 5 read-only replica nodes. Writes to the
890
+ # primary are asynchronously propagated to the replicas. Redis (cluster
891
+ # mode enabled) replication groups partition the data across node groups
892
+ # (shards).
893
+ #
894
+ # When a Redis (cluster mode disabled) replication group has been
895
+ # successfully created, you can add one or more read replicas to it, up
896
+ # to a total of 5 read replicas. You cannot alter a Redis (cluster mode
897
+ # enabled) replication group after it has been created.
898
+ #
899
+ # <note markdown="1"> This operation is valid for Redis only.
900
+ #
901
+ # </note>
902
+ # @option params [required, String] :replication_group_id
903
+ # The replication group identifier. This parameter is stored as a
904
+ # lowercase string.
905
+ #
906
+ # Constraints:
907
+ #
908
+ # * A name must contain from 1 to 20 alphanumeric characters or hyphens.
909
+ #
910
+ # * The first character must be a letter.
911
+ #
912
+ # * A name cannot end with a hyphen or contain two consecutive hyphens.
913
+ # @option params [required, String] :replication_group_description
914
+ # A user-created description for the replication group.
915
+ # @option params [String] :primary_cluster_id
916
+ # The identifier of the cache cluster that serves as the primary for
917
+ # this replication group. This cache cluster must already exist and have
918
+ # a status of `available`.
919
+ #
920
+ # This parameter is not required if `NumCacheClusters`, `NumNodeGroups`,
921
+ # or `ReplicasPerNodeGroup` is specified.
922
+ # @option params [Boolean] :automatic_failover_enabled
923
+ # Specifies whether a read-only replica is automatically promoted to
924
+ # read/write primary if the existing primary fails.
925
+ #
926
+ # If `true`, Multi-AZ is enabled for this replication group. If `false`,
927
+ # Multi-AZ is disabled for this replication group.
928
+ #
929
+ # `AutomaticFailoverEnabled` must be enabled for Redis (cluster mode
930
+ # enabled) replication groups.
931
+ #
932
+ # Default: false
933
+ #
934
+ # <note markdown="1"> ElastiCache Multi-AZ replication groups is not supported on:
935
+ #
936
+ # * Redis versions earlier than 2.8.6.
937
+ #
938
+ # * Redis (cluster mode disabled): T1 and T2 node types.
939
+ #
940
+ # Redis (cluster mode enabled): T2 node types.
941
+ #
942
+ # </note>
943
+ # @option params [Integer] :num_cache_clusters
944
+ # The number of clusters this replication group initially has.
945
+ #
946
+ # This parameter is not used if there is more than one node group
947
+ # (shard). You should use `ReplicasPerNodeGroup` instead.
948
+ #
949
+ # If `Multi-AZ` is `enabled`, the value of this parameter must be at
950
+ # least 2.
951
+ #
952
+ # The maximum permitted value for `NumCacheClusters` is 6 (primary plus
953
+ # 5 replicas).
954
+ # @option params [Array<String>] :preferred_cache_cluster_a_zs
955
+ # A list of EC2 Availability Zones in which the replication group's
956
+ # cache clusters are created. The order of the Availability Zones in the
957
+ # list is the order in which clusters are allocated. The primary cluster
958
+ # is created in the first AZ in the list.
959
+ #
960
+ # This parameter is not used if there is more than one node group
961
+ # (shard). You should use `NodeGroupConfiguration` instead.
962
+ #
963
+ # <note markdown="1"> If you are creating your replication group in an Amazon VPC
964
+ # (recommended), you can only locate cache clusters in Availability
965
+ # Zones associated with the subnets in the selected subnet group.
966
+ #
967
+ # The number of Availability Zones listed must equal the value of
968
+ # `NumCacheClusters`.
969
+ #
970
+ # </note>
971
+ #
972
+ # Default: system chosen Availability Zones.
973
+ # @option params [Integer] :num_node_groups
974
+ # An optional parameter that specifies the number of node groups
975
+ # (shards) for this Redis (cluster mode enabled) replication group. For
976
+ # Redis (cluster mode disabled) either omit this parameter or set it to
977
+ # 1.
978
+ #
979
+ # Default: 1
980
+ # @option params [Integer] :replicas_per_node_group
981
+ # An optional parameter that specifies the number of replica nodes in
982
+ # each node group (shard). Valid values are 0 to 5.
983
+ # @option params [Array<Types::NodeGroupConfiguration>] :node_group_configuration
984
+ # A list of node group (shard) configuration options. Each node group
985
+ # (shard) configuration has the following: Slots,
986
+ # PrimaryAvailabilityZone, ReplicaAvailabilityZones, ReplicaCount.
987
+ #
988
+ # If you're creating a Redis (cluster mode disabled) or a Redis
989
+ # (cluster mode enabled) replication group, you can use this parameter
990
+ # to configure one node group (shard) or you can omit this parameter.
991
+ # @option params [String] :cache_node_type
992
+ # The compute and memory capacity of the nodes in the node group
993
+ # (shard).
994
+ #
995
+ # Valid node types are as follows:
996
+ #
997
+ # * General purpose:
998
+ #
999
+ # * Current generation: `cache.t2.micro`, `cache.t2.small`,
1000
+ # `cache.t2.medium`, `cache.m3.medium`, `cache.m3.large`,
1001
+ # `cache.m3.xlarge`, `cache.m3.2xlarge`, `cache.m4.large`,
1002
+ # `cache.m4.xlarge`, `cache.m4.2xlarge`, `cache.m4.4xlarge`,
1003
+ # `cache.m4.10xlarge`
1004
+ #
1005
+ # * Previous generation: `cache.t1.micro`, `cache.m1.small`,
1006
+ # `cache.m1.medium`, `cache.m1.large`, `cache.m1.xlarge`
1007
+ #
1008
+ # * Compute optimized: `cache.c1.xlarge`
1009
+ #
1010
+ # * Memory optimized:
1011
+ #
1012
+ # * Current generation: `cache.r3.large`, `cache.r3.xlarge`,
1013
+ # `cache.r3.2xlarge`, `cache.r3.4xlarge`, `cache.r3.8xlarge`
1014
+ #
1015
+ # * Previous generation: `cache.m2.xlarge`, `cache.m2.2xlarge`,
1016
+ # `cache.m2.4xlarge`
1017
+ #
1018
+ # **Notes:**
1019
+ #
1020
+ # * All T2 instances are created in an Amazon Virtual Private Cloud
1021
+ # (Amazon VPC).
1022
+ #
1023
+ # * Redis backup/restore is not supported for Redis (cluster mode
1024
+ # disabled) T1 and T2 instances. Backup/restore is supported on Redis
1025
+ # (cluster mode enabled) T2 instances.
1026
+ #
1027
+ # * Redis Append-only files (AOF) functionality is not supported for T1
1028
+ # or T2 instances.
1029
+ #
1030
+ # For a complete listing of node types and specifications, see [Amazon
1031
+ # ElastiCache Product Features and Details][1] and either [Cache Node
1032
+ # Type-Specific Parameters for Memcached][2] or [Cache Node
1033
+ # Type-Specific Parameters for Redis][3].
1034
+ #
1035
+ #
1036
+ #
1037
+ # [1]: http://aws.amazon.com/elasticache/details
1038
+ # [2]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific
1039
+ # [3]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific
1040
+ # @option params [String] :engine
1041
+ # The name of the cache engine to be used for the cache clusters in this
1042
+ # replication group.
1043
+ # @option params [String] :engine_version
1044
+ # The version number of the cache engine to be used for the cache
1045
+ # clusters in this replication group. To view the supported cache engine
1046
+ # versions, use the `DescribeCacheEngineVersions` operation.
1047
+ #
1048
+ # **Important:** You can upgrade to a newer engine version (see
1049
+ # [Selecting a Cache Engine and Version][1]) in the *ElastiCache User
1050
+ # Guide*, but you cannot downgrade to an earlier engine version. If you
1051
+ # want to use an earlier engine version, you must delete the existing
1052
+ # cache cluster or replication group and create it anew with the earlier
1053
+ # engine version.
1054
+ #
1055
+ #
1056
+ #
1057
+ # [1]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement
1058
+ # @option params [String] :cache_parameter_group_name
1059
+ # The name of the parameter group to associate with this replication
1060
+ # group. If this argument is omitted, the default cache parameter group
1061
+ # for the specified engine is used.
1062
+ #
1063
+ # If you are running Redis version 3.2.4 or later, only one node group
1064
+ # (shard), and want to use a default parameter group, we recommend that
1065
+ # you specify the parameter group by name.
1066
+ #
1067
+ # * To create a Redis (cluster mode disabled) replication group, use
1068
+ # `CacheParameterGroupName=default.redis3.2`.
1069
+ #
1070
+ # * To create a Redis (cluster mode enabled) replication group, use
1071
+ # `CacheParameterGroupName=default.redis3.2.cluster.on`.
1072
+ # @option params [String] :cache_subnet_group_name
1073
+ # The name of the cache subnet group to be used for the replication
1074
+ # group.
1075
+ #
1076
+ # If you're going to launch your cluster in an Amazon VPC, you need to
1077
+ # create a subnet group before you start creating a cluster. For more
1078
+ # information, see [Subnets and Subnet Groups][1].
1079
+ #
1080
+ #
1081
+ #
1082
+ # [1]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SubnetGroups.html
1083
+ # @option params [Array<String>] :cache_security_group_names
1084
+ # A list of cache security group names to associate with this
1085
+ # replication group.
1086
+ # @option params [Array<String>] :security_group_ids
1087
+ # One or more Amazon VPC security groups associated with this
1088
+ # replication group.
1089
+ #
1090
+ # Use this parameter only when you are creating a replication group in
1091
+ # an Amazon Virtual Private Cloud (Amazon VPC).
1092
+ # @option params [Array<Types::Tag>] :tags
1093
+ # A list of cost allocation tags to be added to this resource. A tag is
1094
+ # a key-value pair. A tag key must be accompanied by a tag value.
1095
+ # @option params [Array<String>] :snapshot_arns
1096
+ # A list of Amazon Resource Names (ARN) that uniquely identify the Redis
1097
+ # RDB snapshot files stored in Amazon S3. The snapshot files are used to
1098
+ # populate the replication group. The Amazon S3 object name in the ARN
1099
+ # cannot contain any commas. The list must match the number of node
1100
+ # groups (shards) in the replication group, which means you cannot
1101
+ # repartition.
1102
+ #
1103
+ # <note markdown="1"> This parameter is only valid if the `Engine` parameter is `redis`.
1104
+ #
1105
+ # </note>
1106
+ #
1107
+ # Example of an Amazon S3 ARN: `arn:aws:s3:::my_bucket/snapshot1.rdb`
1108
+ # @option params [String] :snapshot_name
1109
+ # The name of a snapshot from which to restore data into the new
1110
+ # replication group. The snapshot status changes to `restoring` while
1111
+ # the new replication group is being created.
1112
+ #
1113
+ # <note markdown="1"> This parameter is only valid if the `Engine` parameter is `redis`.
1114
+ #
1115
+ # </note>
1116
+ # @option params [String] :preferred_maintenance_window
1117
+ # Specifies the weekly time range during which maintenance on the cache
1118
+ # cluster is performed. It is specified as a range in the format
1119
+ # ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance
1120
+ # window is a 60 minute period. Valid values for `ddd` are:
1121
+ #
1122
+ # Specifies the weekly time range during which maintenance on the
1123
+ # cluster is performed. It is specified as a range in the format
1124
+ # ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance
1125
+ # window is a 60 minute period.
1126
+ #
1127
+ # Valid values for `ddd` are:
1128
+ #
1129
+ # * `sun`
1130
+ #
1131
+ # * `mon`
1132
+ #
1133
+ # * `tue`
1134
+ #
1135
+ # * `wed`
1136
+ #
1137
+ # * `thu`
1138
+ #
1139
+ # * `fri`
1140
+ #
1141
+ # * `sat`
1142
+ #
1143
+ # Example: `sun:23:00-mon:01:30`
1144
+ # @option params [Integer] :port
1145
+ # The port number on which each member of the replication group accepts
1146
+ # connections.
1147
+ # @option params [String] :notification_topic_arn
1148
+ # The Amazon Resource Name (ARN) of the Amazon Simple Notification
1149
+ # Service (SNS) topic to which notifications are sent.
1150
+ #
1151
+ # <note markdown="1"> The Amazon SNS topic owner must be the same as the cache cluster
1152
+ # owner.
1153
+ #
1154
+ # </note>
1155
+ # @option params [Boolean] :auto_minor_version_upgrade
1156
+ # This parameter is currently disabled.
1157
+ # @option params [Integer] :snapshot_retention_limit
1158
+ # The number of days for which ElastiCache retains automatic snapshots
1159
+ # before deleting them. For example, if you set `SnapshotRetentionLimit`
1160
+ # to 5, a snapshot that was taken today is retained for 5 days before
1161
+ # being deleted.
1162
+ #
1163
+ # <note markdown="1"> This parameter is only valid if the `Engine` parameter is `redis`.
1164
+ #
1165
+ # </note>
1166
+ #
1167
+ # Default: 0 (i.e., automatic backups are disabled for this cache
1168
+ # cluster).
1169
+ # @option params [String] :snapshot_window
1170
+ # The daily time range (in UTC) during which ElastiCache begins taking a
1171
+ # daily snapshot of your node group (shard).
1172
+ #
1173
+ # Example: `05:00-09:00`
1174
+ #
1175
+ # If you do not specify this parameter, ElastiCache automatically
1176
+ # chooses an appropriate time range.
1177
+ #
1178
+ # <note markdown="1"> This parameter is only valid if the `Engine` parameter is `redis`.
1179
+ #
1180
+ # </note>
1181
+ # @option params [String] :auth_token
1182
+ # The password used to access a password protected server.
1183
+ #
1184
+ # Password constraints:
1185
+ #
1186
+ # * Must be only printable ASCII characters.
1187
+ #
1188
+ # * Must be at least 16 characters and no more than 128 characters in
1189
+ # length.
1190
+ #
1191
+ # * Cannot contain any of the following characters: '/', '"', or
1192
+ # "@".
1193
+ #
1194
+ # For more information, see [AUTH password][1] at Redis.
1195
+ #
1196
+ #
1197
+ #
1198
+ # [1]: http://redis.io/commands/AUTH
1199
+ # @return [Types::CreateReplicationGroupResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1200
+ #
1201
+ # * {Types::CreateReplicationGroupResult#replication_group #ReplicationGroup} => Types::ReplicationGroup
1202
+ #
1203
+ # @example Request syntax with placeholder values
1204
+ # resp = client.create_replication_group({
1205
+ # replication_group_id: "String", # required
1206
+ # replication_group_description: "String", # required
1207
+ # primary_cluster_id: "String",
1208
+ # automatic_failover_enabled: false,
1209
+ # num_cache_clusters: 1,
1210
+ # preferred_cache_cluster_a_zs: ["String"],
1211
+ # num_node_groups: 1,
1212
+ # replicas_per_node_group: 1,
1213
+ # node_group_configuration: [
1214
+ # {
1215
+ # slots: "String",
1216
+ # replica_count: 1,
1217
+ # primary_availability_zone: "String",
1218
+ # replica_availability_zones: ["String"],
1219
+ # },
1220
+ # ],
1221
+ # cache_node_type: "String",
1222
+ # engine: "String",
1223
+ # engine_version: "String",
1224
+ # cache_parameter_group_name: "String",
1225
+ # cache_subnet_group_name: "String",
1226
+ # cache_security_group_names: ["String"],
1227
+ # security_group_ids: ["String"],
1228
+ # tags: [
1229
+ # {
1230
+ # key: "String",
1231
+ # value: "String",
1232
+ # },
1233
+ # ],
1234
+ # snapshot_arns: ["String"],
1235
+ # snapshot_name: "String",
1236
+ # preferred_maintenance_window: "String",
1237
+ # port: 1,
1238
+ # notification_topic_arn: "String",
1239
+ # auto_minor_version_upgrade: false,
1240
+ # snapshot_retention_limit: 1,
1241
+ # snapshot_window: "String",
1242
+ # auth_token: "String",
1243
+ # })
1244
+ #
1245
+ # @example Response structure
1246
+ # resp.replication_group.replication_group_id #=> String
1247
+ # resp.replication_group.description #=> String
1248
+ # resp.replication_group.status #=> String
1249
+ # resp.replication_group.pending_modified_values.primary_cluster_id #=> String
1250
+ # resp.replication_group.pending_modified_values.automatic_failover_status #=> String, one of "enabled", "disabled"
1251
+ # resp.replication_group.member_clusters #=> Array
1252
+ # resp.replication_group.member_clusters[0] #=> String
1253
+ # resp.replication_group.node_groups #=> Array
1254
+ # resp.replication_group.node_groups[0].node_group_id #=> String
1255
+ # resp.replication_group.node_groups[0].status #=> String
1256
+ # resp.replication_group.node_groups[0].primary_endpoint.address #=> String
1257
+ # resp.replication_group.node_groups[0].primary_endpoint.port #=> Integer
1258
+ # resp.replication_group.node_groups[0].slots #=> String
1259
+ # resp.replication_group.node_groups[0].node_group_members #=> Array
1260
+ # resp.replication_group.node_groups[0].node_group_members[0].cache_cluster_id #=> String
1261
+ # resp.replication_group.node_groups[0].node_group_members[0].cache_node_id #=> String
1262
+ # resp.replication_group.node_groups[0].node_group_members[0].read_endpoint.address #=> String
1263
+ # resp.replication_group.node_groups[0].node_group_members[0].read_endpoint.port #=> Integer
1264
+ # resp.replication_group.node_groups[0].node_group_members[0].preferred_availability_zone #=> String
1265
+ # resp.replication_group.node_groups[0].node_group_members[0].current_role #=> String
1266
+ # resp.replication_group.snapshotting_cluster_id #=> String
1267
+ # resp.replication_group.automatic_failover #=> String, one of "enabled", "disabled", "enabling", "disabling"
1268
+ # resp.replication_group.configuration_endpoint.address #=> String
1269
+ # resp.replication_group.configuration_endpoint.port #=> Integer
1270
+ # resp.replication_group.snapshot_retention_limit #=> Integer
1271
+ # resp.replication_group.snapshot_window #=> String
1272
+ # @overload create_replication_group(params = {})
1273
+ # @param [Hash] params ({})
1274
+ def create_replication_group(params = {}, options = {})
1275
+ req = build_request(:create_replication_group, params)
1276
+ req.send_request(options)
1277
+ end
1278
+
1279
+ # Creates a copy of an entire cache cluster or replication group at a
1280
+ # specific moment in time.
1281
+ #
1282
+ # <note markdown="1"> This operation is valid for Redis only.
1283
+ #
1284
+ # </note>
1285
+ # @option params [String] :replication_group_id
1286
+ # The identifier of an existing replication group. The snapshot is
1287
+ # created from this replication group.
1288
+ # @option params [String] :cache_cluster_id
1289
+ # The identifier of an existing cache cluster. The snapshot is created
1290
+ # from this cache cluster.
1291
+ # @option params [required, String] :snapshot_name
1292
+ # A name for the snapshot being created.
1293
+ # @return [Types::CreateSnapshotResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1294
+ #
1295
+ # * {Types::CreateSnapshotResult#snapshot #Snapshot} => Types::Snapshot
1296
+ #
1297
+ # @example Request syntax with placeholder values
1298
+ # resp = client.create_snapshot({
1299
+ # replication_group_id: "String",
1300
+ # cache_cluster_id: "String",
1301
+ # snapshot_name: "String", # required
1302
+ # })
1303
+ #
1304
+ # @example Response structure
1305
+ # resp.snapshot.snapshot_name #=> String
1306
+ # resp.snapshot.replication_group_id #=> String
1307
+ # resp.snapshot.replication_group_description #=> String
1308
+ # resp.snapshot.cache_cluster_id #=> String
1309
+ # resp.snapshot.snapshot_status #=> String
1310
+ # resp.snapshot.snapshot_source #=> String
1311
+ # resp.snapshot.cache_node_type #=> String
1312
+ # resp.snapshot.engine #=> String
1313
+ # resp.snapshot.engine_version #=> String
1314
+ # resp.snapshot.num_cache_nodes #=> Integer
1315
+ # resp.snapshot.preferred_availability_zone #=> String
1316
+ # resp.snapshot.cache_cluster_create_time #=> Time
1317
+ # resp.snapshot.preferred_maintenance_window #=> String
1318
+ # resp.snapshot.topic_arn #=> String
1319
+ # resp.snapshot.port #=> Integer
1320
+ # resp.snapshot.cache_parameter_group_name #=> String
1321
+ # resp.snapshot.cache_subnet_group_name #=> String
1322
+ # resp.snapshot.vpc_id #=> String
1323
+ # resp.snapshot.auto_minor_version_upgrade #=> Boolean
1324
+ # resp.snapshot.snapshot_retention_limit #=> Integer
1325
+ # resp.snapshot.snapshot_window #=> String
1326
+ # resp.snapshot.num_node_groups #=> Integer
1327
+ # resp.snapshot.automatic_failover #=> String, one of "enabled", "disabled", "enabling", "disabling"
1328
+ # resp.snapshot.node_snapshots #=> Array
1329
+ # resp.snapshot.node_snapshots[0].cache_cluster_id #=> String
1330
+ # resp.snapshot.node_snapshots[0].node_group_id #=> String
1331
+ # resp.snapshot.node_snapshots[0].cache_node_id #=> String
1332
+ # resp.snapshot.node_snapshots[0].node_group_configuration.slots #=> String
1333
+ # resp.snapshot.node_snapshots[0].node_group_configuration.replica_count #=> Integer
1334
+ # resp.snapshot.node_snapshots[0].node_group_configuration.primary_availability_zone #=> String
1335
+ # resp.snapshot.node_snapshots[0].node_group_configuration.replica_availability_zones #=> Array
1336
+ # resp.snapshot.node_snapshots[0].node_group_configuration.replica_availability_zones[0] #=> String
1337
+ # resp.snapshot.node_snapshots[0].cache_size #=> String
1338
+ # resp.snapshot.node_snapshots[0].cache_node_create_time #=> Time
1339
+ # resp.snapshot.node_snapshots[0].snapshot_create_time #=> Time
1340
+ # @overload create_snapshot(params = {})
1341
+ # @param [Hash] params ({})
1342
+ def create_snapshot(params = {}, options = {})
1343
+ req = build_request(:create_snapshot, params)
1344
+ req.send_request(options)
1345
+ end
1346
+
1347
+ # Deletes a previously provisioned cache cluster. `DeleteCacheCluster`
1348
+ # deletes all associated cache nodes, node endpoints and the cache
1349
+ # cluster itself. When you receive a successful response from this
1350
+ # operation, Amazon ElastiCache immediately begins deleting the cache
1351
+ # cluster; you cannot cancel or revert this operation.
1352
+ #
1353
+ # This operation cannot be used to delete a cache cluster that is the
1354
+ # last read replica of a replication group or node group (shard) that
1355
+ # has Multi-AZ mode enabled or a cache cluster from a Redis (cluster
1356
+ # mode enabled) replication group.
1357
+ #
1358
+ # Due to current limitations on Redis (cluster mode disabled), this
1359
+ # operation or parameter is not supported on Redis (cluster mode
1360
+ # enabled) replication groups.
1361
+ # @option params [required, String] :cache_cluster_id
1362
+ # The cache cluster identifier for the cluster to be deleted. This
1363
+ # parameter is not case sensitive.
1364
+ # @option params [String] :final_snapshot_identifier
1365
+ # The user-supplied name of a final cache cluster snapshot. This is the
1366
+ # unique name that identifies the snapshot. ElastiCache creates the
1367
+ # snapshot, and then deletes the cache cluster immediately afterward.
1368
+ # @return [Types::DeleteCacheClusterResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1369
+ #
1370
+ # * {Types::DeleteCacheClusterResult#cache_cluster #CacheCluster} => Types::CacheCluster
1371
+ #
1372
+ # @example Request syntax with placeholder values
1373
+ # resp = client.delete_cache_cluster({
1374
+ # cache_cluster_id: "String", # required
1375
+ # final_snapshot_identifier: "String",
1376
+ # })
1377
+ #
1378
+ # @example Response structure
1379
+ # resp.cache_cluster.cache_cluster_id #=> String
1380
+ # resp.cache_cluster.configuration_endpoint.address #=> String
1381
+ # resp.cache_cluster.configuration_endpoint.port #=> Integer
1382
+ # resp.cache_cluster.client_download_landing_page #=> String
1383
+ # resp.cache_cluster.cache_node_type #=> String
1384
+ # resp.cache_cluster.engine #=> String
1385
+ # resp.cache_cluster.engine_version #=> String
1386
+ # resp.cache_cluster.cache_cluster_status #=> String
1387
+ # resp.cache_cluster.num_cache_nodes #=> Integer
1388
+ # resp.cache_cluster.preferred_availability_zone #=> String
1389
+ # resp.cache_cluster.cache_cluster_create_time #=> Time
1390
+ # resp.cache_cluster.preferred_maintenance_window #=> String
1391
+ # resp.cache_cluster.pending_modified_values.num_cache_nodes #=> Integer
1392
+ # resp.cache_cluster.pending_modified_values.cache_node_ids_to_remove #=> Array
1393
+ # resp.cache_cluster.pending_modified_values.cache_node_ids_to_remove[0] #=> String
1394
+ # resp.cache_cluster.pending_modified_values.engine_version #=> String
1395
+ # resp.cache_cluster.pending_modified_values.cache_node_type #=> String
1396
+ # resp.cache_cluster.notification_configuration.topic_arn #=> String
1397
+ # resp.cache_cluster.notification_configuration.topic_status #=> String
1398
+ # resp.cache_cluster.cache_security_groups #=> Array
1399
+ # resp.cache_cluster.cache_security_groups[0].cache_security_group_name #=> String
1400
+ # resp.cache_cluster.cache_security_groups[0].status #=> String
1401
+ # resp.cache_cluster.cache_parameter_group.cache_parameter_group_name #=> String
1402
+ # resp.cache_cluster.cache_parameter_group.parameter_apply_status #=> String
1403
+ # resp.cache_cluster.cache_parameter_group.cache_node_ids_to_reboot #=> Array
1404
+ # resp.cache_cluster.cache_parameter_group.cache_node_ids_to_reboot[0] #=> String
1405
+ # resp.cache_cluster.cache_subnet_group_name #=> String
1406
+ # resp.cache_cluster.cache_nodes #=> Array
1407
+ # resp.cache_cluster.cache_nodes[0].cache_node_id #=> String
1408
+ # resp.cache_cluster.cache_nodes[0].cache_node_status #=> String
1409
+ # resp.cache_cluster.cache_nodes[0].cache_node_create_time #=> Time
1410
+ # resp.cache_cluster.cache_nodes[0].endpoint.address #=> String
1411
+ # resp.cache_cluster.cache_nodes[0].endpoint.port #=> Integer
1412
+ # resp.cache_cluster.cache_nodes[0].parameter_group_status #=> String
1413
+ # resp.cache_cluster.cache_nodes[0].source_cache_node_id #=> String
1414
+ # resp.cache_cluster.cache_nodes[0].customer_availability_zone #=> String
1415
+ # resp.cache_cluster.auto_minor_version_upgrade #=> Boolean
1416
+ # resp.cache_cluster.security_groups #=> Array
1417
+ # resp.cache_cluster.security_groups[0].security_group_id #=> String
1418
+ # resp.cache_cluster.security_groups[0].status #=> String
1419
+ # resp.cache_cluster.replication_group_id #=> String
1420
+ # resp.cache_cluster.snapshot_retention_limit #=> Integer
1421
+ # resp.cache_cluster.snapshot_window #=> String
1422
+ # @overload delete_cache_cluster(params = {})
1423
+ # @param [Hash] params ({})
1424
+ def delete_cache_cluster(params = {}, options = {})
1425
+ req = build_request(:delete_cache_cluster, params)
1426
+ req.send_request(options)
1427
+ end
1428
+
1429
+ # Deletes the specified cache parameter group. You cannot delete a cache
1430
+ # parameter group if it is associated with any cache clusters.
1431
+ # @option params [required, String] :cache_parameter_group_name
1432
+ # The name of the cache parameter group to delete.
1433
+ #
1434
+ # <note markdown="1"> The specified cache security group must not be associated with any
1435
+ # cache clusters.
1436
+ #
1437
+ # </note>
1438
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1439
+ #
1440
+ # @example Request syntax with placeholder values
1441
+ # resp = client.delete_cache_parameter_group({
1442
+ # cache_parameter_group_name: "String", # required
1443
+ # })
1444
+ # @overload delete_cache_parameter_group(params = {})
1445
+ # @param [Hash] params ({})
1446
+ def delete_cache_parameter_group(params = {}, options = {})
1447
+ req = build_request(:delete_cache_parameter_group, params)
1448
+ req.send_request(options)
1449
+ end
1450
+
1451
+ # Deletes a cache security group.
1452
+ #
1453
+ # <note markdown="1"> You cannot delete a cache security group if it is associated with any
1454
+ # cache clusters.
1455
+ #
1456
+ # </note>
1457
+ # @option params [required, String] :cache_security_group_name
1458
+ # The name of the cache security group to delete.
1459
+ #
1460
+ # <note markdown="1"> You cannot delete the default security group.
1461
+ #
1462
+ # </note>
1463
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1464
+ #
1465
+ # @example Request syntax with placeholder values
1466
+ # resp = client.delete_cache_security_group({
1467
+ # cache_security_group_name: "String", # required
1468
+ # })
1469
+ # @overload delete_cache_security_group(params = {})
1470
+ # @param [Hash] params ({})
1471
+ def delete_cache_security_group(params = {}, options = {})
1472
+ req = build_request(:delete_cache_security_group, params)
1473
+ req.send_request(options)
1474
+ end
1475
+
1476
+ # Deletes a cache subnet group.
1477
+ #
1478
+ # <note markdown="1"> You cannot delete a cache subnet group if it is associated with any
1479
+ # cache clusters.
1480
+ #
1481
+ # </note>
1482
+ # @option params [required, String] :cache_subnet_group_name
1483
+ # The name of the cache subnet group to delete.
1484
+ #
1485
+ # Constraints: Must contain no more than 255 alphanumeric characters or
1486
+ # hyphens.
1487
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1488
+ #
1489
+ # @example Request syntax with placeholder values
1490
+ # resp = client.delete_cache_subnet_group({
1491
+ # cache_subnet_group_name: "String", # required
1492
+ # })
1493
+ # @overload delete_cache_subnet_group(params = {})
1494
+ # @param [Hash] params ({})
1495
+ def delete_cache_subnet_group(params = {}, options = {})
1496
+ req = build_request(:delete_cache_subnet_group, params)
1497
+ req.send_request(options)
1498
+ end
1499
+
1500
+ # Deletes an existing replication group. By default, this operation
1501
+ # deletes the entire replication group, including the primary/primaries
1502
+ # and all of the read replicas. If the replication group has only one
1503
+ # primary, you can optionally delete only the read replicas, while
1504
+ # retaining the primary by setting `RetainPrimaryCluster=true`.
1505
+ #
1506
+ # When you receive a successful response from this operation, Amazon
1507
+ # ElastiCache immediately begins deleting the selected resources; you
1508
+ # cannot cancel or revert this operation.
1509
+ #
1510
+ # <note markdown="1"> This operation is valid for Redis only.
1511
+ #
1512
+ # </note>
1513
+ # @option params [required, String] :replication_group_id
1514
+ # The identifier for the cluster to be deleted. This parameter is not
1515
+ # case sensitive.
1516
+ # @option params [Boolean] :retain_primary_cluster
1517
+ # If set to `true`, all of the read replicas are deleted, but the
1518
+ # primary node is retained.
1519
+ # @option params [String] :final_snapshot_identifier
1520
+ # The name of a final node group (shard) snapshot. ElastiCache creates
1521
+ # the snapshot from the primary node in the cluster, rather than one of
1522
+ # the replicas; this is to ensure that it captures the freshest data.
1523
+ # After the final snapshot is taken, the replication group is
1524
+ # immediately deleted.
1525
+ # @return [Types::DeleteReplicationGroupResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1526
+ #
1527
+ # * {Types::DeleteReplicationGroupResult#replication_group #ReplicationGroup} => Types::ReplicationGroup
1528
+ #
1529
+ # @example Request syntax with placeholder values
1530
+ # resp = client.delete_replication_group({
1531
+ # replication_group_id: "String", # required
1532
+ # retain_primary_cluster: false,
1533
+ # final_snapshot_identifier: "String",
1534
+ # })
1535
+ #
1536
+ # @example Response structure
1537
+ # resp.replication_group.replication_group_id #=> String
1538
+ # resp.replication_group.description #=> String
1539
+ # resp.replication_group.status #=> String
1540
+ # resp.replication_group.pending_modified_values.primary_cluster_id #=> String
1541
+ # resp.replication_group.pending_modified_values.automatic_failover_status #=> String, one of "enabled", "disabled"
1542
+ # resp.replication_group.member_clusters #=> Array
1543
+ # resp.replication_group.member_clusters[0] #=> String
1544
+ # resp.replication_group.node_groups #=> Array
1545
+ # resp.replication_group.node_groups[0].node_group_id #=> String
1546
+ # resp.replication_group.node_groups[0].status #=> String
1547
+ # resp.replication_group.node_groups[0].primary_endpoint.address #=> String
1548
+ # resp.replication_group.node_groups[0].primary_endpoint.port #=> Integer
1549
+ # resp.replication_group.node_groups[0].slots #=> String
1550
+ # resp.replication_group.node_groups[0].node_group_members #=> Array
1551
+ # resp.replication_group.node_groups[0].node_group_members[0].cache_cluster_id #=> String
1552
+ # resp.replication_group.node_groups[0].node_group_members[0].cache_node_id #=> String
1553
+ # resp.replication_group.node_groups[0].node_group_members[0].read_endpoint.address #=> String
1554
+ # resp.replication_group.node_groups[0].node_group_members[0].read_endpoint.port #=> Integer
1555
+ # resp.replication_group.node_groups[0].node_group_members[0].preferred_availability_zone #=> String
1556
+ # resp.replication_group.node_groups[0].node_group_members[0].current_role #=> String
1557
+ # resp.replication_group.snapshotting_cluster_id #=> String
1558
+ # resp.replication_group.automatic_failover #=> String, one of "enabled", "disabled", "enabling", "disabling"
1559
+ # resp.replication_group.configuration_endpoint.address #=> String
1560
+ # resp.replication_group.configuration_endpoint.port #=> Integer
1561
+ # resp.replication_group.snapshot_retention_limit #=> Integer
1562
+ # resp.replication_group.snapshot_window #=> String
1563
+ # @overload delete_replication_group(params = {})
1564
+ # @param [Hash] params ({})
1565
+ def delete_replication_group(params = {}, options = {})
1566
+ req = build_request(:delete_replication_group, params)
1567
+ req.send_request(options)
1568
+ end
1569
+
1570
+ # Deletes an existing snapshot. When you receive a successful response
1571
+ # from this operation, ElastiCache immediately begins deleting the
1572
+ # snapshot; you cannot cancel or revert this operation.
1573
+ #
1574
+ # <note markdown="1"> This operation is valid for Redis only.
1575
+ #
1576
+ # </note>
1577
+ # @option params [required, String] :snapshot_name
1578
+ # The name of the snapshot to be deleted.
1579
+ # @return [Types::DeleteSnapshotResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1580
+ #
1581
+ # * {Types::DeleteSnapshotResult#snapshot #Snapshot} => Types::Snapshot
1582
+ #
1583
+ # @example Request syntax with placeholder values
1584
+ # resp = client.delete_snapshot({
1585
+ # snapshot_name: "String", # required
1586
+ # })
1587
+ #
1588
+ # @example Response structure
1589
+ # resp.snapshot.snapshot_name #=> String
1590
+ # resp.snapshot.replication_group_id #=> String
1591
+ # resp.snapshot.replication_group_description #=> String
1592
+ # resp.snapshot.cache_cluster_id #=> String
1593
+ # resp.snapshot.snapshot_status #=> String
1594
+ # resp.snapshot.snapshot_source #=> String
1595
+ # resp.snapshot.cache_node_type #=> String
1596
+ # resp.snapshot.engine #=> String
1597
+ # resp.snapshot.engine_version #=> String
1598
+ # resp.snapshot.num_cache_nodes #=> Integer
1599
+ # resp.snapshot.preferred_availability_zone #=> String
1600
+ # resp.snapshot.cache_cluster_create_time #=> Time
1601
+ # resp.snapshot.preferred_maintenance_window #=> String
1602
+ # resp.snapshot.topic_arn #=> String
1603
+ # resp.snapshot.port #=> Integer
1604
+ # resp.snapshot.cache_parameter_group_name #=> String
1605
+ # resp.snapshot.cache_subnet_group_name #=> String
1606
+ # resp.snapshot.vpc_id #=> String
1607
+ # resp.snapshot.auto_minor_version_upgrade #=> Boolean
1608
+ # resp.snapshot.snapshot_retention_limit #=> Integer
1609
+ # resp.snapshot.snapshot_window #=> String
1610
+ # resp.snapshot.num_node_groups #=> Integer
1611
+ # resp.snapshot.automatic_failover #=> String, one of "enabled", "disabled", "enabling", "disabling"
1612
+ # resp.snapshot.node_snapshots #=> Array
1613
+ # resp.snapshot.node_snapshots[0].cache_cluster_id #=> String
1614
+ # resp.snapshot.node_snapshots[0].node_group_id #=> String
1615
+ # resp.snapshot.node_snapshots[0].cache_node_id #=> String
1616
+ # resp.snapshot.node_snapshots[0].node_group_configuration.slots #=> String
1617
+ # resp.snapshot.node_snapshots[0].node_group_configuration.replica_count #=> Integer
1618
+ # resp.snapshot.node_snapshots[0].node_group_configuration.primary_availability_zone #=> String
1619
+ # resp.snapshot.node_snapshots[0].node_group_configuration.replica_availability_zones #=> Array
1620
+ # resp.snapshot.node_snapshots[0].node_group_configuration.replica_availability_zones[0] #=> String
1621
+ # resp.snapshot.node_snapshots[0].cache_size #=> String
1622
+ # resp.snapshot.node_snapshots[0].cache_node_create_time #=> Time
1623
+ # resp.snapshot.node_snapshots[0].snapshot_create_time #=> Time
1624
+ # @overload delete_snapshot(params = {})
1625
+ # @param [Hash] params ({})
1626
+ def delete_snapshot(params = {}, options = {})
1627
+ req = build_request(:delete_snapshot, params)
1628
+ req.send_request(options)
1629
+ end
1630
+
1631
+ # Returns information about all provisioned cache clusters if no cache
1632
+ # cluster identifier is specified, or about a specific cache cluster if
1633
+ # a cache cluster identifier is supplied.
1634
+ #
1635
+ # By default, abbreviated information about the cache clusters are
1636
+ # returned. You can use the optional `ShowDetails` flag to retrieve
1637
+ # detailed information about the cache nodes associated with the cache
1638
+ # clusters. These details include the DNS address and port for the cache
1639
+ # node endpoint.
1640
+ #
1641
+ # If the cluster is in the CREATING state, only cluster-level
1642
+ # information is displayed until all of the nodes are successfully
1643
+ # provisioned.
1644
+ #
1645
+ # If the cluster is in the DELETING state, only cluster-level
1646
+ # information is displayed.
1647
+ #
1648
+ # If cache nodes are currently being added to the cache cluster, node
1649
+ # endpoint information and creation time for the additional nodes are
1650
+ # not displayed until they are completely provisioned. When the cache
1651
+ # cluster state is `available`, the cluster is ready for use.
1652
+ #
1653
+ # If cache nodes are currently being removed from the cache cluster, no
1654
+ # endpoint information for the removed nodes is displayed.
1655
+ # @option params [String] :cache_cluster_id
1656
+ # The user-supplied cluster identifier. If this parameter is specified,
1657
+ # only information about that specific cache cluster is returned. This
1658
+ # parameter isn't case sensitive.
1659
+ # @option params [Integer] :max_records
1660
+ # The maximum number of records to include in the response. If more
1661
+ # records exist than the specified `MaxRecords` value, a marker is
1662
+ # included in the response so that the remaining results can be
1663
+ # retrieved.
1664
+ #
1665
+ # Default: 100
1666
+ #
1667
+ # Constraints: minimum 20; maximum 100.
1668
+ # @option params [String] :marker
1669
+ # An optional marker returned from a prior request. Use this marker for
1670
+ # pagination of results from this operation. If this parameter is
1671
+ # specified, the response includes only records beyond the marker, up to
1672
+ # the value specified by `MaxRecords`.
1673
+ # @option params [Boolean] :show_cache_node_info
1674
+ # An optional flag that can be included in the DescribeCacheCluster
1675
+ # request to retrieve information about the individual cache nodes.
1676
+ # @return [Types::CacheClusterMessage] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1677
+ #
1678
+ # * {Types::CacheClusterMessage#marker #Marker} => String
1679
+ # * {Types::CacheClusterMessage#cache_clusters #CacheClusters} => Array&lt;Types::CacheCluster&gt;
1680
+ #
1681
+ # @example Request syntax with placeholder values
1682
+ # resp = client.describe_cache_clusters({
1683
+ # cache_cluster_id: "String",
1684
+ # max_records: 1,
1685
+ # marker: "String",
1686
+ # show_cache_node_info: false,
1687
+ # })
1688
+ #
1689
+ # @example Response structure
1690
+ # resp.marker #=> String
1691
+ # resp.cache_clusters #=> Array
1692
+ # resp.cache_clusters[0].cache_cluster_id #=> String
1693
+ # resp.cache_clusters[0].configuration_endpoint.address #=> String
1694
+ # resp.cache_clusters[0].configuration_endpoint.port #=> Integer
1695
+ # resp.cache_clusters[0].client_download_landing_page #=> String
1696
+ # resp.cache_clusters[0].cache_node_type #=> String
1697
+ # resp.cache_clusters[0].engine #=> String
1698
+ # resp.cache_clusters[0].engine_version #=> String
1699
+ # resp.cache_clusters[0].cache_cluster_status #=> String
1700
+ # resp.cache_clusters[0].num_cache_nodes #=> Integer
1701
+ # resp.cache_clusters[0].preferred_availability_zone #=> String
1702
+ # resp.cache_clusters[0].cache_cluster_create_time #=> Time
1703
+ # resp.cache_clusters[0].preferred_maintenance_window #=> String
1704
+ # resp.cache_clusters[0].pending_modified_values.num_cache_nodes #=> Integer
1705
+ # resp.cache_clusters[0].pending_modified_values.cache_node_ids_to_remove #=> Array
1706
+ # resp.cache_clusters[0].pending_modified_values.cache_node_ids_to_remove[0] #=> String
1707
+ # resp.cache_clusters[0].pending_modified_values.engine_version #=> String
1708
+ # resp.cache_clusters[0].pending_modified_values.cache_node_type #=> String
1709
+ # resp.cache_clusters[0].notification_configuration.topic_arn #=> String
1710
+ # resp.cache_clusters[0].notification_configuration.topic_status #=> String
1711
+ # resp.cache_clusters[0].cache_security_groups #=> Array
1712
+ # resp.cache_clusters[0].cache_security_groups[0].cache_security_group_name #=> String
1713
+ # resp.cache_clusters[0].cache_security_groups[0].status #=> String
1714
+ # resp.cache_clusters[0].cache_parameter_group.cache_parameter_group_name #=> String
1715
+ # resp.cache_clusters[0].cache_parameter_group.parameter_apply_status #=> String
1716
+ # resp.cache_clusters[0].cache_parameter_group.cache_node_ids_to_reboot #=> Array
1717
+ # resp.cache_clusters[0].cache_parameter_group.cache_node_ids_to_reboot[0] #=> String
1718
+ # resp.cache_clusters[0].cache_subnet_group_name #=> String
1719
+ # resp.cache_clusters[0].cache_nodes #=> Array
1720
+ # resp.cache_clusters[0].cache_nodes[0].cache_node_id #=> String
1721
+ # resp.cache_clusters[0].cache_nodes[0].cache_node_status #=> String
1722
+ # resp.cache_clusters[0].cache_nodes[0].cache_node_create_time #=> Time
1723
+ # resp.cache_clusters[0].cache_nodes[0].endpoint.address #=> String
1724
+ # resp.cache_clusters[0].cache_nodes[0].endpoint.port #=> Integer
1725
+ # resp.cache_clusters[0].cache_nodes[0].parameter_group_status #=> String
1726
+ # resp.cache_clusters[0].cache_nodes[0].source_cache_node_id #=> String
1727
+ # resp.cache_clusters[0].cache_nodes[0].customer_availability_zone #=> String
1728
+ # resp.cache_clusters[0].auto_minor_version_upgrade #=> Boolean
1729
+ # resp.cache_clusters[0].security_groups #=> Array
1730
+ # resp.cache_clusters[0].security_groups[0].security_group_id #=> String
1731
+ # resp.cache_clusters[0].security_groups[0].status #=> String
1732
+ # resp.cache_clusters[0].replication_group_id #=> String
1733
+ # resp.cache_clusters[0].snapshot_retention_limit #=> Integer
1734
+ # resp.cache_clusters[0].snapshot_window #=> String
1735
+ # @overload describe_cache_clusters(params = {})
1736
+ # @param [Hash] params ({})
1737
+ def describe_cache_clusters(params = {}, options = {})
1738
+ req = build_request(:describe_cache_clusters, params)
1739
+ req.send_request(options)
1740
+ end
1741
+
1742
+ # Returns a list of the available cache engines and their versions.
1743
+ # @option params [String] :engine
1744
+ # The cache engine to return. Valid values: `memcached` \| `redis`
1745
+ # @option params [String] :engine_version
1746
+ # The cache engine version to return.
1747
+ #
1748
+ # Example: `1.4.14`
1749
+ # @option params [String] :cache_parameter_group_family
1750
+ # The name of a specific cache parameter group family to return details
1751
+ # for.
1752
+ #
1753
+ # Valid values are: `memcached1.4` \| `redis2.6` \| `redis2.8` \|
1754
+ # `redis3.2`
1755
+ #
1756
+ # Constraints:
1757
+ #
1758
+ # * Must be 1 to 255 alphanumeric characters
1759
+ #
1760
+ # * First character must be a letter
1761
+ #
1762
+ # * Cannot end with a hyphen or contain two consecutive hyphens
1763
+ # @option params [Integer] :max_records
1764
+ # The maximum number of records to include in the response. If more
1765
+ # records exist than the specified `MaxRecords` value, a marker is
1766
+ # included in the response so that the remaining results can be
1767
+ # retrieved.
1768
+ #
1769
+ # Default: 100
1770
+ #
1771
+ # Constraints: minimum 20; maximum 100.
1772
+ # @option params [String] :marker
1773
+ # An optional marker returned from a prior request. Use this marker for
1774
+ # pagination of results from this operation. If this parameter is
1775
+ # specified, the response includes only records beyond the marker, up to
1776
+ # the value specified by `MaxRecords`.
1777
+ # @option params [Boolean] :default_only
1778
+ # If `true`, specifies that only the default version of the specified
1779
+ # engine or engine and major version combination is to be returned.
1780
+ # @return [Types::CacheEngineVersionMessage] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1781
+ #
1782
+ # * {Types::CacheEngineVersionMessage#marker #Marker} => String
1783
+ # * {Types::CacheEngineVersionMessage#cache_engine_versions #CacheEngineVersions} => Array&lt;Types::CacheEngineVersion&gt;
1784
+ #
1785
+ # @example Request syntax with placeholder values
1786
+ # resp = client.describe_cache_engine_versions({
1787
+ # engine: "String",
1788
+ # engine_version: "String",
1789
+ # cache_parameter_group_family: "String",
1790
+ # max_records: 1,
1791
+ # marker: "String",
1792
+ # default_only: false,
1793
+ # })
1794
+ #
1795
+ # @example Response structure
1796
+ # resp.marker #=> String
1797
+ # resp.cache_engine_versions #=> Array
1798
+ # resp.cache_engine_versions[0].engine #=> String
1799
+ # resp.cache_engine_versions[0].engine_version #=> String
1800
+ # resp.cache_engine_versions[0].cache_parameter_group_family #=> String
1801
+ # resp.cache_engine_versions[0].cache_engine_description #=> String
1802
+ # resp.cache_engine_versions[0].cache_engine_version_description #=> String
1803
+ # @overload describe_cache_engine_versions(params = {})
1804
+ # @param [Hash] params ({})
1805
+ def describe_cache_engine_versions(params = {}, options = {})
1806
+ req = build_request(:describe_cache_engine_versions, params)
1807
+ req.send_request(options)
1808
+ end
1809
+
1810
+ # Returns a list of cache parameter group descriptions. If a cache
1811
+ # parameter group name is specified, the list contains only the
1812
+ # descriptions for that group.
1813
+ # @option params [String] :cache_parameter_group_name
1814
+ # The name of a specific cache parameter group to return details for.
1815
+ # @option params [Integer] :max_records
1816
+ # The maximum number of records to include in the response. If more
1817
+ # records exist than the specified `MaxRecords` value, a marker is
1818
+ # included in the response so that the remaining results can be
1819
+ # retrieved.
1820
+ #
1821
+ # Default: 100
1822
+ #
1823
+ # Constraints: minimum 20; maximum 100.
1824
+ # @option params [String] :marker
1825
+ # An optional marker returned from a prior request. Use this marker for
1826
+ # pagination of results from this operation. If this parameter is
1827
+ # specified, the response includes only records beyond the marker, up to
1828
+ # the value specified by `MaxRecords`.
1829
+ # @return [Types::CacheParameterGroupsMessage] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1830
+ #
1831
+ # * {Types::CacheParameterGroupsMessage#marker #Marker} => String
1832
+ # * {Types::CacheParameterGroupsMessage#cache_parameter_groups #CacheParameterGroups} => Array&lt;Types::CacheParameterGroup&gt;
1833
+ #
1834
+ # @example Request syntax with placeholder values
1835
+ # resp = client.describe_cache_parameter_groups({
1836
+ # cache_parameter_group_name: "String",
1837
+ # max_records: 1,
1838
+ # marker: "String",
1839
+ # })
1840
+ #
1841
+ # @example Response structure
1842
+ # resp.marker #=> String
1843
+ # resp.cache_parameter_groups #=> Array
1844
+ # resp.cache_parameter_groups[0].cache_parameter_group_name #=> String
1845
+ # resp.cache_parameter_groups[0].cache_parameter_group_family #=> String
1846
+ # resp.cache_parameter_groups[0].description #=> String
1847
+ # @overload describe_cache_parameter_groups(params = {})
1848
+ # @param [Hash] params ({})
1849
+ def describe_cache_parameter_groups(params = {}, options = {})
1850
+ req = build_request(:describe_cache_parameter_groups, params)
1851
+ req.send_request(options)
1852
+ end
1853
+
1854
+ # Returns the detailed parameter list for a particular cache parameter
1855
+ # group.
1856
+ # @option params [required, String] :cache_parameter_group_name
1857
+ # The name of a specific cache parameter group to return details for.
1858
+ # @option params [String] :source
1859
+ # The parameter types to return.
1860
+ #
1861
+ # Valid values: `user` \| `system` \| `engine-default`
1862
+ # @option params [Integer] :max_records
1863
+ # The maximum number of records to include in the response. If more
1864
+ # records exist than the specified `MaxRecords` value, a marker is
1865
+ # included in the response so that the remaining results can be
1866
+ # retrieved.
1867
+ #
1868
+ # Default: 100
1869
+ #
1870
+ # Constraints: minimum 20; maximum 100.
1871
+ # @option params [String] :marker
1872
+ # An optional marker returned from a prior request. Use this marker for
1873
+ # pagination of results from this operation. If this parameter is
1874
+ # specified, the response includes only records beyond the marker, up to
1875
+ # the value specified by `MaxRecords`.
1876
+ # @return [Types::CacheParameterGroupDetails] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1877
+ #
1878
+ # * {Types::CacheParameterGroupDetails#marker #Marker} => String
1879
+ # * {Types::CacheParameterGroupDetails#parameters #Parameters} => Array&lt;Types::Parameter&gt;
1880
+ # * {Types::CacheParameterGroupDetails#cache_node_type_specific_parameters #CacheNodeTypeSpecificParameters} => Array&lt;Types::CacheNodeTypeSpecificParameter&gt;
1881
+ #
1882
+ # @example Request syntax with placeholder values
1883
+ # resp = client.describe_cache_parameters({
1884
+ # cache_parameter_group_name: "String", # required
1885
+ # source: "String",
1886
+ # max_records: 1,
1887
+ # marker: "String",
1888
+ # })
1889
+ #
1890
+ # @example Response structure
1891
+ # resp.marker #=> String
1892
+ # resp.parameters #=> Array
1893
+ # resp.parameters[0].parameter_name #=> String
1894
+ # resp.parameters[0].parameter_value #=> String
1895
+ # resp.parameters[0].description #=> String
1896
+ # resp.parameters[0].source #=> String
1897
+ # resp.parameters[0].data_type #=> String
1898
+ # resp.parameters[0].allowed_values #=> String
1899
+ # resp.parameters[0].is_modifiable #=> Boolean
1900
+ # resp.parameters[0].minimum_engine_version #=> String
1901
+ # resp.parameters[0].change_type #=> String, one of "immediate", "requires-reboot"
1902
+ # resp.cache_node_type_specific_parameters #=> Array
1903
+ # resp.cache_node_type_specific_parameters[0].parameter_name #=> String
1904
+ # resp.cache_node_type_specific_parameters[0].description #=> String
1905
+ # resp.cache_node_type_specific_parameters[0].source #=> String
1906
+ # resp.cache_node_type_specific_parameters[0].data_type #=> String
1907
+ # resp.cache_node_type_specific_parameters[0].allowed_values #=> String
1908
+ # resp.cache_node_type_specific_parameters[0].is_modifiable #=> Boolean
1909
+ # resp.cache_node_type_specific_parameters[0].minimum_engine_version #=> String
1910
+ # resp.cache_node_type_specific_parameters[0].cache_node_type_specific_values #=> Array
1911
+ # resp.cache_node_type_specific_parameters[0].cache_node_type_specific_values[0].cache_node_type #=> String
1912
+ # resp.cache_node_type_specific_parameters[0].cache_node_type_specific_values[0].value #=> String
1913
+ # resp.cache_node_type_specific_parameters[0].change_type #=> String, one of "immediate", "requires-reboot"
1914
+ # @overload describe_cache_parameters(params = {})
1915
+ # @param [Hash] params ({})
1916
+ def describe_cache_parameters(params = {}, options = {})
1917
+ req = build_request(:describe_cache_parameters, params)
1918
+ req.send_request(options)
1919
+ end
1920
+
1921
+ # Returns a list of cache security group descriptions. If a cache
1922
+ # security group name is specified, the list contains only the
1923
+ # description of that group.
1924
+ # @option params [String] :cache_security_group_name
1925
+ # The name of the cache security group to return details for.
1926
+ # @option params [Integer] :max_records
1927
+ # The maximum number of records to include in the response. If more
1928
+ # records exist than the specified `MaxRecords` value, a marker is
1929
+ # included in the response so that the remaining results can be
1930
+ # retrieved.
1931
+ #
1932
+ # Default: 100
1933
+ #
1934
+ # Constraints: minimum 20; maximum 100.
1935
+ # @option params [String] :marker
1936
+ # An optional marker returned from a prior request. Use this marker for
1937
+ # pagination of results from this operation. If this parameter is
1938
+ # specified, the response includes only records beyond the marker, up to
1939
+ # the value specified by `MaxRecords`.
1940
+ # @return [Types::CacheSecurityGroupMessage] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1941
+ #
1942
+ # * {Types::CacheSecurityGroupMessage#marker #Marker} => String
1943
+ # * {Types::CacheSecurityGroupMessage#cache_security_groups #CacheSecurityGroups} => Array&lt;Types::CacheSecurityGroup&gt;
1944
+ #
1945
+ # @example Request syntax with placeholder values
1946
+ # resp = client.describe_cache_security_groups({
1947
+ # cache_security_group_name: "String",
1948
+ # max_records: 1,
1949
+ # marker: "String",
1950
+ # })
1951
+ #
1952
+ # @example Response structure
1953
+ # resp.marker #=> String
1954
+ # resp.cache_security_groups #=> Array
1955
+ # resp.cache_security_groups[0].owner_id #=> String
1956
+ # resp.cache_security_groups[0].cache_security_group_name #=> String
1957
+ # resp.cache_security_groups[0].description #=> String
1958
+ # resp.cache_security_groups[0].ec2_security_groups #=> Array
1959
+ # resp.cache_security_groups[0].ec2_security_groups[0].status #=> String
1960
+ # resp.cache_security_groups[0].ec2_security_groups[0].ec2_security_group_name #=> String
1961
+ # resp.cache_security_groups[0].ec2_security_groups[0].ec2_security_group_owner_id #=> String
1962
+ # @overload describe_cache_security_groups(params = {})
1963
+ # @param [Hash] params ({})
1964
+ def describe_cache_security_groups(params = {}, options = {})
1965
+ req = build_request(:describe_cache_security_groups, params)
1966
+ req.send_request(options)
1967
+ end
1968
+
1969
+ # Returns a list of cache subnet group descriptions. If a subnet group
1970
+ # name is specified, the list contains only the description of that
1971
+ # group.
1972
+ # @option params [String] :cache_subnet_group_name
1973
+ # The name of the cache subnet group to return details for.
1974
+ # @option params [Integer] :max_records
1975
+ # The maximum number of records to include in the response. If more
1976
+ # records exist than the specified `MaxRecords` value, a marker is
1977
+ # included in the response so that the remaining results can be
1978
+ # retrieved.
1979
+ #
1980
+ # Default: 100
1981
+ #
1982
+ # Constraints: minimum 20; maximum 100.
1983
+ # @option params [String] :marker
1984
+ # An optional marker returned from a prior request. Use this marker for
1985
+ # pagination of results from this operation. If this parameter is
1986
+ # specified, the response includes only records beyond the marker, up to
1987
+ # the value specified by `MaxRecords`.
1988
+ # @return [Types::CacheSubnetGroupMessage] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1989
+ #
1990
+ # * {Types::CacheSubnetGroupMessage#marker #Marker} => String
1991
+ # * {Types::CacheSubnetGroupMessage#cache_subnet_groups #CacheSubnetGroups} => Array&lt;Types::CacheSubnetGroup&gt;
1992
+ #
1993
+ # @example Request syntax with placeholder values
1994
+ # resp = client.describe_cache_subnet_groups({
1995
+ # cache_subnet_group_name: "String",
1996
+ # max_records: 1,
1997
+ # marker: "String",
1998
+ # })
1999
+ #
2000
+ # @example Response structure
2001
+ # resp.marker #=> String
2002
+ # resp.cache_subnet_groups #=> Array
2003
+ # resp.cache_subnet_groups[0].cache_subnet_group_name #=> String
2004
+ # resp.cache_subnet_groups[0].cache_subnet_group_description #=> String
2005
+ # resp.cache_subnet_groups[0].vpc_id #=> String
2006
+ # resp.cache_subnet_groups[0].subnets #=> Array
2007
+ # resp.cache_subnet_groups[0].subnets[0].subnet_identifier #=> String
2008
+ # resp.cache_subnet_groups[0].subnets[0].subnet_availability_zone.name #=> String
2009
+ # @overload describe_cache_subnet_groups(params = {})
2010
+ # @param [Hash] params ({})
2011
+ def describe_cache_subnet_groups(params = {}, options = {})
2012
+ req = build_request(:describe_cache_subnet_groups, params)
2013
+ req.send_request(options)
2014
+ end
2015
+
2016
+ # Returns the default engine and system parameter information for the
2017
+ # specified cache engine.
2018
+ # @option params [required, String] :cache_parameter_group_family
2019
+ # The name of the cache parameter group family.
2020
+ #
2021
+ # Valid values are: `memcached1.4` \| `redis2.6` \| `redis2.8` \|
2022
+ # `redis3.2`
2023
+ # @option params [Integer] :max_records
2024
+ # The maximum number of records to include in the response. If more
2025
+ # records exist than the specified `MaxRecords` value, a marker is
2026
+ # included in the response so that the remaining results can be
2027
+ # retrieved.
2028
+ #
2029
+ # Default: 100
2030
+ #
2031
+ # Constraints: minimum 20; maximum 100.
2032
+ # @option params [String] :marker
2033
+ # An optional marker returned from a prior request. Use this marker for
2034
+ # pagination of results from this operation. If this parameter is
2035
+ # specified, the response includes only records beyond the marker, up to
2036
+ # the value specified by `MaxRecords`.
2037
+ # @return [Types::DescribeEngineDefaultParametersResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2038
+ #
2039
+ # * {Types::DescribeEngineDefaultParametersResult#engine_defaults #EngineDefaults} => Types::EngineDefaults
2040
+ #
2041
+ # @example Request syntax with placeholder values
2042
+ # resp = client.describe_engine_default_parameters({
2043
+ # cache_parameter_group_family: "String", # required
2044
+ # max_records: 1,
2045
+ # marker: "String",
2046
+ # })
2047
+ #
2048
+ # @example Response structure
2049
+ # resp.engine_defaults.cache_parameter_group_family #=> String
2050
+ # resp.engine_defaults.marker #=> String
2051
+ # resp.engine_defaults.parameters #=> Array
2052
+ # resp.engine_defaults.parameters[0].parameter_name #=> String
2053
+ # resp.engine_defaults.parameters[0].parameter_value #=> String
2054
+ # resp.engine_defaults.parameters[0].description #=> String
2055
+ # resp.engine_defaults.parameters[0].source #=> String
2056
+ # resp.engine_defaults.parameters[0].data_type #=> String
2057
+ # resp.engine_defaults.parameters[0].allowed_values #=> String
2058
+ # resp.engine_defaults.parameters[0].is_modifiable #=> Boolean
2059
+ # resp.engine_defaults.parameters[0].minimum_engine_version #=> String
2060
+ # resp.engine_defaults.parameters[0].change_type #=> String, one of "immediate", "requires-reboot"
2061
+ # resp.engine_defaults.cache_node_type_specific_parameters #=> Array
2062
+ # resp.engine_defaults.cache_node_type_specific_parameters[0].parameter_name #=> String
2063
+ # resp.engine_defaults.cache_node_type_specific_parameters[0].description #=> String
2064
+ # resp.engine_defaults.cache_node_type_specific_parameters[0].source #=> String
2065
+ # resp.engine_defaults.cache_node_type_specific_parameters[0].data_type #=> String
2066
+ # resp.engine_defaults.cache_node_type_specific_parameters[0].allowed_values #=> String
2067
+ # resp.engine_defaults.cache_node_type_specific_parameters[0].is_modifiable #=> Boolean
2068
+ # resp.engine_defaults.cache_node_type_specific_parameters[0].minimum_engine_version #=> String
2069
+ # resp.engine_defaults.cache_node_type_specific_parameters[0].cache_node_type_specific_values #=> Array
2070
+ # resp.engine_defaults.cache_node_type_specific_parameters[0].cache_node_type_specific_values[0].cache_node_type #=> String
2071
+ # resp.engine_defaults.cache_node_type_specific_parameters[0].cache_node_type_specific_values[0].value #=> String
2072
+ # resp.engine_defaults.cache_node_type_specific_parameters[0].change_type #=> String, one of "immediate", "requires-reboot"
2073
+ # @overload describe_engine_default_parameters(params = {})
2074
+ # @param [Hash] params ({})
2075
+ def describe_engine_default_parameters(params = {}, options = {})
2076
+ req = build_request(:describe_engine_default_parameters, params)
2077
+ req.send_request(options)
2078
+ end
2079
+
2080
+ # Returns events related to cache clusters, cache security groups, and
2081
+ # cache parameter groups. You can obtain events specific to a particular
2082
+ # cache cluster, cache security group, or cache parameter group by
2083
+ # providing the name as a parameter.
2084
+ #
2085
+ # By default, only the events occurring within the last hour are
2086
+ # returned; however, you can retrieve up to 14 days' worth of events if
2087
+ # necessary.
2088
+ # @option params [String] :source_identifier
2089
+ # The identifier of the event source for which events are returned. If
2090
+ # not specified, all sources are included in the response.
2091
+ # @option params [String] :source_type
2092
+ # The event source to retrieve events for. If no value is specified, all
2093
+ # events are returned.
2094
+ # @option params [Time,DateTime,Date,Integer,String] :start_time
2095
+ # The beginning of the time interval to retrieve events for, specified
2096
+ # in ISO 8601 format.
2097
+ # @option params [Time,DateTime,Date,Integer,String] :end_time
2098
+ # The end of the time interval for which to retrieve events, specified
2099
+ # in ISO 8601 format.
2100
+ # @option params [Integer] :duration
2101
+ # The number of minutes' worth of events to retrieve.
2102
+ # @option params [Integer] :max_records
2103
+ # The maximum number of records to include in the response. If more
2104
+ # records exist than the specified `MaxRecords` value, a marker is
2105
+ # included in the response so that the remaining results can be
2106
+ # retrieved.
2107
+ #
2108
+ # Default: 100
2109
+ #
2110
+ # Constraints: minimum 20; maximum 100.
2111
+ # @option params [String] :marker
2112
+ # An optional marker returned from a prior request. Use this marker for
2113
+ # pagination of results from this operation. If this parameter is
2114
+ # specified, the response includes only records beyond the marker, up to
2115
+ # the value specified by `MaxRecords`.
2116
+ # @return [Types::EventsMessage] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2117
+ #
2118
+ # * {Types::EventsMessage#marker #Marker} => String
2119
+ # * {Types::EventsMessage#events #Events} => Array&lt;Types::Event&gt;
2120
+ #
2121
+ # @example Request syntax with placeholder values
2122
+ # resp = client.describe_events({
2123
+ # source_identifier: "String",
2124
+ # source_type: "cache-cluster", # accepts cache-cluster, cache-parameter-group, cache-security-group, cache-subnet-group, replication-group
2125
+ # start_time: Time.now,
2126
+ # end_time: Time.now,
2127
+ # duration: 1,
2128
+ # max_records: 1,
2129
+ # marker: "String",
2130
+ # })
2131
+ #
2132
+ # @example Response structure
2133
+ # resp.marker #=> String
2134
+ # resp.events #=> Array
2135
+ # resp.events[0].source_identifier #=> String
2136
+ # resp.events[0].source_type #=> String, one of "cache-cluster", "cache-parameter-group", "cache-security-group", "cache-subnet-group", "replication-group"
2137
+ # resp.events[0].message #=> String
2138
+ # resp.events[0].date #=> Time
2139
+ # @overload describe_events(params = {})
2140
+ # @param [Hash] params ({})
2141
+ def describe_events(params = {}, options = {})
2142
+ req = build_request(:describe_events, params)
2143
+ req.send_request(options)
2144
+ end
2145
+
2146
+ # Returns information about a particular replication group. If no
2147
+ # identifier is specified, `DescribeReplicationGroups` returns
2148
+ # information about all replication groups.
2149
+ #
2150
+ # <note markdown="1"> This operation is valid for Redis only.
2151
+ #
2152
+ # </note>
2153
+ # @option params [String] :replication_group_id
2154
+ # The identifier for the replication group to be described. This
2155
+ # parameter is not case sensitive.
2156
+ #
2157
+ # If you do not specify this parameter, information about all
2158
+ # replication groups is returned.
2159
+ # @option params [Integer] :max_records
2160
+ # The maximum number of records to include in the response. If more
2161
+ # records exist than the specified `MaxRecords` value, a marker is
2162
+ # included in the response so that the remaining results can be
2163
+ # retrieved.
2164
+ #
2165
+ # Default: 100
2166
+ #
2167
+ # Constraints: minimum 20; maximum 100.
2168
+ # @option params [String] :marker
2169
+ # An optional marker returned from a prior request. Use this marker for
2170
+ # pagination of results from this operation. If this parameter is
2171
+ # specified, the response includes only records beyond the marker, up to
2172
+ # the value specified by `MaxRecords`.
2173
+ # @return [Types::ReplicationGroupMessage] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2174
+ #
2175
+ # * {Types::ReplicationGroupMessage#marker #Marker} => String
2176
+ # * {Types::ReplicationGroupMessage#replication_groups #ReplicationGroups} => Array&lt;Types::ReplicationGroup&gt;
2177
+ #
2178
+ # @example Request syntax with placeholder values
2179
+ # resp = client.describe_replication_groups({
2180
+ # replication_group_id: "String",
2181
+ # max_records: 1,
2182
+ # marker: "String",
2183
+ # })
2184
+ #
2185
+ # @example Response structure
2186
+ # resp.marker #=> String
2187
+ # resp.replication_groups #=> Array
2188
+ # resp.replication_groups[0].replication_group_id #=> String
2189
+ # resp.replication_groups[0].description #=> String
2190
+ # resp.replication_groups[0].status #=> String
2191
+ # resp.replication_groups[0].pending_modified_values.primary_cluster_id #=> String
2192
+ # resp.replication_groups[0].pending_modified_values.automatic_failover_status #=> String, one of "enabled", "disabled"
2193
+ # resp.replication_groups[0].member_clusters #=> Array
2194
+ # resp.replication_groups[0].member_clusters[0] #=> String
2195
+ # resp.replication_groups[0].node_groups #=> Array
2196
+ # resp.replication_groups[0].node_groups[0].node_group_id #=> String
2197
+ # resp.replication_groups[0].node_groups[0].status #=> String
2198
+ # resp.replication_groups[0].node_groups[0].primary_endpoint.address #=> String
2199
+ # resp.replication_groups[0].node_groups[0].primary_endpoint.port #=> Integer
2200
+ # resp.replication_groups[0].node_groups[0].slots #=> String
2201
+ # resp.replication_groups[0].node_groups[0].node_group_members #=> Array
2202
+ # resp.replication_groups[0].node_groups[0].node_group_members[0].cache_cluster_id #=> String
2203
+ # resp.replication_groups[0].node_groups[0].node_group_members[0].cache_node_id #=> String
2204
+ # resp.replication_groups[0].node_groups[0].node_group_members[0].read_endpoint.address #=> String
2205
+ # resp.replication_groups[0].node_groups[0].node_group_members[0].read_endpoint.port #=> Integer
2206
+ # resp.replication_groups[0].node_groups[0].node_group_members[0].preferred_availability_zone #=> String
2207
+ # resp.replication_groups[0].node_groups[0].node_group_members[0].current_role #=> String
2208
+ # resp.replication_groups[0].snapshotting_cluster_id #=> String
2209
+ # resp.replication_groups[0].automatic_failover #=> String, one of "enabled", "disabled", "enabling", "disabling"
2210
+ # resp.replication_groups[0].configuration_endpoint.address #=> String
2211
+ # resp.replication_groups[0].configuration_endpoint.port #=> Integer
2212
+ # resp.replication_groups[0].snapshot_retention_limit #=> Integer
2213
+ # resp.replication_groups[0].snapshot_window #=> String
2214
+ # @overload describe_replication_groups(params = {})
2215
+ # @param [Hash] params ({})
2216
+ def describe_replication_groups(params = {}, options = {})
2217
+ req = build_request(:describe_replication_groups, params)
2218
+ req.send_request(options)
2219
+ end
2220
+
2221
+ # Returns information about reserved cache nodes for this account, or
2222
+ # about a specified reserved cache node.
2223
+ # @option params [String] :reserved_cache_node_id
2224
+ # The reserved cache node identifier filter value. Use this parameter to
2225
+ # show only the reservation that matches the specified reservation ID.
2226
+ # @option params [String] :reserved_cache_nodes_offering_id
2227
+ # The offering identifier filter value. Use this parameter to show only
2228
+ # purchased reservations matching the specified offering identifier.
2229
+ # @option params [String] :cache_node_type
2230
+ # The cache node type filter value. Use this parameter to show only
2231
+ # those reservations matching the specified cache node type.
2232
+ #
2233
+ # Valid node types are as follows:
2234
+ #
2235
+ # * General purpose:
2236
+ #
2237
+ # * Current generation: `cache.t2.micro`, `cache.t2.small`,
2238
+ # `cache.t2.medium`, `cache.m3.medium`, `cache.m3.large`,
2239
+ # `cache.m3.xlarge`, `cache.m3.2xlarge`, `cache.m4.large`,
2240
+ # `cache.m4.xlarge`, `cache.m4.2xlarge`, `cache.m4.4xlarge`,
2241
+ # `cache.m4.10xlarge`
2242
+ #
2243
+ # * Previous generation: `cache.t1.micro`, `cache.m1.small`,
2244
+ # `cache.m1.medium`, `cache.m1.large`, `cache.m1.xlarge`
2245
+ #
2246
+ # * Compute optimized: `cache.c1.xlarge`
2247
+ #
2248
+ # * Memory optimized:
2249
+ #
2250
+ # * Current generation: `cache.r3.large`, `cache.r3.xlarge`,
2251
+ # `cache.r3.2xlarge`, `cache.r3.4xlarge`, `cache.r3.8xlarge`
2252
+ #
2253
+ # * Previous generation: `cache.m2.xlarge`, `cache.m2.2xlarge`,
2254
+ # `cache.m2.4xlarge`
2255
+ #
2256
+ # **Notes:**
2257
+ #
2258
+ # * All T2 instances are created in an Amazon Virtual Private Cloud
2259
+ # (Amazon VPC).
2260
+ #
2261
+ # * Redis backup/restore is not supported for Redis (cluster mode
2262
+ # disabled) T1 and T2 instances. Backup/restore is supported on Redis
2263
+ # (cluster mode enabled) T2 instances.
2264
+ #
2265
+ # * Redis Append-only files (AOF) functionality is not supported for T1
2266
+ # or T2 instances.
2267
+ #
2268
+ # For a complete listing of node types and specifications, see [Amazon
2269
+ # ElastiCache Product Features and Details][1] and either [Cache Node
2270
+ # Type-Specific Parameters for Memcached][2] or [Cache Node
2271
+ # Type-Specific Parameters for Redis][3].
2272
+ #
2273
+ #
2274
+ #
2275
+ # [1]: http://aws.amazon.com/elasticache/details
2276
+ # [2]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific
2277
+ # [3]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific
2278
+ # @option params [String] :duration
2279
+ # The duration filter value, specified in years or seconds. Use this
2280
+ # parameter to show only reservations for this duration.
2281
+ #
2282
+ # Valid Values: `1 | 3 | 31536000 | 94608000`
2283
+ # @option params [String] :product_description
2284
+ # The product description filter value. Use this parameter to show only
2285
+ # those reservations matching the specified product description.
2286
+ # @option params [String] :offering_type
2287
+ # The offering type filter value. Use this parameter to show only the
2288
+ # available offerings matching the specified offering type.
2289
+ #
2290
+ # Valid values: `"Light Utilization"|"Medium Utilization"|"Heavy
2291
+ # Utilization"`
2292
+ # @option params [Integer] :max_records
2293
+ # The maximum number of records to include in the response. If more
2294
+ # records exist than the specified `MaxRecords` value, a marker is
2295
+ # included in the response so that the remaining results can be
2296
+ # retrieved.
2297
+ #
2298
+ # Default: 100
2299
+ #
2300
+ # Constraints: minimum 20; maximum 100.
2301
+ # @option params [String] :marker
2302
+ # An optional marker returned from a prior request. Use this marker for
2303
+ # pagination of results from this operation. If this parameter is
2304
+ # specified, the response includes only records beyond the marker, up to
2305
+ # the value specified by `MaxRecords`.
2306
+ # @return [Types::ReservedCacheNodeMessage] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2307
+ #
2308
+ # * {Types::ReservedCacheNodeMessage#marker #Marker} => String
2309
+ # * {Types::ReservedCacheNodeMessage#reserved_cache_nodes #ReservedCacheNodes} => Array&lt;Types::ReservedCacheNode&gt;
2310
+ #
2311
+ # @example Request syntax with placeholder values
2312
+ # resp = client.describe_reserved_cache_nodes({
2313
+ # reserved_cache_node_id: "String",
2314
+ # reserved_cache_nodes_offering_id: "String",
2315
+ # cache_node_type: "String",
2316
+ # duration: "String",
2317
+ # product_description: "String",
2318
+ # offering_type: "String",
2319
+ # max_records: 1,
2320
+ # marker: "String",
2321
+ # })
2322
+ #
2323
+ # @example Response structure
2324
+ # resp.marker #=> String
2325
+ # resp.reserved_cache_nodes #=> Array
2326
+ # resp.reserved_cache_nodes[0].reserved_cache_node_id #=> String
2327
+ # resp.reserved_cache_nodes[0].reserved_cache_nodes_offering_id #=> String
2328
+ # resp.reserved_cache_nodes[0].cache_node_type #=> String
2329
+ # resp.reserved_cache_nodes[0].start_time #=> Time
2330
+ # resp.reserved_cache_nodes[0].duration #=> Integer
2331
+ # resp.reserved_cache_nodes[0].fixed_price #=> Float
2332
+ # resp.reserved_cache_nodes[0].usage_price #=> Float
2333
+ # resp.reserved_cache_nodes[0].cache_node_count #=> Integer
2334
+ # resp.reserved_cache_nodes[0].product_description #=> String
2335
+ # resp.reserved_cache_nodes[0].offering_type #=> String
2336
+ # resp.reserved_cache_nodes[0].state #=> String
2337
+ # resp.reserved_cache_nodes[0].recurring_charges #=> Array
2338
+ # resp.reserved_cache_nodes[0].recurring_charges[0].recurring_charge_amount #=> Float
2339
+ # resp.reserved_cache_nodes[0].recurring_charges[0].recurring_charge_frequency #=> String
2340
+ # @overload describe_reserved_cache_nodes(params = {})
2341
+ # @param [Hash] params ({})
2342
+ def describe_reserved_cache_nodes(params = {}, options = {})
2343
+ req = build_request(:describe_reserved_cache_nodes, params)
2344
+ req.send_request(options)
2345
+ end
2346
+
2347
+ # Lists available reserved cache node offerings.
2348
+ # @option params [String] :reserved_cache_nodes_offering_id
2349
+ # The offering identifier filter value. Use this parameter to show only
2350
+ # the available offering that matches the specified reservation
2351
+ # identifier.
2352
+ #
2353
+ # Example: `438012d3-4052-4cc7-b2e3-8d3372e0e706`
2354
+ # @option params [String] :cache_node_type
2355
+ # The cache node type filter value. Use this parameter to show only the
2356
+ # available offerings matching the specified cache node type.
2357
+ #
2358
+ # Valid node types are as follows:
2359
+ #
2360
+ # * General purpose:
2361
+ #
2362
+ # * Current generation: `cache.t2.micro`, `cache.t2.small`,
2363
+ # `cache.t2.medium`, `cache.m3.medium`, `cache.m3.large`,
2364
+ # `cache.m3.xlarge`, `cache.m3.2xlarge`, `cache.m4.large`,
2365
+ # `cache.m4.xlarge`, `cache.m4.2xlarge`, `cache.m4.4xlarge`,
2366
+ # `cache.m4.10xlarge`
2367
+ #
2368
+ # * Previous generation: `cache.t1.micro`, `cache.m1.small`,
2369
+ # `cache.m1.medium`, `cache.m1.large`, `cache.m1.xlarge`
2370
+ #
2371
+ # * Compute optimized: `cache.c1.xlarge`
2372
+ #
2373
+ # * Memory optimized:
2374
+ #
2375
+ # * Current generation: `cache.r3.large`, `cache.r3.xlarge`,
2376
+ # `cache.r3.2xlarge`, `cache.r3.4xlarge`, `cache.r3.8xlarge`
2377
+ #
2378
+ # * Previous generation: `cache.m2.xlarge`, `cache.m2.2xlarge`,
2379
+ # `cache.m2.4xlarge`
2380
+ #
2381
+ # **Notes:**
2382
+ #
2383
+ # * All T2 instances are created in an Amazon Virtual Private Cloud
2384
+ # (Amazon VPC).
2385
+ #
2386
+ # * Redis backup/restore is not supported for Redis (cluster mode
2387
+ # disabled) T1 and T2 instances. Backup/restore is supported on Redis
2388
+ # (cluster mode enabled) T2 instances.
2389
+ #
2390
+ # * Redis Append-only files (AOF) functionality is not supported for T1
2391
+ # or T2 instances.
2392
+ #
2393
+ # For a complete listing of node types and specifications, see [Amazon
2394
+ # ElastiCache Product Features and Details][1] and either [Cache Node
2395
+ # Type-Specific Parameters for Memcached][2] or [Cache Node
2396
+ # Type-Specific Parameters for Redis][3].
2397
+ #
2398
+ #
2399
+ #
2400
+ # [1]: http://aws.amazon.com/elasticache/details
2401
+ # [2]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Memcached.html#ParameterGroups.Memcached.NodeSpecific
2402
+ # [3]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheParameterGroups.Redis.html#ParameterGroups.Redis.NodeSpecific
2403
+ # @option params [String] :duration
2404
+ # Duration filter value, specified in years or seconds. Use this
2405
+ # parameter to show only reservations for a given duration.
2406
+ #
2407
+ # Valid Values: `1 | 3 | 31536000 | 94608000`
2408
+ # @option params [String] :product_description
2409
+ # The product description filter value. Use this parameter to show only
2410
+ # the available offerings matching the specified product description.
2411
+ # @option params [String] :offering_type
2412
+ # The offering type filter value. Use this parameter to show only the
2413
+ # available offerings matching the specified offering type.
2414
+ #
2415
+ # Valid Values: `"Light Utilization"|"Medium Utilization"|"Heavy
2416
+ # Utilization"`
2417
+ # @option params [Integer] :max_records
2418
+ # The maximum number of records to include in the response. If more
2419
+ # records exist than the specified `MaxRecords` value, a marker is
2420
+ # included in the response so that the remaining results can be
2421
+ # retrieved.
2422
+ #
2423
+ # Default: 100
2424
+ #
2425
+ # Constraints: minimum 20; maximum 100.
2426
+ # @option params [String] :marker
2427
+ # An optional marker returned from a prior request. Use this marker for
2428
+ # pagination of results from this operation. If this parameter is
2429
+ # specified, the response includes only records beyond the marker, up to
2430
+ # the value specified by `MaxRecords`.
2431
+ # @return [Types::ReservedCacheNodesOfferingMessage] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2432
+ #
2433
+ # * {Types::ReservedCacheNodesOfferingMessage#marker #Marker} => String
2434
+ # * {Types::ReservedCacheNodesOfferingMessage#reserved_cache_nodes_offerings #ReservedCacheNodesOfferings} => Array&lt;Types::ReservedCacheNodesOffering&gt;
2435
+ #
2436
+ # @example Request syntax with placeholder values
2437
+ # resp = client.describe_reserved_cache_nodes_offerings({
2438
+ # reserved_cache_nodes_offering_id: "String",
2439
+ # cache_node_type: "String",
2440
+ # duration: "String",
2441
+ # product_description: "String",
2442
+ # offering_type: "String",
2443
+ # max_records: 1,
2444
+ # marker: "String",
2445
+ # })
2446
+ #
2447
+ # @example Response structure
2448
+ # resp.marker #=> String
2449
+ # resp.reserved_cache_nodes_offerings #=> Array
2450
+ # resp.reserved_cache_nodes_offerings[0].reserved_cache_nodes_offering_id #=> String
2451
+ # resp.reserved_cache_nodes_offerings[0].cache_node_type #=> String
2452
+ # resp.reserved_cache_nodes_offerings[0].duration #=> Integer
2453
+ # resp.reserved_cache_nodes_offerings[0].fixed_price #=> Float
2454
+ # resp.reserved_cache_nodes_offerings[0].usage_price #=> Float
2455
+ # resp.reserved_cache_nodes_offerings[0].product_description #=> String
2456
+ # resp.reserved_cache_nodes_offerings[0].offering_type #=> String
2457
+ # resp.reserved_cache_nodes_offerings[0].recurring_charges #=> Array
2458
+ # resp.reserved_cache_nodes_offerings[0].recurring_charges[0].recurring_charge_amount #=> Float
2459
+ # resp.reserved_cache_nodes_offerings[0].recurring_charges[0].recurring_charge_frequency #=> String
2460
+ # @overload describe_reserved_cache_nodes_offerings(params = {})
2461
+ # @param [Hash] params ({})
2462
+ def describe_reserved_cache_nodes_offerings(params = {}, options = {})
2463
+ req = build_request(:describe_reserved_cache_nodes_offerings, params)
2464
+ req.send_request(options)
2465
+ end
2466
+
2467
+ # Returns information about cache cluster or replication group
2468
+ # snapshots. By default, `DescribeSnapshots` lists all of your
2469
+ # snapshots; it can optionally describe a single snapshot, or just the
2470
+ # snapshots associated with a particular cache cluster.
2471
+ #
2472
+ # <note markdown="1"> This operation is valid for Redis only.
2473
+ #
2474
+ # </note>
2475
+ # @option params [String] :replication_group_id
2476
+ # A user-supplied replication group identifier. If this parameter is
2477
+ # specified, only snapshots associated with that specific replication
2478
+ # group are described.
2479
+ # @option params [String] :cache_cluster_id
2480
+ # A user-supplied cluster identifier. If this parameter is specified,
2481
+ # only snapshots associated with that specific cache cluster are
2482
+ # described.
2483
+ # @option params [String] :snapshot_name
2484
+ # A user-supplied name of the snapshot. If this parameter is specified,
2485
+ # only this snapshot are described.
2486
+ # @option params [String] :snapshot_source
2487
+ # If set to `system`, the output shows snapshots that were automatically
2488
+ # created by ElastiCache. If set to `user` the output shows snapshots
2489
+ # that were manually created. If omitted, the output shows both
2490
+ # automatically and manually created snapshots.
2491
+ # @option params [String] :marker
2492
+ # An optional marker returned from a prior request. Use this marker for
2493
+ # pagination of results from this operation. If this parameter is
2494
+ # specified, the response includes only records beyond the marker, up to
2495
+ # the value specified by `MaxRecords`.
2496
+ # @option params [Integer] :max_records
2497
+ # The maximum number of records to include in the response. If more
2498
+ # records exist than the specified `MaxRecords` value, a marker is
2499
+ # included in the response so that the remaining results can be
2500
+ # retrieved.
2501
+ #
2502
+ # Default: 50
2503
+ #
2504
+ # Constraints: minimum 20; maximum 50.
2505
+ # @option params [Boolean] :show_node_group_config
2506
+ # A Boolean value which if true, the node group (shard) configuration is
2507
+ # included in the snapshot description.
2508
+ # @return [Types::DescribeSnapshotsListMessage] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2509
+ #
2510
+ # * {Types::DescribeSnapshotsListMessage#marker #Marker} => String
2511
+ # * {Types::DescribeSnapshotsListMessage#snapshots #Snapshots} => Array&lt;Types::Snapshot&gt;
2512
+ #
2513
+ # @example Request syntax with placeholder values
2514
+ # resp = client.describe_snapshots({
2515
+ # replication_group_id: "String",
2516
+ # cache_cluster_id: "String",
2517
+ # snapshot_name: "String",
2518
+ # snapshot_source: "String",
2519
+ # marker: "String",
2520
+ # max_records: 1,
2521
+ # show_node_group_config: false,
2522
+ # })
2523
+ #
2524
+ # @example Response structure
2525
+ # resp.marker #=> String
2526
+ # resp.snapshots #=> Array
2527
+ # resp.snapshots[0].snapshot_name #=> String
2528
+ # resp.snapshots[0].replication_group_id #=> String
2529
+ # resp.snapshots[0].replication_group_description #=> String
2530
+ # resp.snapshots[0].cache_cluster_id #=> String
2531
+ # resp.snapshots[0].snapshot_status #=> String
2532
+ # resp.snapshots[0].snapshot_source #=> String
2533
+ # resp.snapshots[0].cache_node_type #=> String
2534
+ # resp.snapshots[0].engine #=> String
2535
+ # resp.snapshots[0].engine_version #=> String
2536
+ # resp.snapshots[0].num_cache_nodes #=> Integer
2537
+ # resp.snapshots[0].preferred_availability_zone #=> String
2538
+ # resp.snapshots[0].cache_cluster_create_time #=> Time
2539
+ # resp.snapshots[0].preferred_maintenance_window #=> String
2540
+ # resp.snapshots[0].topic_arn #=> String
2541
+ # resp.snapshots[0].port #=> Integer
2542
+ # resp.snapshots[0].cache_parameter_group_name #=> String
2543
+ # resp.snapshots[0].cache_subnet_group_name #=> String
2544
+ # resp.snapshots[0].vpc_id #=> String
2545
+ # resp.snapshots[0].auto_minor_version_upgrade #=> Boolean
2546
+ # resp.snapshots[0].snapshot_retention_limit #=> Integer
2547
+ # resp.snapshots[0].snapshot_window #=> String
2548
+ # resp.snapshots[0].num_node_groups #=> Integer
2549
+ # resp.snapshots[0].automatic_failover #=> String, one of "enabled", "disabled", "enabling", "disabling"
2550
+ # resp.snapshots[0].node_snapshots #=> Array
2551
+ # resp.snapshots[0].node_snapshots[0].cache_cluster_id #=> String
2552
+ # resp.snapshots[0].node_snapshots[0].node_group_id #=> String
2553
+ # resp.snapshots[0].node_snapshots[0].cache_node_id #=> String
2554
+ # resp.snapshots[0].node_snapshots[0].node_group_configuration.slots #=> String
2555
+ # resp.snapshots[0].node_snapshots[0].node_group_configuration.replica_count #=> Integer
2556
+ # resp.snapshots[0].node_snapshots[0].node_group_configuration.primary_availability_zone #=> String
2557
+ # resp.snapshots[0].node_snapshots[0].node_group_configuration.replica_availability_zones #=> Array
2558
+ # resp.snapshots[0].node_snapshots[0].node_group_configuration.replica_availability_zones[0] #=> String
2559
+ # resp.snapshots[0].node_snapshots[0].cache_size #=> String
2560
+ # resp.snapshots[0].node_snapshots[0].cache_node_create_time #=> Time
2561
+ # resp.snapshots[0].node_snapshots[0].snapshot_create_time #=> Time
2562
+ # @overload describe_snapshots(params = {})
2563
+ # @param [Hash] params ({})
2564
+ def describe_snapshots(params = {}, options = {})
2565
+ req = build_request(:describe_snapshots, params)
2566
+ req.send_request(options)
2567
+ end
2568
+
2569
+ # Lists all available node types that you can scale your Redis
2570
+ # cluster's or replication group's current node type up to.
2571
+ #
2572
+ # When you use the `ModifyCacheCluster` or `ModifyReplicationGroup`
2573
+ # operations to scale up your cluster or replication group, the value of
2574
+ # the `CacheNodeType` parameter must be one of the node types returned
2575
+ # by this operation.
2576
+ # @option params [String] :cache_cluster_id
2577
+ # The name of the cache cluster you want to scale up to a larger node
2578
+ # instanced type. ElastiCache uses the cluster id to identify the
2579
+ # current node type of this cluster and from that to create a list of
2580
+ # node types you can scale up to.
2581
+ #
2582
+ # You must provide a value for either the `CacheClusterId` or the
2583
+ # `ReplicationGroupId`.
2584
+ # @option params [String] :replication_group_id
2585
+ # The name of the replication group want to scale up to a larger node
2586
+ # type. ElastiCache uses the replication group id to identify the
2587
+ # current node type being used by this replication group, and from that
2588
+ # to create a list of node types you can scale up to.
2589
+ #
2590
+ # You must provide a value for either the `CacheClusterId` or the
2591
+ # `ReplicationGroupId`.
2592
+ # @return [Types::AllowedNodeTypeModificationsMessage] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2593
+ #
2594
+ # * {Types::AllowedNodeTypeModificationsMessage#scale_up_modifications #ScaleUpModifications} => Array&lt;String&gt;
2595
+ #
2596
+ # @example Request syntax with placeholder values
2597
+ # resp = client.list_allowed_node_type_modifications({
2598
+ # cache_cluster_id: "String",
2599
+ # replication_group_id: "String",
2600
+ # })
2601
+ #
2602
+ # @example Response structure
2603
+ # resp.scale_up_modifications #=> Array
2604
+ # resp.scale_up_modifications[0] #=> String
2605
+ # @overload list_allowed_node_type_modifications(params = {})
2606
+ # @param [Hash] params ({})
2607
+ def list_allowed_node_type_modifications(params = {}, options = {})
2608
+ req = build_request(:list_allowed_node_type_modifications, params)
2609
+ req.send_request(options)
2610
+ end
2611
+
2612
+ # Lists all cost allocation tags currently on the named resource. A
2613
+ # `cost allocation tag` is a key-value pair where the key is
2614
+ # case-sensitive and the value is optional. You can use cost allocation
2615
+ # tags to categorize and track your AWS costs.
2616
+ #
2617
+ # You can have a maximum of 10 cost allocation tags on an ElastiCache
2618
+ # resource. For more information, see [Using Cost Allocation Tags in
2619
+ # Amazon ElastiCache][1].
2620
+ #
2621
+ #
2622
+ #
2623
+ # [1]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/BestPractices.html
2624
+ # @option params [required, String] :resource_name
2625
+ # The Amazon Resource Name (ARN) of the resource for which you want the
2626
+ # list of tags, for example
2627
+ # `arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster` or
2628
+ # `arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot`.
2629
+ #
2630
+ # For more information about ARNs, see [Amazon Resource Names (ARNs) and
2631
+ # AWS Service Namespaces][1].
2632
+ #
2633
+ #
2634
+ #
2635
+ # [1]: http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
2636
+ # @return [Types::TagListMessage] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2637
+ #
2638
+ # * {Types::TagListMessage#tag_list #TagList} => Array&lt;Types::Tag&gt;
2639
+ #
2640
+ # @example Request syntax with placeholder values
2641
+ # resp = client.list_tags_for_resource({
2642
+ # resource_name: "String", # required
2643
+ # })
2644
+ #
2645
+ # @example Response structure
2646
+ # resp.tag_list #=> Array
2647
+ # resp.tag_list[0].key #=> String
2648
+ # resp.tag_list[0].value #=> String
2649
+ # @overload list_tags_for_resource(params = {})
2650
+ # @param [Hash] params ({})
2651
+ def list_tags_for_resource(params = {}, options = {})
2652
+ req = build_request(:list_tags_for_resource, params)
2653
+ req.send_request(options)
2654
+ end
2655
+
2656
+ # Modifies the settings for a cache cluster. You can use this operation
2657
+ # to change one or more cluster configuration parameters by specifying
2658
+ # the parameters and the new values.
2659
+ # @option params [required, String] :cache_cluster_id
2660
+ # The cache cluster identifier. This value is stored as a lowercase
2661
+ # string.
2662
+ # @option params [Integer] :num_cache_nodes
2663
+ # The number of cache nodes that the cache cluster should have. If the
2664
+ # value for `NumCacheNodes` is greater than the sum of the number of
2665
+ # current cache nodes and the number of cache nodes pending creation
2666
+ # (which may be zero), more nodes are added. If the value is less than
2667
+ # the number of existing cache nodes, nodes are removed. If the value is
2668
+ # equal to the number of current cache nodes, any pending add or remove
2669
+ # requests are canceled.
2670
+ #
2671
+ # If you are removing cache nodes, you must use the
2672
+ # `CacheNodeIdsToRemove` parameter to provide the IDs of the specific
2673
+ # cache nodes to remove.
2674
+ #
2675
+ # For clusters running Redis, this value must be 1. For clusters running
2676
+ # Memcached, this value must be between 1 and 20.
2677
+ #
2678
+ # <note markdown="1"> Adding or removing Memcached cache nodes can be applied immediately or
2679
+ # as a pending operation (see `ApplyImmediately`).
2680
+ #
2681
+ # A pending operation to modify the number of cache nodes in a cluster
2682
+ # during its maintenance window, whether by adding or removing nodes in
2683
+ # accordance with the scale out architecture, is not queued. The
2684
+ # customer's latest request to add or remove nodes to the cluster
2685
+ # overrides any previous pending operations to modify the number of
2686
+ # cache nodes in the cluster. For example, a request to remove 2 nodes
2687
+ # would override a previous pending operation to remove 3 nodes.
2688
+ # Similarly, a request to add 2 nodes would override a previous pending
2689
+ # operation to remove 3 nodes and vice versa. As Memcached cache nodes
2690
+ # may now be provisioned in different Availability Zones with flexible
2691
+ # cache node placement, a request to add nodes does not automatically
2692
+ # override a previous pending operation to add nodes. The customer can
2693
+ # modify the previous pending operation to add more nodes or explicitly
2694
+ # cancel the pending request and retry the new request. To cancel
2695
+ # pending operations to modify the number of cache nodes in a cluster,
2696
+ # use the `ModifyCacheCluster` request and set `NumCacheNodes` equal to
2697
+ # the number of cache nodes currently in the cache cluster.
2698
+ #
2699
+ # </note>
2700
+ # @option params [Array<String>] :cache_node_ids_to_remove
2701
+ # A list of cache node IDs to be removed. A node ID is a numeric
2702
+ # identifier (0001, 0002, etc.). This parameter is only valid when
2703
+ # `NumCacheNodes` is less than the existing number of cache nodes. The
2704
+ # number of cache node IDs supplied in this parameter must match the
2705
+ # difference between the existing number of cache nodes in the cluster
2706
+ # or pending cache nodes, whichever is greater, and the value of
2707
+ # `NumCacheNodes` in the request.
2708
+ #
2709
+ # For example: If you have 3 active cache nodes, 7 pending cache nodes,
2710
+ # and the number of cache nodes in this `ModifyCacheCluser` call is 5,
2711
+ # you must list 2 (7 - 5) cache node IDs to remove.
2712
+ # @option params [String] :az_mode
2713
+ # Specifies whether the new nodes in this Memcached cache cluster are
2714
+ # all created in a single Availability Zone or created across multiple
2715
+ # Availability Zones.
2716
+ #
2717
+ # Valid values: `single-az` \| `cross-az`.
2718
+ #
2719
+ # This option is only supported for Memcached cache clusters.
2720
+ #
2721
+ # <note markdown="1"> You cannot specify `single-az` if the Memcached cache cluster already
2722
+ # has cache nodes in different Availability Zones. If `cross-az` is
2723
+ # specified, existing Memcached nodes remain in their current
2724
+ # Availability Zone.
2725
+ #
2726
+ # Only newly created nodes are located in different Availability Zones.
2727
+ # For instructions on how to move existing Memcached nodes to different
2728
+ # Availability Zones, see the **Availability Zone Considerations**
2729
+ # section of [Cache Node Considerations for Memcached][1].
2730
+ #
2731
+ # </note>
2732
+ #
2733
+ #
2734
+ #
2735
+ # [1]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheNode.Memcached.html
2736
+ # @option params [Array<String>] :new_availability_zones
2737
+ # The list of Availability Zones where the new Memcached cache nodes are
2738
+ # created.
2739
+ #
2740
+ # This parameter is only valid when `NumCacheNodes` in the request is
2741
+ # greater than the sum of the number of active cache nodes and the
2742
+ # number of cache nodes pending creation (which may be zero). The number
2743
+ # of Availability Zones supplied in this list must match the cache nodes
2744
+ # being added in this request.
2745
+ #
2746
+ # This option is only supported on Memcached clusters.
2747
+ #
2748
+ # Scenarios:
2749
+ #
2750
+ # * **Scenario 1:** You have 3 active nodes and wish to add 2 nodes.
2751
+ # Specify `NumCacheNodes=5` (3 + 2) and optionally specify two
2752
+ # Availability Zones for the two new nodes.
2753
+ #
2754
+ # * **Scenario 2:** You have 3 active nodes and 2 nodes pending creation
2755
+ # (from the scenario 1 call) and want to add 1 more node. Specify
2756
+ # `NumCacheNodes=6` ((3 + 2) + 1) and optionally specify an
2757
+ # Availability Zone for the new node.
2758
+ #
2759
+ # * **Scenario 3:** You want to cancel all pending operations. Specify
2760
+ # `NumCacheNodes=3` to cancel all pending operations.
2761
+ #
2762
+ # The Availability Zone placement of nodes pending creation cannot be
2763
+ # modified. If you wish to cancel any nodes pending creation, add 0
2764
+ # nodes by setting `NumCacheNodes` to the number of current nodes.
2765
+ #
2766
+ # If `cross-az` is specified, existing Memcached nodes remain in their
2767
+ # current Availability Zone. Only newly created nodes can be located in
2768
+ # different Availability Zones. For guidance on how to move existing
2769
+ # Memcached nodes to different Availability Zones, see the
2770
+ # **Availability Zone Considerations** section of [Cache Node
2771
+ # Considerations for Memcached][1].
2772
+ #
2773
+ # **Impact of new add/remove requests upon pending requests**
2774
+ #
2775
+ # * Scenario-1
2776
+ #
2777
+ # * Pending Action: Delete
2778
+ #
2779
+ # * New Request: Delete
2780
+ #
2781
+ # * Result: The new delete, pending or immediate, replaces the pending
2782
+ # delete.
2783
+ #
2784
+ # * Scenario-2
2785
+ #
2786
+ # * Pending Action: Delete
2787
+ #
2788
+ # * New Request: Create
2789
+ #
2790
+ # * Result: The new create, pending or immediate, replaces the pending
2791
+ # delete.
2792
+ #
2793
+ # * Scenario-3
2794
+ #
2795
+ # * Pending Action: Create
2796
+ #
2797
+ # * New Request: Delete
2798
+ #
2799
+ # * Result: The new delete, pending or immediate, replaces the pending
2800
+ # create.
2801
+ #
2802
+ # * Scenario-4
2803
+ #
2804
+ # * Pending Action: Create
2805
+ #
2806
+ # * New Request: Create
2807
+ #
2808
+ # * Result: The new create is added to the pending create.
2809
+ #
2810
+ # **Important:** If the new create request is **Apply Immediately -
2811
+ # Yes**, all creates are performed immediately. If the new create
2812
+ # request is **Apply Immediately - No**, all creates are pending.
2813
+ #
2814
+ #
2815
+ #
2816
+ # [1]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheNode.Memcached.html
2817
+ # @option params [Array<String>] :cache_security_group_names
2818
+ # A list of cache security group names to authorize on this cache
2819
+ # cluster. This change is asynchronously applied as soon as possible.
2820
+ #
2821
+ # You can use this parameter only with clusters that are created outside
2822
+ # of an Amazon Virtual Private Cloud (Amazon VPC).
2823
+ #
2824
+ # Constraints: Must contain no more than 255 alphanumeric characters.
2825
+ # Must not be "Default".
2826
+ # @option params [Array<String>] :security_group_ids
2827
+ # Specifies the VPC Security Groups associated with the cache cluster.
2828
+ #
2829
+ # This parameter can be used only with clusters that are created in an
2830
+ # Amazon Virtual Private Cloud (Amazon VPC).
2831
+ # @option params [String] :preferred_maintenance_window
2832
+ # Specifies the weekly time range during which maintenance on the
2833
+ # cluster is performed. It is specified as a range in the format
2834
+ # ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance
2835
+ # window is a 60 minute period.
2836
+ #
2837
+ # Valid values for `ddd` are:
2838
+ #
2839
+ # * `sun`
2840
+ #
2841
+ # * `mon`
2842
+ #
2843
+ # * `tue`
2844
+ #
2845
+ # * `wed`
2846
+ #
2847
+ # * `thu`
2848
+ #
2849
+ # * `fri`
2850
+ #
2851
+ # * `sat`
2852
+ #
2853
+ # Example: `sun:23:00-mon:01:30`
2854
+ # @option params [String] :notification_topic_arn
2855
+ # The Amazon Resource Name (ARN) of the Amazon SNS topic to which
2856
+ # notifications are sent.
2857
+ #
2858
+ # <note markdown="1"> The Amazon SNS topic owner must be same as the cache cluster owner.
2859
+ #
2860
+ # </note>
2861
+ # @option params [String] :cache_parameter_group_name
2862
+ # The name of the cache parameter group to apply to this cache cluster.
2863
+ # This change is asynchronously applied as soon as possible for
2864
+ # parameters when the `ApplyImmediately` parameter is specified as
2865
+ # `true` for this request.
2866
+ # @option params [String] :notification_topic_status
2867
+ # The status of the Amazon SNS notification topic. Notifications are
2868
+ # sent only if the status is `active`.
2869
+ #
2870
+ # Valid values: `active` \| `inactive`
2871
+ # @option params [Boolean] :apply_immediately
2872
+ # If `true`, this parameter causes the modifications in this request and
2873
+ # any pending modifications to be applied, asynchronously and as soon as
2874
+ # possible, regardless of the `PreferredMaintenanceWindow` setting for
2875
+ # the cache cluster.
2876
+ #
2877
+ # If `false`, changes to the cache cluster are applied on the next
2878
+ # maintenance reboot, or the next failure reboot, whichever occurs
2879
+ # first.
2880
+ #
2881
+ # If you perform a `ModifyCacheCluster` before a pending modification is
2882
+ # applied, the pending modification is replaced by the newer
2883
+ # modification.
2884
+ #
2885
+ # Valid values: `true` \| `false`
2886
+ #
2887
+ # Default: `false`
2888
+ # @option params [String] :engine_version
2889
+ # The upgraded version of the cache engine to be run on the cache nodes.
2890
+ #
2891
+ # **Important:** You can upgrade to a newer engine version (see
2892
+ # [Selecting a Cache Engine and Version][1]), but you cannot downgrade
2893
+ # to an earlier engine version. If you want to use an earlier engine
2894
+ # version, you must delete the existing cache cluster and create it anew
2895
+ # with the earlier engine version.
2896
+ #
2897
+ #
2898
+ #
2899
+ # [1]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement
2900
+ # @option params [Boolean] :auto_minor_version_upgrade
2901
+ # This parameter is currently disabled.
2902
+ # @option params [Integer] :snapshot_retention_limit
2903
+ # The number of days for which ElastiCache retains automatic cache
2904
+ # cluster snapshots before deleting them. For example, if you set
2905
+ # `SnapshotRetentionLimit` to 5, a snapshot that was taken today is
2906
+ # retained for 5 days before being deleted.
2907
+ #
2908
+ # <note markdown="1"> If the value of `SnapshotRetentionLimit` is set to zero (0), backups
2909
+ # are turned off.
2910
+ #
2911
+ # </note>
2912
+ # @option params [String] :snapshot_window
2913
+ # The daily time range (in UTC) during which ElastiCache begins taking a
2914
+ # daily snapshot of your cache cluster.
2915
+ # @option params [String] :cache_node_type
2916
+ # A valid cache node type that you want to scale this cache cluster up
2917
+ # to.
2918
+ # @return [Types::ModifyCacheClusterResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2919
+ #
2920
+ # * {Types::ModifyCacheClusterResult#cache_cluster #CacheCluster} => Types::CacheCluster
2921
+ #
2922
+ # @example Request syntax with placeholder values
2923
+ # resp = client.modify_cache_cluster({
2924
+ # cache_cluster_id: "String", # required
2925
+ # num_cache_nodes: 1,
2926
+ # cache_node_ids_to_remove: ["String"],
2927
+ # az_mode: "single-az", # accepts single-az, cross-az
2928
+ # new_availability_zones: ["String"],
2929
+ # cache_security_group_names: ["String"],
2930
+ # security_group_ids: ["String"],
2931
+ # preferred_maintenance_window: "String",
2932
+ # notification_topic_arn: "String",
2933
+ # cache_parameter_group_name: "String",
2934
+ # notification_topic_status: "String",
2935
+ # apply_immediately: false,
2936
+ # engine_version: "String",
2937
+ # auto_minor_version_upgrade: false,
2938
+ # snapshot_retention_limit: 1,
2939
+ # snapshot_window: "String",
2940
+ # cache_node_type: "String",
2941
+ # })
2942
+ #
2943
+ # @example Response structure
2944
+ # resp.cache_cluster.cache_cluster_id #=> String
2945
+ # resp.cache_cluster.configuration_endpoint.address #=> String
2946
+ # resp.cache_cluster.configuration_endpoint.port #=> Integer
2947
+ # resp.cache_cluster.client_download_landing_page #=> String
2948
+ # resp.cache_cluster.cache_node_type #=> String
2949
+ # resp.cache_cluster.engine #=> String
2950
+ # resp.cache_cluster.engine_version #=> String
2951
+ # resp.cache_cluster.cache_cluster_status #=> String
2952
+ # resp.cache_cluster.num_cache_nodes #=> Integer
2953
+ # resp.cache_cluster.preferred_availability_zone #=> String
2954
+ # resp.cache_cluster.cache_cluster_create_time #=> Time
2955
+ # resp.cache_cluster.preferred_maintenance_window #=> String
2956
+ # resp.cache_cluster.pending_modified_values.num_cache_nodes #=> Integer
2957
+ # resp.cache_cluster.pending_modified_values.cache_node_ids_to_remove #=> Array
2958
+ # resp.cache_cluster.pending_modified_values.cache_node_ids_to_remove[0] #=> String
2959
+ # resp.cache_cluster.pending_modified_values.engine_version #=> String
2960
+ # resp.cache_cluster.pending_modified_values.cache_node_type #=> String
2961
+ # resp.cache_cluster.notification_configuration.topic_arn #=> String
2962
+ # resp.cache_cluster.notification_configuration.topic_status #=> String
2963
+ # resp.cache_cluster.cache_security_groups #=> Array
2964
+ # resp.cache_cluster.cache_security_groups[0].cache_security_group_name #=> String
2965
+ # resp.cache_cluster.cache_security_groups[0].status #=> String
2966
+ # resp.cache_cluster.cache_parameter_group.cache_parameter_group_name #=> String
2967
+ # resp.cache_cluster.cache_parameter_group.parameter_apply_status #=> String
2968
+ # resp.cache_cluster.cache_parameter_group.cache_node_ids_to_reboot #=> Array
2969
+ # resp.cache_cluster.cache_parameter_group.cache_node_ids_to_reboot[0] #=> String
2970
+ # resp.cache_cluster.cache_subnet_group_name #=> String
2971
+ # resp.cache_cluster.cache_nodes #=> Array
2972
+ # resp.cache_cluster.cache_nodes[0].cache_node_id #=> String
2973
+ # resp.cache_cluster.cache_nodes[0].cache_node_status #=> String
2974
+ # resp.cache_cluster.cache_nodes[0].cache_node_create_time #=> Time
2975
+ # resp.cache_cluster.cache_nodes[0].endpoint.address #=> String
2976
+ # resp.cache_cluster.cache_nodes[0].endpoint.port #=> Integer
2977
+ # resp.cache_cluster.cache_nodes[0].parameter_group_status #=> String
2978
+ # resp.cache_cluster.cache_nodes[0].source_cache_node_id #=> String
2979
+ # resp.cache_cluster.cache_nodes[0].customer_availability_zone #=> String
2980
+ # resp.cache_cluster.auto_minor_version_upgrade #=> Boolean
2981
+ # resp.cache_cluster.security_groups #=> Array
2982
+ # resp.cache_cluster.security_groups[0].security_group_id #=> String
2983
+ # resp.cache_cluster.security_groups[0].status #=> String
2984
+ # resp.cache_cluster.replication_group_id #=> String
2985
+ # resp.cache_cluster.snapshot_retention_limit #=> Integer
2986
+ # resp.cache_cluster.snapshot_window #=> String
2987
+ # @overload modify_cache_cluster(params = {})
2988
+ # @param [Hash] params ({})
2989
+ def modify_cache_cluster(params = {}, options = {})
2990
+ req = build_request(:modify_cache_cluster, params)
2991
+ req.send_request(options)
2992
+ end
2993
+
2994
+ # Modifies the parameters of a cache parameter group. You can modify up
2995
+ # to 20 parameters in a single request by submitting a list parameter
2996
+ # name and value pairs.
2997
+ # @option params [required, String] :cache_parameter_group_name
2998
+ # The name of the cache parameter group to modify.
2999
+ # @option params [required, Array<Types::ParameterNameValue>] :parameter_name_values
3000
+ # An array of parameter names and values for the parameter update. You
3001
+ # must supply at least one parameter name and value; subsequent
3002
+ # arguments are optional. A maximum of 20 parameters may be modified per
3003
+ # request.
3004
+ # @return [Types::CacheParameterGroupNameMessage] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3005
+ #
3006
+ # * {Types::CacheParameterGroupNameMessage#cache_parameter_group_name #CacheParameterGroupName} => String
3007
+ #
3008
+ # @example Request syntax with placeholder values
3009
+ # resp = client.modify_cache_parameter_group({
3010
+ # cache_parameter_group_name: "String", # required
3011
+ # parameter_name_values: [ # required
3012
+ # {
3013
+ # parameter_name: "String",
3014
+ # parameter_value: "String",
3015
+ # },
3016
+ # ],
3017
+ # })
3018
+ #
3019
+ # @example Response structure
3020
+ # resp.cache_parameter_group_name #=> String
3021
+ # @overload modify_cache_parameter_group(params = {})
3022
+ # @param [Hash] params ({})
3023
+ def modify_cache_parameter_group(params = {}, options = {})
3024
+ req = build_request(:modify_cache_parameter_group, params)
3025
+ req.send_request(options)
3026
+ end
3027
+
3028
+ # Modifies an existing cache subnet group.
3029
+ # @option params [required, String] :cache_subnet_group_name
3030
+ # The name for the cache subnet group. This value is stored as a
3031
+ # lowercase string.
3032
+ #
3033
+ # Constraints: Must contain no more than 255 alphanumeric characters or
3034
+ # hyphens.
3035
+ #
3036
+ # Example: `mysubnetgroup`
3037
+ # @option params [String] :cache_subnet_group_description
3038
+ # A description of the cache subnet group.
3039
+ # @option params [Array<String>] :subnet_ids
3040
+ # The EC2 subnet IDs for the cache subnet group.
3041
+ # @return [Types::ModifyCacheSubnetGroupResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3042
+ #
3043
+ # * {Types::ModifyCacheSubnetGroupResult#cache_subnet_group #CacheSubnetGroup} => Types::CacheSubnetGroup
3044
+ #
3045
+ # @example Request syntax with placeholder values
3046
+ # resp = client.modify_cache_subnet_group({
3047
+ # cache_subnet_group_name: "String", # required
3048
+ # cache_subnet_group_description: "String",
3049
+ # subnet_ids: ["String"],
3050
+ # })
3051
+ #
3052
+ # @example Response structure
3053
+ # resp.cache_subnet_group.cache_subnet_group_name #=> String
3054
+ # resp.cache_subnet_group.cache_subnet_group_description #=> String
3055
+ # resp.cache_subnet_group.vpc_id #=> String
3056
+ # resp.cache_subnet_group.subnets #=> Array
3057
+ # resp.cache_subnet_group.subnets[0].subnet_identifier #=> String
3058
+ # resp.cache_subnet_group.subnets[0].subnet_availability_zone.name #=> String
3059
+ # @overload modify_cache_subnet_group(params = {})
3060
+ # @param [Hash] params ({})
3061
+ def modify_cache_subnet_group(params = {}, options = {})
3062
+ req = build_request(:modify_cache_subnet_group, params)
3063
+ req.send_request(options)
3064
+ end
3065
+
3066
+ # Modifies the settings for a replication group.
3067
+ #
3068
+ # Due to current limitations on Redis (cluster mode disabled), this
3069
+ # operation or parameter is not supported on Redis (cluster mode
3070
+ # enabled) replication groups.
3071
+ #
3072
+ # <note markdown="1"> This operation is valid for Redis only.
3073
+ #
3074
+ # </note>
3075
+ # @option params [required, String] :replication_group_id
3076
+ # The identifier of the replication group to modify.
3077
+ # @option params [String] :replication_group_description
3078
+ # A description for the replication group. Maximum length is 255
3079
+ # characters.
3080
+ # @option params [String] :primary_cluster_id
3081
+ # For replication groups with a single primary, if this parameter is
3082
+ # specified, ElastiCache promotes the specified cluster in the specified
3083
+ # replication group to the primary role. The nodes of all other clusters
3084
+ # in the replication group are read replicas.
3085
+ # @option params [String] :snapshotting_cluster_id
3086
+ # The cache cluster ID that is used as the daily snapshot source for the
3087
+ # replication group. This parameter cannot be set for Redis (cluster
3088
+ # mode enabled) replication groups.
3089
+ # @option params [Boolean] :automatic_failover_enabled
3090
+ # Determines whether a read replica is automatically promoted to
3091
+ # read/write primary if the existing primary encounters a failure.
3092
+ #
3093
+ # Valid values: `true` \| `false`
3094
+ #
3095
+ # <note markdown="1"> ElastiCache Multi-AZ replication groups are not supported on:
3096
+ #
3097
+ # * Redis versions earlier than 2.8.6.
3098
+ #
3099
+ # * Redis (cluster mode disabled):T1 and T2 cache node types.
3100
+ #
3101
+ # Redis (cluster mode enabled): T1 node types.
3102
+ #
3103
+ # </note>
3104
+ # @option params [Array<String>] :cache_security_group_names
3105
+ # A list of cache security group names to authorize for the clusters in
3106
+ # this replication group. This change is asynchronously applied as soon
3107
+ # as possible.
3108
+ #
3109
+ # This parameter can be used only with replication group containing
3110
+ # cache clusters running outside of an Amazon Virtual Private Cloud
3111
+ # (Amazon VPC).
3112
+ #
3113
+ # Constraints: Must contain no more than 255 alphanumeric characters.
3114
+ # Must not be `Default`.
3115
+ # @option params [Array<String>] :security_group_ids
3116
+ # Specifies the VPC Security Groups associated with the cache clusters
3117
+ # in the replication group.
3118
+ #
3119
+ # This parameter can be used only with replication group containing
3120
+ # cache clusters running in an Amazon Virtual Private Cloud (Amazon
3121
+ # VPC).
3122
+ # @option params [String] :preferred_maintenance_window
3123
+ # Specifies the weekly time range during which maintenance on the
3124
+ # cluster is performed. It is specified as a range in the format
3125
+ # ddd:hh24:mi-ddd:hh24:mi (24H Clock UTC). The minimum maintenance
3126
+ # window is a 60 minute period.
3127
+ #
3128
+ # Valid values for `ddd` are:
3129
+ #
3130
+ # * `sun`
3131
+ #
3132
+ # * `mon`
3133
+ #
3134
+ # * `tue`
3135
+ #
3136
+ # * `wed`
3137
+ #
3138
+ # * `thu`
3139
+ #
3140
+ # * `fri`
3141
+ #
3142
+ # * `sat`
3143
+ #
3144
+ # Example: `sun:23:00-mon:01:30`
3145
+ # @option params [String] :notification_topic_arn
3146
+ # The Amazon Resource Name (ARN) of the Amazon SNS topic to which
3147
+ # notifications are sent.
3148
+ #
3149
+ # <note markdown="1"> The Amazon SNS topic owner must be same as the replication group
3150
+ # owner.
3151
+ #
3152
+ # </note>
3153
+ # @option params [String] :cache_parameter_group_name
3154
+ # The name of the cache parameter group to apply to all of the clusters
3155
+ # in this replication group. This change is asynchronously applied as
3156
+ # soon as possible for parameters when the `ApplyImmediately` parameter
3157
+ # is specified as `true` for this request.
3158
+ # @option params [String] :notification_topic_status
3159
+ # The status of the Amazon SNS notification topic for the replication
3160
+ # group. Notifications are sent only if the status is `active`.
3161
+ #
3162
+ # Valid values: `active` \| `inactive`
3163
+ # @option params [Boolean] :apply_immediately
3164
+ # If `true`, this parameter causes the modifications in this request and
3165
+ # any pending modifications to be applied, asynchronously and as soon as
3166
+ # possible, regardless of the `PreferredMaintenanceWindow` setting for
3167
+ # the replication group.
3168
+ #
3169
+ # If `false`, changes to the nodes in the replication group are applied
3170
+ # on the next maintenance reboot, or the next failure reboot, whichever
3171
+ # occurs first.
3172
+ #
3173
+ # Valid values: `true` \| `false`
3174
+ #
3175
+ # Default: `false`
3176
+ # @option params [String] :engine_version
3177
+ # The upgraded version of the cache engine to be run on the cache
3178
+ # clusters in the replication group.
3179
+ #
3180
+ # **Important:** You can upgrade to a newer engine version (see
3181
+ # [Selecting a Cache Engine and Version][1]), but you cannot downgrade
3182
+ # to an earlier engine version. If you want to use an earlier engine
3183
+ # version, you must delete the existing replication group and create it
3184
+ # anew with the earlier engine version.
3185
+ #
3186
+ #
3187
+ #
3188
+ # [1]: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/SelectEngine.html#VersionManagement
3189
+ # @option params [Boolean] :auto_minor_version_upgrade
3190
+ # This parameter is currently disabled.
3191
+ # @option params [Integer] :snapshot_retention_limit
3192
+ # The number of days for which ElastiCache retains automatic node group
3193
+ # (shard) snapshots before deleting them. For example, if you set
3194
+ # `SnapshotRetentionLimit` to 5, a snapshot that was taken today is
3195
+ # retained for 5 days before being deleted.
3196
+ #
3197
+ # **Important** If the value of SnapshotRetentionLimit is set to zero
3198
+ # (0), backups are turned off.
3199
+ # @option params [String] :snapshot_window
3200
+ # The daily time range (in UTC) during which ElastiCache begins taking a
3201
+ # daily snapshot of the node group (shard) specified by
3202
+ # `SnapshottingClusterId`.
3203
+ #
3204
+ # Example: `05:00-09:00`
3205
+ #
3206
+ # If you do not specify this parameter, ElastiCache automatically
3207
+ # chooses an appropriate time range.
3208
+ # @option params [String] :cache_node_type
3209
+ # A valid cache node type that you want to scale this replication group
3210
+ # to.
3211
+ # @return [Types::ModifyReplicationGroupResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3212
+ #
3213
+ # * {Types::ModifyReplicationGroupResult#replication_group #ReplicationGroup} => Types::ReplicationGroup
3214
+ #
3215
+ # @example Request syntax with placeholder values
3216
+ # resp = client.modify_replication_group({
3217
+ # replication_group_id: "String", # required
3218
+ # replication_group_description: "String",
3219
+ # primary_cluster_id: "String",
3220
+ # snapshotting_cluster_id: "String",
3221
+ # automatic_failover_enabled: false,
3222
+ # cache_security_group_names: ["String"],
3223
+ # security_group_ids: ["String"],
3224
+ # preferred_maintenance_window: "String",
3225
+ # notification_topic_arn: "String",
3226
+ # cache_parameter_group_name: "String",
3227
+ # notification_topic_status: "String",
3228
+ # apply_immediately: false,
3229
+ # engine_version: "String",
3230
+ # auto_minor_version_upgrade: false,
3231
+ # snapshot_retention_limit: 1,
3232
+ # snapshot_window: "String",
3233
+ # cache_node_type: "String",
3234
+ # })
3235
+ #
3236
+ # @example Response structure
3237
+ # resp.replication_group.replication_group_id #=> String
3238
+ # resp.replication_group.description #=> String
3239
+ # resp.replication_group.status #=> String
3240
+ # resp.replication_group.pending_modified_values.primary_cluster_id #=> String
3241
+ # resp.replication_group.pending_modified_values.automatic_failover_status #=> String, one of "enabled", "disabled"
3242
+ # resp.replication_group.member_clusters #=> Array
3243
+ # resp.replication_group.member_clusters[0] #=> String
3244
+ # resp.replication_group.node_groups #=> Array
3245
+ # resp.replication_group.node_groups[0].node_group_id #=> String
3246
+ # resp.replication_group.node_groups[0].status #=> String
3247
+ # resp.replication_group.node_groups[0].primary_endpoint.address #=> String
3248
+ # resp.replication_group.node_groups[0].primary_endpoint.port #=> Integer
3249
+ # resp.replication_group.node_groups[0].slots #=> String
3250
+ # resp.replication_group.node_groups[0].node_group_members #=> Array
3251
+ # resp.replication_group.node_groups[0].node_group_members[0].cache_cluster_id #=> String
3252
+ # resp.replication_group.node_groups[0].node_group_members[0].cache_node_id #=> String
3253
+ # resp.replication_group.node_groups[0].node_group_members[0].read_endpoint.address #=> String
3254
+ # resp.replication_group.node_groups[0].node_group_members[0].read_endpoint.port #=> Integer
3255
+ # resp.replication_group.node_groups[0].node_group_members[0].preferred_availability_zone #=> String
3256
+ # resp.replication_group.node_groups[0].node_group_members[0].current_role #=> String
3257
+ # resp.replication_group.snapshotting_cluster_id #=> String
3258
+ # resp.replication_group.automatic_failover #=> String, one of "enabled", "disabled", "enabling", "disabling"
3259
+ # resp.replication_group.configuration_endpoint.address #=> String
3260
+ # resp.replication_group.configuration_endpoint.port #=> Integer
3261
+ # resp.replication_group.snapshot_retention_limit #=> Integer
3262
+ # resp.replication_group.snapshot_window #=> String
3263
+ # @overload modify_replication_group(params = {})
3264
+ # @param [Hash] params ({})
3265
+ def modify_replication_group(params = {}, options = {})
3266
+ req = build_request(:modify_replication_group, params)
3267
+ req.send_request(options)
3268
+ end
3269
+
3270
+ # Allows you to purchase a reserved cache node offering.
3271
+ # @option params [required, String] :reserved_cache_nodes_offering_id
3272
+ # The ID of the reserved cache node offering to purchase.
3273
+ #
3274
+ # Example: `438012d3-4052-4cc7-b2e3-8d3372e0e706`
3275
+ # @option params [String] :reserved_cache_node_id
3276
+ # A customer-specified identifier to track this reservation.
3277
+ #
3278
+ # <note markdown="1"> The Reserved Cache Node ID is an unique customer-specified identifier
3279
+ # to track this reservation. If this parameter is not specified,
3280
+ # ElastiCache automatically generates an identifier for the reservation.
3281
+ #
3282
+ # </note>
3283
+ #
3284
+ # Example: myreservationID
3285
+ # @option params [Integer] :cache_node_count
3286
+ # The number of cache node instances to reserve.
3287
+ #
3288
+ # Default: `1`
3289
+ # @return [Types::PurchaseReservedCacheNodesOfferingResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3290
+ #
3291
+ # * {Types::PurchaseReservedCacheNodesOfferingResult#reserved_cache_node #ReservedCacheNode} => Types::ReservedCacheNode
3292
+ #
3293
+ # @example Request syntax with placeholder values
3294
+ # resp = client.purchase_reserved_cache_nodes_offering({
3295
+ # reserved_cache_nodes_offering_id: "String", # required
3296
+ # reserved_cache_node_id: "String",
3297
+ # cache_node_count: 1,
3298
+ # })
3299
+ #
3300
+ # @example Response structure
3301
+ # resp.reserved_cache_node.reserved_cache_node_id #=> String
3302
+ # resp.reserved_cache_node.reserved_cache_nodes_offering_id #=> String
3303
+ # resp.reserved_cache_node.cache_node_type #=> String
3304
+ # resp.reserved_cache_node.start_time #=> Time
3305
+ # resp.reserved_cache_node.duration #=> Integer
3306
+ # resp.reserved_cache_node.fixed_price #=> Float
3307
+ # resp.reserved_cache_node.usage_price #=> Float
3308
+ # resp.reserved_cache_node.cache_node_count #=> Integer
3309
+ # resp.reserved_cache_node.product_description #=> String
3310
+ # resp.reserved_cache_node.offering_type #=> String
3311
+ # resp.reserved_cache_node.state #=> String
3312
+ # resp.reserved_cache_node.recurring_charges #=> Array
3313
+ # resp.reserved_cache_node.recurring_charges[0].recurring_charge_amount #=> Float
3314
+ # resp.reserved_cache_node.recurring_charges[0].recurring_charge_frequency #=> String
3315
+ # @overload purchase_reserved_cache_nodes_offering(params = {})
3316
+ # @param [Hash] params ({})
3317
+ def purchase_reserved_cache_nodes_offering(params = {}, options = {})
3318
+ req = build_request(:purchase_reserved_cache_nodes_offering, params)
3319
+ req.send_request(options)
3320
+ end
3321
+
3322
+ # Reboots some, or all, of the cache nodes within a provisioned cache
3323
+ # cluster. This operation applies any modified cache parameter groups to
3324
+ # the cache cluster. The reboot operation takes place as soon as
3325
+ # possible, and results in a momentary outage to the cache cluster.
3326
+ # During the reboot, the cache cluster status is set to REBOOTING.
3327
+ #
3328
+ # The reboot causes the contents of the cache (for each cache node being
3329
+ # rebooted) to be lost.
3330
+ #
3331
+ # When the reboot is complete, a cache cluster event is created.
3332
+ # @option params [required, String] :cache_cluster_id
3333
+ # The cache cluster identifier. This parameter is stored as a lowercase
3334
+ # string.
3335
+ # @option params [required, Array<String>] :cache_node_ids_to_reboot
3336
+ # A list of cache node IDs to reboot. A node ID is a numeric identifier
3337
+ # (0001, 0002, etc.). To reboot an entire cache cluster, specify all of
3338
+ # the cache node IDs.
3339
+ # @return [Types::RebootCacheClusterResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3340
+ #
3341
+ # * {Types::RebootCacheClusterResult#cache_cluster #CacheCluster} => Types::CacheCluster
3342
+ #
3343
+ # @example Request syntax with placeholder values
3344
+ # resp = client.reboot_cache_cluster({
3345
+ # cache_cluster_id: "String", # required
3346
+ # cache_node_ids_to_reboot: ["String"], # required
3347
+ # })
3348
+ #
3349
+ # @example Response structure
3350
+ # resp.cache_cluster.cache_cluster_id #=> String
3351
+ # resp.cache_cluster.configuration_endpoint.address #=> String
3352
+ # resp.cache_cluster.configuration_endpoint.port #=> Integer
3353
+ # resp.cache_cluster.client_download_landing_page #=> String
3354
+ # resp.cache_cluster.cache_node_type #=> String
3355
+ # resp.cache_cluster.engine #=> String
3356
+ # resp.cache_cluster.engine_version #=> String
3357
+ # resp.cache_cluster.cache_cluster_status #=> String
3358
+ # resp.cache_cluster.num_cache_nodes #=> Integer
3359
+ # resp.cache_cluster.preferred_availability_zone #=> String
3360
+ # resp.cache_cluster.cache_cluster_create_time #=> Time
3361
+ # resp.cache_cluster.preferred_maintenance_window #=> String
3362
+ # resp.cache_cluster.pending_modified_values.num_cache_nodes #=> Integer
3363
+ # resp.cache_cluster.pending_modified_values.cache_node_ids_to_remove #=> Array
3364
+ # resp.cache_cluster.pending_modified_values.cache_node_ids_to_remove[0] #=> String
3365
+ # resp.cache_cluster.pending_modified_values.engine_version #=> String
3366
+ # resp.cache_cluster.pending_modified_values.cache_node_type #=> String
3367
+ # resp.cache_cluster.notification_configuration.topic_arn #=> String
3368
+ # resp.cache_cluster.notification_configuration.topic_status #=> String
3369
+ # resp.cache_cluster.cache_security_groups #=> Array
3370
+ # resp.cache_cluster.cache_security_groups[0].cache_security_group_name #=> String
3371
+ # resp.cache_cluster.cache_security_groups[0].status #=> String
3372
+ # resp.cache_cluster.cache_parameter_group.cache_parameter_group_name #=> String
3373
+ # resp.cache_cluster.cache_parameter_group.parameter_apply_status #=> String
3374
+ # resp.cache_cluster.cache_parameter_group.cache_node_ids_to_reboot #=> Array
3375
+ # resp.cache_cluster.cache_parameter_group.cache_node_ids_to_reboot[0] #=> String
3376
+ # resp.cache_cluster.cache_subnet_group_name #=> String
3377
+ # resp.cache_cluster.cache_nodes #=> Array
3378
+ # resp.cache_cluster.cache_nodes[0].cache_node_id #=> String
3379
+ # resp.cache_cluster.cache_nodes[0].cache_node_status #=> String
3380
+ # resp.cache_cluster.cache_nodes[0].cache_node_create_time #=> Time
3381
+ # resp.cache_cluster.cache_nodes[0].endpoint.address #=> String
3382
+ # resp.cache_cluster.cache_nodes[0].endpoint.port #=> Integer
3383
+ # resp.cache_cluster.cache_nodes[0].parameter_group_status #=> String
3384
+ # resp.cache_cluster.cache_nodes[0].source_cache_node_id #=> String
3385
+ # resp.cache_cluster.cache_nodes[0].customer_availability_zone #=> String
3386
+ # resp.cache_cluster.auto_minor_version_upgrade #=> Boolean
3387
+ # resp.cache_cluster.security_groups #=> Array
3388
+ # resp.cache_cluster.security_groups[0].security_group_id #=> String
3389
+ # resp.cache_cluster.security_groups[0].status #=> String
3390
+ # resp.cache_cluster.replication_group_id #=> String
3391
+ # resp.cache_cluster.snapshot_retention_limit #=> Integer
3392
+ # resp.cache_cluster.snapshot_window #=> String
3393
+ # @overload reboot_cache_cluster(params = {})
3394
+ # @param [Hash] params ({})
3395
+ def reboot_cache_cluster(params = {}, options = {})
3396
+ req = build_request(:reboot_cache_cluster, params)
3397
+ req.send_request(options)
3398
+ end
3399
+
3400
+ # Removes the tags identified by the `TagKeys` list from the named
3401
+ # resource.
3402
+ # @option params [required, String] :resource_name
3403
+ # The Amazon Resource Name (ARN) of the resource from which you want the
3404
+ # tags removed, for example
3405
+ # `arn:aws:elasticache:us-west-2:0123456789:cluster:myCluster` or
3406
+ # `arn:aws:elasticache:us-west-2:0123456789:snapshot:mySnapshot`.
3407
+ #
3408
+ # For more information about ARNs, see [Amazon Resource Names (ARNs) and
3409
+ # AWS Service Namespaces][1].
3410
+ #
3411
+ #
3412
+ #
3413
+ # [1]: http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html
3414
+ # @option params [required, Array<String>] :tag_keys
3415
+ # A list of `TagKeys` identifying the tags you want removed from the
3416
+ # named resource.
3417
+ # @return [Types::TagListMessage] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3418
+ #
3419
+ # * {Types::TagListMessage#tag_list #TagList} => Array&lt;Types::Tag&gt;
3420
+ #
3421
+ # @example Request syntax with placeholder values
3422
+ # resp = client.remove_tags_from_resource({
3423
+ # resource_name: "String", # required
3424
+ # tag_keys: ["String"], # required
3425
+ # })
3426
+ #
3427
+ # @example Response structure
3428
+ # resp.tag_list #=> Array
3429
+ # resp.tag_list[0].key #=> String
3430
+ # resp.tag_list[0].value #=> String
3431
+ # @overload remove_tags_from_resource(params = {})
3432
+ # @param [Hash] params ({})
3433
+ def remove_tags_from_resource(params = {}, options = {})
3434
+ req = build_request(:remove_tags_from_resource, params)
3435
+ req.send_request(options)
3436
+ end
3437
+
3438
+ # Modifies the parameters of a cache parameter group to the engine or
3439
+ # system default value. You can reset specific parameters by submitting
3440
+ # a list of parameter names. To reset the entire cache parameter group,
3441
+ # specify the `ResetAllParameters` and `CacheParameterGroupName`
3442
+ # parameters.
3443
+ # @option params [required, String] :cache_parameter_group_name
3444
+ # The name of the cache parameter group to reset.
3445
+ # @option params [Boolean] :reset_all_parameters
3446
+ # If `true`, all parameters in the cache parameter group are reset to
3447
+ # their default values. If `false`, only the parameters listed by
3448
+ # `ParameterNameValues` are reset to their default values.
3449
+ #
3450
+ # Valid values: `true` \| `false`
3451
+ # @option params [Array<Types::ParameterNameValue>] :parameter_name_values
3452
+ # An array of parameter names to reset to their default values. If
3453
+ # `ResetAllParameters` is `true`, do not use `ParameterNameValues`. If
3454
+ # `ResetAllParameters` is `false`, you must specify the name of at least
3455
+ # one parameter to reset.
3456
+ # @return [Types::CacheParameterGroupNameMessage] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3457
+ #
3458
+ # * {Types::CacheParameterGroupNameMessage#cache_parameter_group_name #CacheParameterGroupName} => String
3459
+ #
3460
+ # @example Request syntax with placeholder values
3461
+ # resp = client.reset_cache_parameter_group({
3462
+ # cache_parameter_group_name: "String", # required
3463
+ # reset_all_parameters: false,
3464
+ # parameter_name_values: [
3465
+ # {
3466
+ # parameter_name: "String",
3467
+ # parameter_value: "String",
3468
+ # },
3469
+ # ],
3470
+ # })
3471
+ #
3472
+ # @example Response structure
3473
+ # resp.cache_parameter_group_name #=> String
3474
+ # @overload reset_cache_parameter_group(params = {})
3475
+ # @param [Hash] params ({})
3476
+ def reset_cache_parameter_group(params = {}, options = {})
3477
+ req = build_request(:reset_cache_parameter_group, params)
3478
+ req.send_request(options)
3479
+ end
3480
+
3481
+ # Revokes ingress from a cache security group. Use this operation to
3482
+ # disallow access from an Amazon EC2 security group that had been
3483
+ # previously authorized.
3484
+ # @option params [required, String] :cache_security_group_name
3485
+ # The name of the cache security group to revoke ingress from.
3486
+ # @option params [required, String] :ec2_security_group_name
3487
+ # The name of the Amazon EC2 security group to revoke access from.
3488
+ # @option params [required, String] :ec2_security_group_owner_id
3489
+ # The AWS account number of the Amazon EC2 security group owner. Note
3490
+ # that this is not the same thing as an AWS access key ID - you must
3491
+ # provide a valid AWS account number for this parameter.
3492
+ # @return [Types::RevokeCacheSecurityGroupIngressResult] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3493
+ #
3494
+ # * {Types::RevokeCacheSecurityGroupIngressResult#cache_security_group #CacheSecurityGroup} => Types::CacheSecurityGroup
3495
+ #
3496
+ # @example Request syntax with placeholder values
3497
+ # resp = client.revoke_cache_security_group_ingress({
3498
+ # cache_security_group_name: "String", # required
3499
+ # ec2_security_group_name: "String", # required
3500
+ # ec2_security_group_owner_id: "String", # required
3501
+ # })
3502
+ #
3503
+ # @example Response structure
3504
+ # resp.cache_security_group.owner_id #=> String
3505
+ # resp.cache_security_group.cache_security_group_name #=> String
3506
+ # resp.cache_security_group.description #=> String
3507
+ # resp.cache_security_group.ec2_security_groups #=> Array
3508
+ # resp.cache_security_group.ec2_security_groups[0].status #=> String
3509
+ # resp.cache_security_group.ec2_security_groups[0].ec2_security_group_name #=> String
3510
+ # resp.cache_security_group.ec2_security_groups[0].ec2_security_group_owner_id #=> String
3511
+ # @overload revoke_cache_security_group_ingress(params = {})
3512
+ # @param [Hash] params ({})
3513
+ def revoke_cache_security_group_ingress(params = {}, options = {})
3514
+ req = build_request(:revoke_cache_security_group_ingress, params)
3515
+ req.send_request(options)
3516
+ end
3517
+
3518
+ # @!endgroup
3519
+
3520
+ # @param params ({})
3521
+ # @api private
3522
+ def build_request(operation_name, params = {})
3523
+ handlers = @handlers.for(operation_name)
3524
+ context = Seahorse::Client::RequestContext.new(
3525
+ operation_name: operation_name,
3526
+ operation: config.api.operation(operation_name),
3527
+ client: self,
3528
+ params: params,
3529
+ config: config)
3530
+ context[:gem_name] = 'aws-sdk-elasticache'
3531
+ context[:gem_version] = '1.0.0.rc1'
3532
+ Seahorse::Client::Request.new(handlers, context)
3533
+ end
3534
+
3535
+ # Polls an API operation until a resource enters a desired state.
3536
+ #
3537
+ # ## Basic Usage
3538
+ #
3539
+ # A waiter will call an API operation until:
3540
+ #
3541
+ # * It is successful
3542
+ # * It enters a terminal state
3543
+ # * It makes the maximum number of attempts
3544
+ #
3545
+ # In between attempts, the waiter will sleep.
3546
+ #
3547
+ # # polls in a loop, sleeping between attempts
3548
+ # client.waiter_until(waiter_name, params)
3549
+ #
3550
+ # ## Configuration
3551
+ #
3552
+ # You can configure the maximum number of polling attempts, and the
3553
+ # delay (in seconds) between each polling attempt. You can pass
3554
+ # configuration as the final arguments hash.
3555
+ #
3556
+ # # poll for ~25 seconds
3557
+ # client.wait_until(waiter_name, params, {
3558
+ # max_attempts: 5,
3559
+ # delay: 5,
3560
+ # })
3561
+ #
3562
+ # ## Callbacks
3563
+ #
3564
+ # You can be notified before each polling attempt and before each
3565
+ # delay. If you throw `:success` or `:failure` from these callbacks,
3566
+ # it will terminate the waiter.
3567
+ #
3568
+ # started_at = Time.now
3569
+ # client.wait_until(waiter_name, params, {
3570
+ #
3571
+ # # disable max attempts
3572
+ # max_attempts: nil,
3573
+ #
3574
+ # # poll for 1 hour, instead of a number of attempts
3575
+ # before_wait: -> (attempts, response) do
3576
+ # throw :failure if Time.now - started_at > 3600
3577
+ # end
3578
+ # })
3579
+ #
3580
+ # ## Handling Errors
3581
+ #
3582
+ # When a waiter is unsuccessful, it will raise an error.
3583
+ # All of the failure errors extend from
3584
+ # {Aws::Waiters::Errors::WaiterFailed}.
3585
+ #
3586
+ # begin
3587
+ # client.wait_until(...)
3588
+ # rescue Aws::Waiters::Errors::WaiterFailed
3589
+ # # resource did not enter the desired state in time
3590
+ # end
3591
+ #
3592
+ # ## Valid Waiters
3593
+ #
3594
+ # The following table lists the valid waiter names, the operations they call,
3595
+ # and the default `:delay` and `:max_attempts` values.
3596
+ #
3597
+ # | waiter_name | params | :delay | :max_attempts |
3598
+ # | --------------------------- | ------------------------------ | -------- | ------------- |
3599
+ # | cache_cluster_available | {#describe_cache_clusters} | 15 | 40 |
3600
+ # | cache_cluster_deleted | {#describe_cache_clusters} | 15 | 40 |
3601
+ # | replication_group_available | {#describe_replication_groups} | 15 | 40 |
3602
+ # | replication_group_deleted | {#describe_replication_groups} | 15 | 40 |
3603
+ #
3604
+ # @raise [Errors::FailureStateError] Raised when the waiter terminates
3605
+ # because the waiter has entered a state that it will not transition
3606
+ # out of, preventing success.
3607
+ #
3608
+ # @raise [Errors::TooManyAttemptsError] Raised when the configured
3609
+ # maximum number of attempts have been made, and the waiter is not
3610
+ # yet successful.
3611
+ #
3612
+ # @raise [Errors::UnexpectedError] Raised when an error is encounted
3613
+ # while polling for a resource that is not expected.
3614
+ #
3615
+ # @raise [Errors::NoSuchWaiterError] Raised when you request to wait
3616
+ # for an unknown state.
3617
+ #
3618
+ # @return [Boolean] Returns `true` if the waiter was successful.
3619
+ # @param [Symbol] waiter_name
3620
+ # @param [Hash] params ({})
3621
+ # @param [Hash] options ({})
3622
+ # @option options [Integer] :max_attempts
3623
+ # @option options [Integer] :delay
3624
+ # @option options [Proc] :before_attempt
3625
+ # @option options [Proc] :before_wait
3626
+ def wait_until(waiter_name, params = {}, options = {})
3627
+ w = waiter(waiter_name, options)
3628
+ yield(w.waiter) if block_given? # deprecated
3629
+ w.wait(params)
3630
+ end
3631
+
3632
+ # @api private
3633
+ # @deprecated
3634
+ def waiter_names
3635
+ waiters.keys
3636
+ end
3637
+
3638
+ private
3639
+
3640
+ # @param [Symbol] waiter_name
3641
+ # @param [Hash] options ({})
3642
+ def waiter(waiter_name, options = {})
3643
+ waiter_class = waiters[waiter_name]
3644
+ if waiter_class
3645
+ waiter_class.new(options.merge(client: self))
3646
+ else
3647
+ raise Aws::Waiters::Errors::NoSuchWaiterError.new(waiter_name, waiters.keys)
3648
+ end
3649
+ end
3650
+
3651
+ def waiters
3652
+ {
3653
+ cache_cluster_available: Waiters::CacheClusterAvailable,
3654
+ cache_cluster_deleted: Waiters::CacheClusterDeleted,
3655
+ replication_group_available: Waiters::ReplicationGroupAvailable,
3656
+ replication_group_deleted: Waiters::ReplicationGroupDeleted
3657
+ }
3658
+ end
3659
+
3660
+ class << self
3661
+
3662
+ # @api private
3663
+ attr_reader :identifier
3664
+
3665
+ # @api private
3666
+ def errors_module
3667
+ Errors
3668
+ end
3669
+
3670
+ end
3671
+ end
3672
+ end
3673
+ end