aws-sdk-computeoptimizerautomation 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2239 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+ require 'seahorse/client/plugins/content_length'
11
+ require 'aws-sdk-core/plugins/credentials_configuration'
12
+ require 'aws-sdk-core/plugins/logging'
13
+ require 'aws-sdk-core/plugins/param_converter'
14
+ require 'aws-sdk-core/plugins/param_validator'
15
+ require 'aws-sdk-core/plugins/user_agent'
16
+ require 'aws-sdk-core/plugins/helpful_socket_errors'
17
+ require 'aws-sdk-core/plugins/retry_errors'
18
+ require 'aws-sdk-core/plugins/global_configuration'
19
+ require 'aws-sdk-core/plugins/regional_endpoint'
20
+ require 'aws-sdk-core/plugins/endpoint_discovery'
21
+ require 'aws-sdk-core/plugins/endpoint_pattern'
22
+ require 'aws-sdk-core/plugins/response_paging'
23
+ require 'aws-sdk-core/plugins/stub_responses'
24
+ require 'aws-sdk-core/plugins/idempotency_token'
25
+ require 'aws-sdk-core/plugins/invocation_id'
26
+ require 'aws-sdk-core/plugins/jsonvalue_converter'
27
+ require 'aws-sdk-core/plugins/client_metrics_plugin'
28
+ require 'aws-sdk-core/plugins/client_metrics_send_plugin'
29
+ require 'aws-sdk-core/plugins/transfer_encoding'
30
+ require 'aws-sdk-core/plugins/http_checksum'
31
+ require 'aws-sdk-core/plugins/checksum_algorithm'
32
+ require 'aws-sdk-core/plugins/request_compression'
33
+ require 'aws-sdk-core/plugins/defaults_mode'
34
+ require 'aws-sdk-core/plugins/recursion_detection'
35
+ require 'aws-sdk-core/plugins/telemetry'
36
+ require 'aws-sdk-core/plugins/sign'
37
+ require 'aws-sdk-core/plugins/protocols/json_rpc'
38
+
39
+ module Aws::ComputeOptimizerAutomation
40
+ # An API client for ComputeOptimizerAutomation. To construct a client, you need to configure a `:region` and `:credentials`.
41
+ #
42
+ # client = Aws::ComputeOptimizerAutomation::Client.new(
43
+ # region: region_name,
44
+ # credentials: credentials,
45
+ # # ...
46
+ # )
47
+ #
48
+ # For details on configuring region and credentials see
49
+ # the [developer guide](/sdk-for-ruby/v3/developer-guide/setup-config.html).
50
+ #
51
+ # See {#initialize} for a full list of supported configuration options.
52
+ class Client < Seahorse::Client::Base
53
+
54
+ include Aws::ClientStubs
55
+
56
+ @identifier = :computeoptimizerautomation
57
+
58
+ set_api(ClientApi::API)
59
+
60
+ add_plugin(Seahorse::Client::Plugins::ContentLength)
61
+ add_plugin(Aws::Plugins::CredentialsConfiguration)
62
+ add_plugin(Aws::Plugins::Logging)
63
+ add_plugin(Aws::Plugins::ParamConverter)
64
+ add_plugin(Aws::Plugins::ParamValidator)
65
+ add_plugin(Aws::Plugins::UserAgent)
66
+ add_plugin(Aws::Plugins::HelpfulSocketErrors)
67
+ add_plugin(Aws::Plugins::RetryErrors)
68
+ add_plugin(Aws::Plugins::GlobalConfiguration)
69
+ add_plugin(Aws::Plugins::RegionalEndpoint)
70
+ add_plugin(Aws::Plugins::EndpointDiscovery)
71
+ add_plugin(Aws::Plugins::EndpointPattern)
72
+ add_plugin(Aws::Plugins::ResponsePaging)
73
+ add_plugin(Aws::Plugins::StubResponses)
74
+ add_plugin(Aws::Plugins::IdempotencyToken)
75
+ add_plugin(Aws::Plugins::InvocationId)
76
+ add_plugin(Aws::Plugins::JsonvalueConverter)
77
+ add_plugin(Aws::Plugins::ClientMetricsPlugin)
78
+ add_plugin(Aws::Plugins::ClientMetricsSendPlugin)
79
+ add_plugin(Aws::Plugins::TransferEncoding)
80
+ add_plugin(Aws::Plugins::HttpChecksum)
81
+ add_plugin(Aws::Plugins::ChecksumAlgorithm)
82
+ add_plugin(Aws::Plugins::RequestCompression)
83
+ add_plugin(Aws::Plugins::DefaultsMode)
84
+ add_plugin(Aws::Plugins::RecursionDetection)
85
+ add_plugin(Aws::Plugins::Telemetry)
86
+ add_plugin(Aws::Plugins::Sign)
87
+ add_plugin(Aws::Plugins::Protocols::JsonRpc)
88
+ add_plugin(Aws::ComputeOptimizerAutomation::Plugins::Endpoints)
89
+
90
+ # @overload initialize(options)
91
+ # @param [Hash] options
92
+ #
93
+ # @option options [Array<Seahorse::Client::Plugin>] :plugins ([]])
94
+ # A list of plugins to apply to the client. Each plugin is either a
95
+ # class name or an instance of a plugin class.
96
+ #
97
+ # @option options [required, Aws::CredentialProvider] :credentials
98
+ # Your AWS credentials used for authentication. This can be any class that includes and implements
99
+ # `Aws::CredentialProvider`, or instance of any one of the following classes:
100
+ #
101
+ # * `Aws::Credentials` - Used for configuring static, non-refreshing
102
+ # credentials.
103
+ #
104
+ # * `Aws::SharedCredentials` - Used for loading static credentials from a
105
+ # shared file, such as `~/.aws/config`.
106
+ #
107
+ # * `Aws::AssumeRoleCredentials` - Used when you need to assume a role.
108
+ #
109
+ # * `Aws::AssumeRoleWebIdentityCredentials` - Used when you need to
110
+ # assume a role after providing credentials via the web.
111
+ #
112
+ # * `Aws::SSOCredentials` - Used for loading credentials from AWS SSO using an
113
+ # access token generated from `aws login`.
114
+ #
115
+ # * `Aws::ProcessCredentials` - Used for loading credentials from a
116
+ # process that outputs to stdout.
117
+ #
118
+ # * `Aws::InstanceProfileCredentials` - Used for loading credentials
119
+ # from an EC2 IMDS on an EC2 instance.
120
+ #
121
+ # * `Aws::ECSCredentials` - Used for loading credentials from
122
+ # instances running in ECS.
123
+ #
124
+ # * `Aws::CognitoIdentityCredentials` - Used for loading credentials
125
+ # from the Cognito Identity service.
126
+ #
127
+ # When `:credentials` are not configured directly, the following locations will be searched for credentials:
128
+ #
129
+ # * `Aws.config[:credentials]`
130
+ #
131
+ # * The `:access_key_id`, `:secret_access_key`, `:session_token`, and
132
+ # `:account_id` options.
133
+ #
134
+ # * `ENV['AWS_ACCESS_KEY_ID']`, `ENV['AWS_SECRET_ACCESS_KEY']`,
135
+ # `ENV['AWS_SESSION_TOKEN']`, and `ENV['AWS_ACCOUNT_ID']`.
136
+ #
137
+ # * `~/.aws/credentials`
138
+ #
139
+ # * `~/.aws/config`
140
+ #
141
+ # * EC2/ECS IMDS instance profile - When used by default, the timeouts are very aggressive.
142
+ # Construct and pass an instance of `Aws::InstanceProfileCredentials` or `Aws::ECSCredentials` to
143
+ # enable retries and extended timeouts. Instance profile credential fetching can be disabled by
144
+ # setting `ENV['AWS_EC2_METADATA_DISABLED']` to `true`.
145
+ #
146
+ # @option options [required, String] :region
147
+ # The AWS region to connect to. The configured `:region` is
148
+ # used to determine the service `:endpoint`. When not passed,
149
+ # a default `:region` is searched for in the following locations:
150
+ #
151
+ # * `Aws.config[:region]`
152
+ # * `ENV['AWS_REGION']`
153
+ # * `ENV['AMAZON_REGION']`
154
+ # * `ENV['AWS_DEFAULT_REGION']`
155
+ # * `~/.aws/credentials`
156
+ # * `~/.aws/config`
157
+ #
158
+ # @option options [String] :access_key_id
159
+ #
160
+ # @option options [String] :account_id
161
+ #
162
+ # @option options [Boolean] :active_endpoint_cache (false)
163
+ # When set to `true`, a thread polling for endpoints will be running in
164
+ # the background every 60 secs (default). Defaults to `false`.
165
+ #
166
+ # @option options [Boolean] :adaptive_retry_wait_to_fill (true)
167
+ # Used only in `adaptive` retry mode. When true, the request will sleep
168
+ # until there is sufficent client side capacity to retry the request.
169
+ # When false, the request will raise a `RetryCapacityNotAvailableError` and will
170
+ # not retry instead of sleeping.
171
+ #
172
+ # @option options [Array<String>] :auth_scheme_preference
173
+ # A list of preferred authentication schemes to use when making a request. Supported values are:
174
+ # `sigv4`, `sigv4a`, `httpBearerAuth`, and `noAuth`. When set using `ENV['AWS_AUTH_SCHEME_PREFERENCE']` or in
175
+ # shared config as `auth_scheme_preference`, the value should be a comma-separated list.
176
+ #
177
+ # @option options [Boolean] :client_side_monitoring (false)
178
+ # When `true`, client-side metrics will be collected for all API requests from
179
+ # this client.
180
+ #
181
+ # @option options [String] :client_side_monitoring_client_id ("")
182
+ # Allows you to provide an identifier for this client which will be attached to
183
+ # all generated client side metrics. Defaults to an empty string.
184
+ #
185
+ # @option options [String] :client_side_monitoring_host ("127.0.0.1")
186
+ # Allows you to specify the DNS hostname or IPv4 or IPv6 address that the client
187
+ # side monitoring agent is running on, where client metrics will be published via UDP.
188
+ #
189
+ # @option options [Integer] :client_side_monitoring_port (31000)
190
+ # Required for publishing client metrics. The port that the client side monitoring
191
+ # agent is running on, where client metrics will be published via UDP.
192
+ #
193
+ # @option options [Aws::ClientSideMonitoring::Publisher] :client_side_monitoring_publisher (Aws::ClientSideMonitoring::Publisher)
194
+ # Allows you to provide a custom client-side monitoring publisher class. By default,
195
+ # will use the Client Side Monitoring Agent Publisher.
196
+ #
197
+ # @option options [Boolean] :convert_params (true)
198
+ # When `true`, an attempt is made to coerce request parameters into
199
+ # the required types.
200
+ #
201
+ # @option options [Boolean] :correct_clock_skew (true)
202
+ # Used only in `standard` and adaptive retry modes. Specifies whether to apply
203
+ # a clock skew correction and retry requests with skewed client clocks.
204
+ #
205
+ # @option options [String] :defaults_mode ("legacy")
206
+ # See {Aws::DefaultsModeConfiguration} for a list of the
207
+ # accepted modes and the configuration defaults that are included.
208
+ #
209
+ # @option options [Boolean] :disable_host_prefix_injection (false)
210
+ # When `true`, the SDK will not prepend the modeled host prefix to the endpoint.
211
+ #
212
+ # @option options [Boolean] :disable_request_compression (false)
213
+ # When set to 'true' the request body will not be compressed
214
+ # for supported operations.
215
+ #
216
+ # @option options [String, URI::HTTPS, URI::HTTP] :endpoint
217
+ # Normally you should not configure the `:endpoint` option
218
+ # directly. This is normally constructed from the `:region`
219
+ # option. Configuring `:endpoint` is normally reserved for
220
+ # connecting to test or custom endpoints. The endpoint should
221
+ # be a URI formatted like:
222
+ #
223
+ # 'http://example.com'
224
+ # 'https://example.com'
225
+ # 'http://example.com:123'
226
+ #
227
+ # @option options [Integer] :endpoint_cache_max_entries (1000)
228
+ # Used for the maximum size limit of the LRU cache storing endpoints data
229
+ # for endpoint discovery enabled operations. Defaults to 1000.
230
+ #
231
+ # @option options [Integer] :endpoint_cache_max_threads (10)
232
+ # Used for the maximum threads in use for polling endpoints to be cached, defaults to 10.
233
+ #
234
+ # @option options [Integer] :endpoint_cache_poll_interval (60)
235
+ # When :endpoint_discovery and :active_endpoint_cache is enabled,
236
+ # Use this option to config the time interval in seconds for making
237
+ # requests fetching endpoints information. Defaults to 60 sec.
238
+ #
239
+ # @option options [Boolean] :endpoint_discovery (false)
240
+ # When set to `true`, endpoint discovery will be enabled for operations when available.
241
+ #
242
+ # @option options [Boolean] :ignore_configured_endpoint_urls
243
+ # Setting to true disables use of endpoint URLs provided via environment
244
+ # variables and the shared configuration file.
245
+ #
246
+ # @option options [Aws::Log::Formatter] :log_formatter (Aws::Log::Formatter.default)
247
+ # The log formatter.
248
+ #
249
+ # @option options [Symbol] :log_level (:info)
250
+ # The log level to send messages to the `:logger` at.
251
+ #
252
+ # @option options [Logger] :logger
253
+ # The Logger instance to send log messages to. If this option
254
+ # is not set, logging will be disabled.
255
+ #
256
+ # @option options [Integer] :max_attempts (3)
257
+ # An integer representing the maximum number attempts that will be made for
258
+ # a single request, including the initial attempt. For example,
259
+ # setting this value to 5 will result in a request being retried up to
260
+ # 4 times. Used in `standard` and `adaptive` retry modes.
261
+ #
262
+ # @option options [String] :profile ("default")
263
+ # Used when loading credentials from the shared credentials file at `HOME/.aws/credentials`.
264
+ # When not specified, 'default' is used.
265
+ #
266
+ # @option options [String] :request_checksum_calculation ("when_supported")
267
+ # Determines when a checksum will be calculated for request payloads. Values are:
268
+ #
269
+ # * `when_supported` - (default) When set, a checksum will be
270
+ # calculated for all request payloads of operations modeled with the
271
+ # `httpChecksum` trait where `requestChecksumRequired` is `true` and/or a
272
+ # `requestAlgorithmMember` is modeled.
273
+ # * `when_required` - When set, a checksum will only be calculated for
274
+ # request payloads of operations modeled with the `httpChecksum` trait where
275
+ # `requestChecksumRequired` is `true` or where a `requestAlgorithmMember`
276
+ # is modeled and supplied.
277
+ #
278
+ # @option options [Integer] :request_min_compression_size_bytes (10240)
279
+ # The minimum size in bytes that triggers compression for request
280
+ # bodies. The value must be non-negative integer value between 0
281
+ # and 10485780 bytes inclusive.
282
+ #
283
+ # @option options [String] :response_checksum_validation ("when_supported")
284
+ # Determines when checksum validation will be performed on response payloads. Values are:
285
+ #
286
+ # * `when_supported` - (default) When set, checksum validation is performed on all
287
+ # response payloads of operations modeled with the `httpChecksum` trait where
288
+ # `responseAlgorithms` is modeled, except when no modeled checksum algorithms
289
+ # are supported.
290
+ # * `when_required` - When set, checksum validation is not performed on
291
+ # response payloads of operations unless the checksum algorithm is supported and
292
+ # the `requestValidationModeMember` member is set to `ENABLED`.
293
+ #
294
+ # @option options [Proc] :retry_backoff
295
+ # A proc or lambda used for backoff. Defaults to 2**retries * retry_base_delay.
296
+ # This option is only used in the `legacy` retry mode.
297
+ #
298
+ # @option options [Float] :retry_base_delay (0.3)
299
+ # The base delay in seconds used by the default backoff function. This option
300
+ # is only used in the `legacy` retry mode.
301
+ #
302
+ # @option options [Symbol] :retry_jitter (:none)
303
+ # A delay randomiser function used by the default backoff function.
304
+ # Some predefined functions can be referenced by name - :none, :equal, :full,
305
+ # otherwise a Proc that takes and returns a number. This option is only used
306
+ # in the `legacy` retry mode.
307
+ #
308
+ # @see https://www.awsarchitectureblog.com/2015/03/backoff.html
309
+ #
310
+ # @option options [Integer] :retry_limit (3)
311
+ # The maximum number of times to retry failed requests. Only
312
+ # ~ 500 level server errors and certain ~ 400 level client errors
313
+ # are retried. Generally, these are throttling errors, data
314
+ # checksum errors, networking errors, timeout errors, auth errors,
315
+ # endpoint discovery, and errors from expired credentials.
316
+ # This option is only used in the `legacy` retry mode.
317
+ #
318
+ # @option options [Integer] :retry_max_delay (0)
319
+ # The maximum number of seconds to delay between retries (0 for no limit)
320
+ # used by the default backoff function. This option is only used in the
321
+ # `legacy` retry mode.
322
+ #
323
+ # @option options [String] :retry_mode ("legacy")
324
+ # Specifies which retry algorithm to use. Values are:
325
+ #
326
+ # * `legacy` - The pre-existing retry behavior. This is default value if
327
+ # no retry mode is provided.
328
+ #
329
+ # * `standard` - A standardized set of retry rules across the AWS SDKs.
330
+ # This includes support for retry quotas, which limit the number of
331
+ # unsuccessful retries a client can make.
332
+ #
333
+ # * `adaptive` - An experimental retry mode that includes all the
334
+ # functionality of `standard` mode along with automatic client side
335
+ # throttling. This is a provisional mode that may change behavior
336
+ # in the future.
337
+ #
338
+ # @option options [String] :sdk_ua_app_id
339
+ # A unique and opaque application ID that is appended to the
340
+ # User-Agent header as app/sdk_ua_app_id. It should have a
341
+ # maximum length of 50. This variable is sourced from environment
342
+ # variable AWS_SDK_UA_APP_ID or the shared config profile attribute sdk_ua_app_id.
343
+ #
344
+ # @option options [String] :secret_access_key
345
+ #
346
+ # @option options [String] :session_token
347
+ #
348
+ # @option options [Array] :sigv4a_signing_region_set
349
+ # A list of regions that should be signed with SigV4a signing. When
350
+ # not passed, a default `:sigv4a_signing_region_set` is searched for
351
+ # in the following locations:
352
+ #
353
+ # * `Aws.config[:sigv4a_signing_region_set]`
354
+ # * `ENV['AWS_SIGV4A_SIGNING_REGION_SET']`
355
+ # * `~/.aws/config`
356
+ #
357
+ # @option options [Boolean] :simple_json (false)
358
+ # Disables request parameter conversion, validation, and formatting.
359
+ # Also disables response data type conversions. The request parameters
360
+ # hash must be formatted exactly as the API expects.This option is useful
361
+ # when you want to ensure the highest level of performance by avoiding
362
+ # overhead of walking request parameters and response data structures.
363
+ #
364
+ # @option options [Boolean] :stub_responses (false)
365
+ # Causes the client to return stubbed responses. By default
366
+ # fake responses are generated and returned. You can specify
367
+ # the response data to return or errors to raise by calling
368
+ # {ClientStubs#stub_responses}. See {ClientStubs} for more information.
369
+ #
370
+ # ** Please note ** When response stubbing is enabled, no HTTP
371
+ # requests are made, and retries are disabled.
372
+ #
373
+ # @option options [Aws::Telemetry::TelemetryProviderBase] :telemetry_provider (Aws::Telemetry::NoOpTelemetryProvider)
374
+ # Allows you to provide a telemetry provider, which is used to
375
+ # emit telemetry data. By default, uses `NoOpTelemetryProvider` which
376
+ # will not record or emit any telemetry data. The SDK supports the
377
+ # following telemetry providers:
378
+ #
379
+ # * OpenTelemetry (OTel) - To use the OTel provider, install and require the
380
+ # `opentelemetry-sdk` gem and then, pass in an instance of a
381
+ # `Aws::Telemetry::OTelProvider` for telemetry provider.
382
+ #
383
+ # @option options [Aws::TokenProvider] :token_provider
384
+ # Your Bearer token used for authentication. This can be any class that includes and implements
385
+ # `Aws::TokenProvider`, or instance of any one of the following classes:
386
+ #
387
+ # * `Aws::StaticTokenProvider` - Used for configuring static, non-refreshing
388
+ # tokens.
389
+ #
390
+ # * `Aws::SSOTokenProvider` - Used for loading tokens from AWS SSO using an
391
+ # access token generated from `aws login`.
392
+ #
393
+ # When `:token_provider` is not configured directly, the `Aws::TokenProviderChain`
394
+ # will be used to search for tokens configured for your profile in shared configuration files.
395
+ #
396
+ # @option options [Boolean] :use_dualstack_endpoint
397
+ # When set to `true`, dualstack enabled endpoints (with `.aws` TLD)
398
+ # will be used if available.
399
+ #
400
+ # @option options [Boolean] :use_fips_endpoint
401
+ # When set to `true`, fips compatible endpoints will be used if available.
402
+ # When a `fips` region is used, the region is normalized and this config
403
+ # is set to `true`.
404
+ #
405
+ # @option options [Boolean] :validate_params (true)
406
+ # When `true`, request parameters are validated before
407
+ # sending the request.
408
+ #
409
+ # @option options [Aws::ComputeOptimizerAutomation::EndpointProvider] :endpoint_provider
410
+ # The endpoint provider used to resolve endpoints. Any object that responds to
411
+ # `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to
412
+ # `Aws::ComputeOptimizerAutomation::EndpointParameters`.
413
+ #
414
+ # @option options [Float] :http_continue_timeout (1)
415
+ # The number of seconds to wait for a 100-continue response before sending the
416
+ # request body. This option has no effect unless the request has "Expect"
417
+ # header set to "100-continue". Defaults to `nil` which disables this
418
+ # behaviour. This value can safely be set per request on the session.
419
+ #
420
+ # @option options [Float] :http_idle_timeout (5)
421
+ # The number of seconds a connection is allowed to sit idle before it
422
+ # is considered stale. Stale connections are closed and removed from the
423
+ # pool before making a request.
424
+ #
425
+ # @option options [Float] :http_open_timeout (15)
426
+ # The default number of seconds to wait for response data.
427
+ # This value can safely be set per-request on the session.
428
+ #
429
+ # @option options [URI::HTTP,String] :http_proxy
430
+ # A proxy to send requests through. Formatted like 'http://proxy.com:123'.
431
+ #
432
+ # @option options [Float] :http_read_timeout (60)
433
+ # The default number of seconds to wait for response data.
434
+ # This value can safely be set per-request on the session.
435
+ #
436
+ # @option options [Boolean] :http_wire_trace (false)
437
+ # When `true`, HTTP debug output will be sent to the `:logger`.
438
+ #
439
+ # @option options [Proc] :on_chunk_received
440
+ # When a Proc object is provided, it will be used as callback when each chunk
441
+ # of the response body is received. It provides three arguments: the chunk,
442
+ # the number of bytes received, and the total number of
443
+ # bytes in the response (or nil if the server did not send a `content-length`).
444
+ #
445
+ # @option options [Proc] :on_chunk_sent
446
+ # When a Proc object is provided, it will be used as callback when each chunk
447
+ # of the request body is sent. It provides three arguments: the chunk,
448
+ # the number of bytes read from the body, and the total number of
449
+ # bytes in the body.
450
+ #
451
+ # @option options [Boolean] :raise_response_errors (true)
452
+ # When `true`, response errors are raised.
453
+ #
454
+ # @option options [String] :ssl_ca_bundle
455
+ # Full path to the SSL certificate authority bundle file that should be used when
456
+ # verifying peer certificates. If you do not pass `:ssl_ca_bundle` or
457
+ # `:ssl_ca_directory` the the system default will be used if available.
458
+ #
459
+ # @option options [String] :ssl_ca_directory
460
+ # Full path of the directory that contains the unbundled SSL certificate
461
+ # authority files for verifying peer certificates. If you do
462
+ # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the system
463
+ # default will be used if available.
464
+ #
465
+ # @option options [String] :ssl_ca_store
466
+ # Sets the X509::Store to verify peer certificate.
467
+ #
468
+ # @option options [OpenSSL::X509::Certificate] :ssl_cert
469
+ # Sets a client certificate when creating http connections.
470
+ #
471
+ # @option options [OpenSSL::PKey] :ssl_key
472
+ # Sets a client key when creating http connections.
473
+ #
474
+ # @option options [Float] :ssl_timeout
475
+ # Sets the SSL timeout in seconds
476
+ #
477
+ # @option options [Boolean] :ssl_verify_peer (true)
478
+ # When `true`, SSL peer certificates are verified when establishing a connection.
479
+ #
480
+ def initialize(*args)
481
+ super
482
+ end
483
+
484
+ # @!group API Operations
485
+
486
+ # Associates one or more member accounts with your organization's
487
+ # management account, enabling centralized implementation of
488
+ # optimization actions across those accounts. Once associated, the
489
+ # management account (or a delegated administrator) can apply
490
+ # recommended actions to the member account. When you associate a member
491
+ # account, its organization rule mode is automatically set to "Any
492
+ # allowed," which permits the management account to create Automation
493
+ # rules that automatically apply actions to that account. If the member
494
+ # account has not previously enabled the Automation feature, the
495
+ # association process automatically enables it.
496
+ #
497
+ # <note markdown="1"> Only the management account or a delegated administrator can perform
498
+ # this action.
499
+ #
500
+ # </note>
501
+ #
502
+ # @option params [required, Array<String>] :account_ids
503
+ # The IDs of the member accounts to associate. You can specify up to 50
504
+ # account IDs.
505
+ #
506
+ # @option params [String] :client_token
507
+ # A unique identifier to ensure idempotency of the request. Valid for 24
508
+ # hours after creation.
509
+ #
510
+ # **A suitable default value is auto-generated.** You should normally
511
+ # not need to pass this option.**
512
+ #
513
+ # @return [Types::AssociateAccountsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
514
+ #
515
+ # * {Types::AssociateAccountsResponse#account_ids #account_ids} => Array&lt;String&gt;
516
+ # * {Types::AssociateAccountsResponse#errors #errors} => Array&lt;String&gt;
517
+ #
518
+ # @example Request syntax with placeholder values
519
+ #
520
+ # resp = client.associate_accounts({
521
+ # account_ids: ["AccountId"], # required
522
+ # client_token: "ClientToken",
523
+ # })
524
+ #
525
+ # @example Response structure
526
+ #
527
+ # resp.account_ids #=> Array
528
+ # resp.account_ids[0] #=> String
529
+ # resp.errors #=> Array
530
+ # resp.errors[0] #=> String
531
+ #
532
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/AssociateAccounts AWS API Documentation
533
+ #
534
+ # @overload associate_accounts(params = {})
535
+ # @param [Hash] params ({})
536
+ def associate_accounts(params = {}, options = {})
537
+ req = build_request(:associate_accounts, params)
538
+ req.send_request(options)
539
+ end
540
+
541
+ # Creates a new automation rule to apply recommended actions to
542
+ # resources based on specified criteria.
543
+ #
544
+ # @option params [required, String] :name
545
+ # The name of the automation rule.
546
+ #
547
+ # @option params [String] :description
548
+ # A description of the automation rule.
549
+ #
550
+ # @option params [required, String] :rule_type
551
+ # The type of rule.
552
+ #
553
+ # <note markdown="1"> Only the management account or a delegated administrator can set the
554
+ # ruleType to be OrganizationRule.
555
+ #
556
+ # </note>
557
+ #
558
+ # @option params [Types::OrganizationConfiguration] :organization_configuration
559
+ # Configuration for organization-level rules. Required for
560
+ # OrganizationRule type.
561
+ #
562
+ # @option params [String] :priority
563
+ # A string representation of a decimal number between 0 and 1 (having up
564
+ # to 30 digits after the decimal point) that determines the priority of
565
+ # the rule. When multiple rules match the same recommended action,
566
+ # Compute Optimizer assigns the action to the rule with the lowest
567
+ # priority value (highest priority), even if that rule is scheduled to
568
+ # run later than other matching rules.
569
+ #
570
+ # @option params [required, Array<String>] :recommended_action_types
571
+ # The types of recommended actions this rule will automate.
572
+ #
573
+ # @option params [Types::Criteria] :criteria
574
+ # A set of conditions that specify which recommended action qualify for
575
+ # implementation. When a rule is active and a recommended action matches
576
+ # these criteria, Compute Optimizer implements the action at the
577
+ # scheduled run time.
578
+ #
579
+ # @option params [required, Types::Schedule] :schedule
580
+ # The schedule for when the rule should run.
581
+ #
582
+ # @option params [required, String] :status
583
+ # The status of the rule
584
+ #
585
+ # @option params [Array<Types::Tag>] :tags
586
+ # The tags to associate with the rule.
587
+ #
588
+ # @option params [String] :client_token
589
+ # A unique identifier to ensure idempotency of the request.
590
+ #
591
+ # **A suitable default value is auto-generated.** You should normally
592
+ # not need to pass this option.**
593
+ #
594
+ # @return [Types::CreateAutomationRuleResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
595
+ #
596
+ # * {Types::CreateAutomationRuleResponse#rule_arn #rule_arn} => String
597
+ # * {Types::CreateAutomationRuleResponse#rule_id #rule_id} => String
598
+ # * {Types::CreateAutomationRuleResponse#name #name} => String
599
+ # * {Types::CreateAutomationRuleResponse#description #description} => String
600
+ # * {Types::CreateAutomationRuleResponse#rule_type #rule_type} => String
601
+ # * {Types::CreateAutomationRuleResponse#rule_revision #rule_revision} => Integer
602
+ # * {Types::CreateAutomationRuleResponse#organization_configuration #organization_configuration} => Types::OrganizationConfiguration
603
+ # * {Types::CreateAutomationRuleResponse#priority #priority} => String
604
+ # * {Types::CreateAutomationRuleResponse#recommended_action_types #recommended_action_types} => Array&lt;String&gt;
605
+ # * {Types::CreateAutomationRuleResponse#criteria #criteria} => Types::Criteria
606
+ # * {Types::CreateAutomationRuleResponse#schedule #schedule} => Types::Schedule
607
+ # * {Types::CreateAutomationRuleResponse#status #status} => String
608
+ # * {Types::CreateAutomationRuleResponse#tags #tags} => Array&lt;Types::Tag&gt;
609
+ # * {Types::CreateAutomationRuleResponse#created_timestamp #created_timestamp} => Time
610
+ #
611
+ # @example Request syntax with placeholder values
612
+ #
613
+ # resp = client.create_automation_rule({
614
+ # name: "RuleName", # required
615
+ # description: "RuleDescription",
616
+ # rule_type: "OrganizationRule", # required, accepts OrganizationRule, AccountRule
617
+ # organization_configuration: {
618
+ # rule_apply_order: "BeforeAccountRules", # accepts BeforeAccountRules, AfterAccountRules
619
+ # account_ids: ["AccountId"],
620
+ # },
621
+ # priority: "String",
622
+ # recommended_action_types: ["SnapshotAndDeleteUnattachedEbsVolume"], # required, accepts SnapshotAndDeleteUnattachedEbsVolume, UpgradeEbsVolumeType
623
+ # criteria: {
624
+ # region: [
625
+ # {
626
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
627
+ # values: ["StringCriteriaValue"],
628
+ # },
629
+ # ],
630
+ # resource_arn: [
631
+ # {
632
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
633
+ # values: ["StringCriteriaValue"],
634
+ # },
635
+ # ],
636
+ # ebs_volume_type: [
637
+ # {
638
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
639
+ # values: ["StringCriteriaValue"],
640
+ # },
641
+ # ],
642
+ # ebs_volume_size_in_gib: [
643
+ # {
644
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
645
+ # values: [1],
646
+ # },
647
+ # ],
648
+ # estimated_monthly_savings: [
649
+ # {
650
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
651
+ # values: [1.0],
652
+ # },
653
+ # ],
654
+ # resource_tag: [
655
+ # {
656
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
657
+ # key: "StringCriteriaValue",
658
+ # values: ["StringCriteriaValue"],
659
+ # },
660
+ # ],
661
+ # look_back_period_in_days: [
662
+ # {
663
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
664
+ # values: [1],
665
+ # },
666
+ # ],
667
+ # restart_needed: [
668
+ # {
669
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
670
+ # values: ["StringCriteriaValue"],
671
+ # },
672
+ # ],
673
+ # },
674
+ # schedule: { # required
675
+ # schedule_expression: "String",
676
+ # schedule_expression_timezone: "String",
677
+ # execution_window_in_minutes: 1,
678
+ # },
679
+ # status: "Active", # required, accepts Active, Inactive
680
+ # tags: [
681
+ # {
682
+ # key: "TagKey", # required
683
+ # value: "TagValue", # required
684
+ # },
685
+ # ],
686
+ # client_token: "ClientToken",
687
+ # })
688
+ #
689
+ # @example Response structure
690
+ #
691
+ # resp.rule_arn #=> String
692
+ # resp.rule_id #=> String
693
+ # resp.name #=> String
694
+ # resp.description #=> String
695
+ # resp.rule_type #=> String, one of "OrganizationRule", "AccountRule"
696
+ # resp.rule_revision #=> Integer
697
+ # resp.organization_configuration.rule_apply_order #=> String, one of "BeforeAccountRules", "AfterAccountRules"
698
+ # resp.organization_configuration.account_ids #=> Array
699
+ # resp.organization_configuration.account_ids[0] #=> String
700
+ # resp.priority #=> String
701
+ # resp.recommended_action_types #=> Array
702
+ # resp.recommended_action_types[0] #=> String, one of "SnapshotAndDeleteUnattachedEbsVolume", "UpgradeEbsVolumeType"
703
+ # resp.criteria.region #=> Array
704
+ # resp.criteria.region[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
705
+ # resp.criteria.region[0].values #=> Array
706
+ # resp.criteria.region[0].values[0] #=> String
707
+ # resp.criteria.resource_arn #=> Array
708
+ # resp.criteria.resource_arn[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
709
+ # resp.criteria.resource_arn[0].values #=> Array
710
+ # resp.criteria.resource_arn[0].values[0] #=> String
711
+ # resp.criteria.ebs_volume_type #=> Array
712
+ # resp.criteria.ebs_volume_type[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
713
+ # resp.criteria.ebs_volume_type[0].values #=> Array
714
+ # resp.criteria.ebs_volume_type[0].values[0] #=> String
715
+ # resp.criteria.ebs_volume_size_in_gib #=> Array
716
+ # resp.criteria.ebs_volume_size_in_gib[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
717
+ # resp.criteria.ebs_volume_size_in_gib[0].values #=> Array
718
+ # resp.criteria.ebs_volume_size_in_gib[0].values[0] #=> Integer
719
+ # resp.criteria.estimated_monthly_savings #=> Array
720
+ # resp.criteria.estimated_monthly_savings[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
721
+ # resp.criteria.estimated_monthly_savings[0].values #=> Array
722
+ # resp.criteria.estimated_monthly_savings[0].values[0] #=> Float
723
+ # resp.criteria.resource_tag #=> Array
724
+ # resp.criteria.resource_tag[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
725
+ # resp.criteria.resource_tag[0].key #=> String
726
+ # resp.criteria.resource_tag[0].values #=> Array
727
+ # resp.criteria.resource_tag[0].values[0] #=> String
728
+ # resp.criteria.look_back_period_in_days #=> Array
729
+ # resp.criteria.look_back_period_in_days[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
730
+ # resp.criteria.look_back_period_in_days[0].values #=> Array
731
+ # resp.criteria.look_back_period_in_days[0].values[0] #=> Integer
732
+ # resp.criteria.restart_needed #=> Array
733
+ # resp.criteria.restart_needed[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
734
+ # resp.criteria.restart_needed[0].values #=> Array
735
+ # resp.criteria.restart_needed[0].values[0] #=> String
736
+ # resp.schedule.schedule_expression #=> String
737
+ # resp.schedule.schedule_expression_timezone #=> String
738
+ # resp.schedule.execution_window_in_minutes #=> Integer
739
+ # resp.status #=> String, one of "Active", "Inactive"
740
+ # resp.tags #=> Array
741
+ # resp.tags[0].key #=> String
742
+ # resp.tags[0].value #=> String
743
+ # resp.created_timestamp #=> Time
744
+ #
745
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/CreateAutomationRule AWS API Documentation
746
+ #
747
+ # @overload create_automation_rule(params = {})
748
+ # @param [Hash] params ({})
749
+ def create_automation_rule(params = {}, options = {})
750
+ req = build_request(:create_automation_rule, params)
751
+ req.send_request(options)
752
+ end
753
+
754
+ # Deletes an existing automation rule.
755
+ #
756
+ # @option params [required, String] :rule_arn
757
+ # The ARN of the rule to delete.
758
+ #
759
+ # @option params [required, Integer] :rule_revision
760
+ # The revision number of the rule to delete.
761
+ #
762
+ # @option params [String] :client_token
763
+ # A unique identifier to ensure idempotency of the request.
764
+ #
765
+ # **A suitable default value is auto-generated.** You should normally
766
+ # not need to pass this option.**
767
+ #
768
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
769
+ #
770
+ # @example Request syntax with placeholder values
771
+ #
772
+ # resp = client.delete_automation_rule({
773
+ # rule_arn: "RuleArn", # required
774
+ # rule_revision: 1, # required
775
+ # client_token: "ClientToken",
776
+ # })
777
+ #
778
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/DeleteAutomationRule AWS API Documentation
779
+ #
780
+ # @overload delete_automation_rule(params = {})
781
+ # @param [Hash] params ({})
782
+ def delete_automation_rule(params = {}, options = {})
783
+ req = build_request(:delete_automation_rule, params)
784
+ req.send_request(options)
785
+ end
786
+
787
+ # Disassociates member accounts from your organization's management
788
+ # account, removing centralized automation capabilities. Once
789
+ # disassociated, organization rules no longer apply to the member
790
+ # account, and the management account (or delegated administrator)
791
+ # cannot create Automation rules for that account.
792
+ #
793
+ # <note markdown="1"> Only the management account or a delegated administrator can perform
794
+ # this action.
795
+ #
796
+ # </note>
797
+ #
798
+ # @option params [required, Array<String>] :account_ids
799
+ # The IDs of the member accounts to disassociate.
800
+ #
801
+ # @option params [String] :client_token
802
+ # A unique identifier to ensure idempotency of the request.
803
+ #
804
+ # **A suitable default value is auto-generated.** You should normally
805
+ # not need to pass this option.**
806
+ #
807
+ # @return [Types::DisassociateAccountsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
808
+ #
809
+ # * {Types::DisassociateAccountsResponse#account_ids #account_ids} => Array&lt;String&gt;
810
+ # * {Types::DisassociateAccountsResponse#errors #errors} => Array&lt;String&gt;
811
+ #
812
+ # @example Request syntax with placeholder values
813
+ #
814
+ # resp = client.disassociate_accounts({
815
+ # account_ids: ["AccountId"], # required
816
+ # client_token: "ClientToken",
817
+ # })
818
+ #
819
+ # @example Response structure
820
+ #
821
+ # resp.account_ids #=> Array
822
+ # resp.account_ids[0] #=> String
823
+ # resp.errors #=> Array
824
+ # resp.errors[0] #=> String
825
+ #
826
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/DisassociateAccounts AWS API Documentation
827
+ #
828
+ # @overload disassociate_accounts(params = {})
829
+ # @param [Hash] params ({})
830
+ def disassociate_accounts(params = {}, options = {})
831
+ req = build_request(:disassociate_accounts, params)
832
+ req.send_request(options)
833
+ end
834
+
835
+ # Retrieves details about a specific automation event.
836
+ #
837
+ # @option params [required, String] :event_id
838
+ # The ID of the automation event to retrieve.
839
+ #
840
+ # @return [Types::GetAutomationEventResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
841
+ #
842
+ # * {Types::GetAutomationEventResponse#event_id #event_id} => String
843
+ # * {Types::GetAutomationEventResponse#event_description #event_description} => String
844
+ # * {Types::GetAutomationEventResponse#event_type #event_type} => String
845
+ # * {Types::GetAutomationEventResponse#event_status #event_status} => String
846
+ # * {Types::GetAutomationEventResponse#event_status_reason #event_status_reason} => String
847
+ # * {Types::GetAutomationEventResponse#resource_arn #resource_arn} => String
848
+ # * {Types::GetAutomationEventResponse#resource_id #resource_id} => String
849
+ # * {Types::GetAutomationEventResponse#recommended_action_id #recommended_action_id} => String
850
+ # * {Types::GetAutomationEventResponse#account_id #account_id} => String
851
+ # * {Types::GetAutomationEventResponse#region #region} => String
852
+ # * {Types::GetAutomationEventResponse#rule_id #rule_id} => String
853
+ # * {Types::GetAutomationEventResponse#resource_type #resource_type} => String
854
+ # * {Types::GetAutomationEventResponse#created_timestamp #created_timestamp} => Time
855
+ # * {Types::GetAutomationEventResponse#completed_timestamp #completed_timestamp} => Time
856
+ # * {Types::GetAutomationEventResponse#estimated_monthly_savings #estimated_monthly_savings} => Types::EstimatedMonthlySavings
857
+ #
858
+ # @example Request syntax with placeholder values
859
+ #
860
+ # resp = client.get_automation_event({
861
+ # event_id: "EventId", # required
862
+ # })
863
+ #
864
+ # @example Response structure
865
+ #
866
+ # resp.event_id #=> String
867
+ # resp.event_description #=> String
868
+ # resp.event_type #=> String, one of "SnapshotAndDeleteUnattachedEbsVolume", "UpgradeEbsVolumeType"
869
+ # resp.event_status #=> String, one of "Ready", "InProgress", "Complete", "Failed", "Cancelled", "RollbackReady", "RollbackInProgress", "RollbackComplete", "RollbackFailed"
870
+ # resp.event_status_reason #=> String
871
+ # resp.resource_arn #=> String
872
+ # resp.resource_id #=> String
873
+ # resp.recommended_action_id #=> String
874
+ # resp.account_id #=> String
875
+ # resp.region #=> String
876
+ # resp.rule_id #=> String
877
+ # resp.resource_type #=> String, one of "EbsVolume"
878
+ # resp.created_timestamp #=> Time
879
+ # resp.completed_timestamp #=> Time
880
+ # resp.estimated_monthly_savings.currency #=> String
881
+ # resp.estimated_monthly_savings.before_discount_savings #=> Float
882
+ # resp.estimated_monthly_savings.after_discount_savings #=> Float
883
+ # resp.estimated_monthly_savings.savings_estimation_mode #=> String, one of "BeforeDiscount", "AfterDiscount"
884
+ #
885
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/GetAutomationEvent AWS API Documentation
886
+ #
887
+ # @overload get_automation_event(params = {})
888
+ # @param [Hash] params ({})
889
+ def get_automation_event(params = {}, options = {})
890
+ req = build_request(:get_automation_event, params)
891
+ req.send_request(options)
892
+ end
893
+
894
+ # Retrieves details about a specific automation rule.
895
+ #
896
+ # @option params [required, String] :rule_arn
897
+ # The ARN of the rule to retrieve.
898
+ #
899
+ # @return [Types::GetAutomationRuleResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
900
+ #
901
+ # * {Types::GetAutomationRuleResponse#rule_arn #rule_arn} => String
902
+ # * {Types::GetAutomationRuleResponse#rule_id #rule_id} => String
903
+ # * {Types::GetAutomationRuleResponse#name #name} => String
904
+ # * {Types::GetAutomationRuleResponse#description #description} => String
905
+ # * {Types::GetAutomationRuleResponse#rule_type #rule_type} => String
906
+ # * {Types::GetAutomationRuleResponse#rule_revision #rule_revision} => Integer
907
+ # * {Types::GetAutomationRuleResponse#account_id #account_id} => String
908
+ # * {Types::GetAutomationRuleResponse#organization_configuration #organization_configuration} => Types::OrganizationConfiguration
909
+ # * {Types::GetAutomationRuleResponse#priority #priority} => String
910
+ # * {Types::GetAutomationRuleResponse#recommended_action_types #recommended_action_types} => Array&lt;String&gt;
911
+ # * {Types::GetAutomationRuleResponse#criteria #criteria} => Types::Criteria
912
+ # * {Types::GetAutomationRuleResponse#schedule #schedule} => Types::Schedule
913
+ # * {Types::GetAutomationRuleResponse#status #status} => String
914
+ # * {Types::GetAutomationRuleResponse#tags #tags} => Array&lt;Types::Tag&gt;
915
+ # * {Types::GetAutomationRuleResponse#created_timestamp #created_timestamp} => Time
916
+ # * {Types::GetAutomationRuleResponse#last_updated_timestamp #last_updated_timestamp} => Time
917
+ #
918
+ # @example Request syntax with placeholder values
919
+ #
920
+ # resp = client.get_automation_rule({
921
+ # rule_arn: "RuleArn", # required
922
+ # })
923
+ #
924
+ # @example Response structure
925
+ #
926
+ # resp.rule_arn #=> String
927
+ # resp.rule_id #=> String
928
+ # resp.name #=> String
929
+ # resp.description #=> String
930
+ # resp.rule_type #=> String, one of "OrganizationRule", "AccountRule"
931
+ # resp.rule_revision #=> Integer
932
+ # resp.account_id #=> String
933
+ # resp.organization_configuration.rule_apply_order #=> String, one of "BeforeAccountRules", "AfterAccountRules"
934
+ # resp.organization_configuration.account_ids #=> Array
935
+ # resp.organization_configuration.account_ids[0] #=> String
936
+ # resp.priority #=> String
937
+ # resp.recommended_action_types #=> Array
938
+ # resp.recommended_action_types[0] #=> String, one of "SnapshotAndDeleteUnattachedEbsVolume", "UpgradeEbsVolumeType"
939
+ # resp.criteria.region #=> Array
940
+ # resp.criteria.region[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
941
+ # resp.criteria.region[0].values #=> Array
942
+ # resp.criteria.region[0].values[0] #=> String
943
+ # resp.criteria.resource_arn #=> Array
944
+ # resp.criteria.resource_arn[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
945
+ # resp.criteria.resource_arn[0].values #=> Array
946
+ # resp.criteria.resource_arn[0].values[0] #=> String
947
+ # resp.criteria.ebs_volume_type #=> Array
948
+ # resp.criteria.ebs_volume_type[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
949
+ # resp.criteria.ebs_volume_type[0].values #=> Array
950
+ # resp.criteria.ebs_volume_type[0].values[0] #=> String
951
+ # resp.criteria.ebs_volume_size_in_gib #=> Array
952
+ # resp.criteria.ebs_volume_size_in_gib[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
953
+ # resp.criteria.ebs_volume_size_in_gib[0].values #=> Array
954
+ # resp.criteria.ebs_volume_size_in_gib[0].values[0] #=> Integer
955
+ # resp.criteria.estimated_monthly_savings #=> Array
956
+ # resp.criteria.estimated_monthly_savings[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
957
+ # resp.criteria.estimated_monthly_savings[0].values #=> Array
958
+ # resp.criteria.estimated_monthly_savings[0].values[0] #=> Float
959
+ # resp.criteria.resource_tag #=> Array
960
+ # resp.criteria.resource_tag[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
961
+ # resp.criteria.resource_tag[0].key #=> String
962
+ # resp.criteria.resource_tag[0].values #=> Array
963
+ # resp.criteria.resource_tag[0].values[0] #=> String
964
+ # resp.criteria.look_back_period_in_days #=> Array
965
+ # resp.criteria.look_back_period_in_days[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
966
+ # resp.criteria.look_back_period_in_days[0].values #=> Array
967
+ # resp.criteria.look_back_period_in_days[0].values[0] #=> Integer
968
+ # resp.criteria.restart_needed #=> Array
969
+ # resp.criteria.restart_needed[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
970
+ # resp.criteria.restart_needed[0].values #=> Array
971
+ # resp.criteria.restart_needed[0].values[0] #=> String
972
+ # resp.schedule.schedule_expression #=> String
973
+ # resp.schedule.schedule_expression_timezone #=> String
974
+ # resp.schedule.execution_window_in_minutes #=> Integer
975
+ # resp.status #=> String, one of "Active", "Inactive"
976
+ # resp.tags #=> Array
977
+ # resp.tags[0].key #=> String
978
+ # resp.tags[0].value #=> String
979
+ # resp.created_timestamp #=> Time
980
+ # resp.last_updated_timestamp #=> Time
981
+ #
982
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/GetAutomationRule AWS API Documentation
983
+ #
984
+ # @overload get_automation_rule(params = {})
985
+ # @param [Hash] params ({})
986
+ def get_automation_rule(params = {}, options = {})
987
+ req = build_request(:get_automation_rule, params)
988
+ req.send_request(options)
989
+ end
990
+
991
+ # Retrieves the current enrollment configuration for Compute Optimizer
992
+ # Automation.
993
+ #
994
+ # @return [Types::GetEnrollmentConfigurationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
995
+ #
996
+ # * {Types::GetEnrollmentConfigurationResponse#status #status} => String
997
+ # * {Types::GetEnrollmentConfigurationResponse#status_reason #status_reason} => String
998
+ # * {Types::GetEnrollmentConfigurationResponse#organization_rule_mode #organization_rule_mode} => String
999
+ # * {Types::GetEnrollmentConfigurationResponse#last_updated_timestamp #last_updated_timestamp} => Time
1000
+ #
1001
+ # @example Response structure
1002
+ #
1003
+ # resp.status #=> String, one of "Active", "Inactive", "Pending", "Failed"
1004
+ # resp.status_reason #=> String
1005
+ # resp.organization_rule_mode #=> String, one of "AnyAllowed", "NoneAllowed"
1006
+ # resp.last_updated_timestamp #=> Time
1007
+ #
1008
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/GetEnrollmentConfiguration AWS API Documentation
1009
+ #
1010
+ # @overload get_enrollment_configuration(params = {})
1011
+ # @param [Hash] params ({})
1012
+ def get_enrollment_configuration(params = {}, options = {})
1013
+ req = build_request(:get_enrollment_configuration, params)
1014
+ req.send_request(options)
1015
+ end
1016
+
1017
+ # Lists the accounts in your organization that are enrolled in Compute
1018
+ # Optimizer and whether they have enabled Automation.
1019
+ #
1020
+ # <note markdown="1"> Only the management account or a delegated administrator can perform
1021
+ # this action.
1022
+ #
1023
+ # </note>
1024
+ #
1025
+ # @option params [Integer] :max_results
1026
+ # The maximum number of results to return in a single call.
1027
+ #
1028
+ # @option params [String] :next_token
1029
+ # The token for the next page of results.
1030
+ #
1031
+ # @return [Types::ListAccountsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1032
+ #
1033
+ # * {Types::ListAccountsResponse#accounts #accounts} => Array&lt;Types::AccountInfo&gt;
1034
+ # * {Types::ListAccountsResponse#next_token #next_token} => String
1035
+ #
1036
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1037
+ #
1038
+ # @example Request syntax with placeholder values
1039
+ #
1040
+ # resp = client.list_accounts({
1041
+ # max_results: 1,
1042
+ # next_token: "NextToken",
1043
+ # })
1044
+ #
1045
+ # @example Response structure
1046
+ #
1047
+ # resp.accounts #=> Array
1048
+ # resp.accounts[0].account_id #=> String
1049
+ # resp.accounts[0].status #=> String, one of "Active", "Inactive", "Pending", "Failed"
1050
+ # resp.accounts[0].organization_rule_mode #=> String, one of "AnyAllowed", "NoneAllowed"
1051
+ # resp.accounts[0].status_reason #=> String
1052
+ # resp.accounts[0].last_updated_timestamp #=> Time
1053
+ # resp.next_token #=> String
1054
+ #
1055
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/ListAccounts AWS API Documentation
1056
+ #
1057
+ # @overload list_accounts(params = {})
1058
+ # @param [Hash] params ({})
1059
+ def list_accounts(params = {}, options = {})
1060
+ req = build_request(:list_accounts, params)
1061
+ req.send_request(options)
1062
+ end
1063
+
1064
+ # Lists the steps for a specific automation event. You can only list
1065
+ # steps for events created within the past year.
1066
+ #
1067
+ # @option params [required, String] :event_id
1068
+ # The ID of the automation event.
1069
+ #
1070
+ # @option params [Integer] :max_results
1071
+ # The maximum number of automation event steps to return in a single
1072
+ # response. Valid range is 1-1000.
1073
+ #
1074
+ # @option params [String] :next_token
1075
+ # A token used for pagination to retrieve the next set of results when
1076
+ # the response is truncated.
1077
+ #
1078
+ # @return [Types::ListAutomationEventStepsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1079
+ #
1080
+ # * {Types::ListAutomationEventStepsResponse#automation_event_steps #automation_event_steps} => Array&lt;Types::AutomationEventStep&gt;
1081
+ # * {Types::ListAutomationEventStepsResponse#next_token #next_token} => String
1082
+ #
1083
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1084
+ #
1085
+ # @example Request syntax with placeholder values
1086
+ #
1087
+ # resp = client.list_automation_event_steps({
1088
+ # event_id: "EventId", # required
1089
+ # max_results: 1,
1090
+ # next_token: "NextToken",
1091
+ # })
1092
+ #
1093
+ # @example Response structure
1094
+ #
1095
+ # resp.automation_event_steps #=> Array
1096
+ # resp.automation_event_steps[0].event_id #=> String
1097
+ # resp.automation_event_steps[0].step_id #=> String
1098
+ # resp.automation_event_steps[0].step_type #=> String, one of "CreateEbsSnapshot", "DeleteEbsVolume", "ModifyEbsVolume", "CreateEbsVolume"
1099
+ # resp.automation_event_steps[0].step_status #=> String, one of "Ready", "InProgress", "Complete", "Failed"
1100
+ # resp.automation_event_steps[0].resource_id #=> String
1101
+ # resp.automation_event_steps[0].start_timestamp #=> Time
1102
+ # resp.automation_event_steps[0].completed_timestamp #=> Time
1103
+ # resp.automation_event_steps[0].estimated_monthly_savings.currency #=> String
1104
+ # resp.automation_event_steps[0].estimated_monthly_savings.before_discount_savings #=> Float
1105
+ # resp.automation_event_steps[0].estimated_monthly_savings.after_discount_savings #=> Float
1106
+ # resp.automation_event_steps[0].estimated_monthly_savings.savings_estimation_mode #=> String, one of "BeforeDiscount", "AfterDiscount"
1107
+ # resp.next_token #=> String
1108
+ #
1109
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/ListAutomationEventSteps AWS API Documentation
1110
+ #
1111
+ # @overload list_automation_event_steps(params = {})
1112
+ # @param [Hash] params ({})
1113
+ def list_automation_event_steps(params = {}, options = {})
1114
+ req = build_request(:list_automation_event_steps, params)
1115
+ req.send_request(options)
1116
+ end
1117
+
1118
+ # Provides a summary of automation events based on specified filters.
1119
+ # Only events created within the past year will be included in the
1120
+ # summary.
1121
+ #
1122
+ # @option params [Array<Types::AutomationEventFilter>] :filters
1123
+ # The filters to apply to the list of automation event summaries.
1124
+ #
1125
+ # @option params [String] :start_date_inclusive
1126
+ # The start date for filtering automation event summaries, inclusive.
1127
+ # Events created on or after this date will be included.
1128
+ #
1129
+ # @option params [String] :end_date_exclusive
1130
+ # The end date for filtering automation event summaries, exclusive.
1131
+ # Events created before this date will be included.
1132
+ #
1133
+ # @option params [Integer] :max_results
1134
+ # The maximum number of automation event summaries to return in a single
1135
+ # response. Valid range is 1-1000.
1136
+ #
1137
+ # @option params [String] :next_token
1138
+ # A token used for pagination to retrieve the next set of results when
1139
+ # the response is truncated.
1140
+ #
1141
+ # @return [Types::ListAutomationEventSummariesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1142
+ #
1143
+ # * {Types::ListAutomationEventSummariesResponse#automation_event_summaries #automation_event_summaries} => Array&lt;Types::AutomationEventSummary&gt;
1144
+ # * {Types::ListAutomationEventSummariesResponse#next_token #next_token} => String
1145
+ #
1146
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1147
+ #
1148
+ # @example Request syntax with placeholder values
1149
+ #
1150
+ # resp = client.list_automation_event_summaries({
1151
+ # filters: [
1152
+ # {
1153
+ # name: "AccountId", # required, accepts AccountId, ResourceType, EventType, EventStatus
1154
+ # values: ["FilterValue"], # required
1155
+ # },
1156
+ # ],
1157
+ # start_date_inclusive: "String",
1158
+ # end_date_exclusive: "String",
1159
+ # max_results: 1,
1160
+ # next_token: "NextToken",
1161
+ # })
1162
+ #
1163
+ # @example Response structure
1164
+ #
1165
+ # resp.automation_event_summaries #=> Array
1166
+ # resp.automation_event_summaries[0].key #=> String
1167
+ # resp.automation_event_summaries[0].dimensions #=> Array
1168
+ # resp.automation_event_summaries[0].dimensions[0].key #=> String, one of "EventStatus"
1169
+ # resp.automation_event_summaries[0].dimensions[0].value #=> String
1170
+ # resp.automation_event_summaries[0].time_period.start_time_inclusive #=> Time
1171
+ # resp.automation_event_summaries[0].time_period.end_time_exclusive #=> Time
1172
+ # resp.automation_event_summaries[0].total.automation_event_count #=> Integer
1173
+ # resp.automation_event_summaries[0].total.estimated_monthly_savings.currency #=> String
1174
+ # resp.automation_event_summaries[0].total.estimated_monthly_savings.before_discount_savings #=> Float
1175
+ # resp.automation_event_summaries[0].total.estimated_monthly_savings.after_discount_savings #=> Float
1176
+ # resp.automation_event_summaries[0].total.estimated_monthly_savings.savings_estimation_mode #=> String, one of "BeforeDiscount", "AfterDiscount"
1177
+ # resp.next_token #=> String
1178
+ #
1179
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/ListAutomationEventSummaries AWS API Documentation
1180
+ #
1181
+ # @overload list_automation_event_summaries(params = {})
1182
+ # @param [Hash] params ({})
1183
+ def list_automation_event_summaries(params = {}, options = {})
1184
+ req = build_request(:list_automation_event_summaries, params)
1185
+ req.send_request(options)
1186
+ end
1187
+
1188
+ # Lists automation events based on specified filters. You can retrieve
1189
+ # events that were created within the past year.
1190
+ #
1191
+ # @option params [Array<Types::AutomationEventFilter>] :filters
1192
+ # The filters to apply to the list of automation events.
1193
+ #
1194
+ # @option params [Time,DateTime,Date,Integer,String] :start_time_inclusive
1195
+ # The start of the time range to query for events.
1196
+ #
1197
+ # @option params [Time,DateTime,Date,Integer,String] :end_time_exclusive
1198
+ # The end of the time range to query for events.
1199
+ #
1200
+ # @option params [Integer] :max_results
1201
+ # The maximum number of results to return in a single call.
1202
+ #
1203
+ # @option params [String] :next_token
1204
+ # The token for the next page of results.
1205
+ #
1206
+ # @return [Types::ListAutomationEventsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1207
+ #
1208
+ # * {Types::ListAutomationEventsResponse#automation_events #automation_events} => Array&lt;Types::AutomationEvent&gt;
1209
+ # * {Types::ListAutomationEventsResponse#next_token #next_token} => String
1210
+ #
1211
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1212
+ #
1213
+ # @example Request syntax with placeholder values
1214
+ #
1215
+ # resp = client.list_automation_events({
1216
+ # filters: [
1217
+ # {
1218
+ # name: "AccountId", # required, accepts AccountId, ResourceType, EventType, EventStatus
1219
+ # values: ["FilterValue"], # required
1220
+ # },
1221
+ # ],
1222
+ # start_time_inclusive: Time.now,
1223
+ # end_time_exclusive: Time.now,
1224
+ # max_results: 1,
1225
+ # next_token: "NextToken",
1226
+ # })
1227
+ #
1228
+ # @example Response structure
1229
+ #
1230
+ # resp.automation_events #=> Array
1231
+ # resp.automation_events[0].event_id #=> String
1232
+ # resp.automation_events[0].event_description #=> String
1233
+ # resp.automation_events[0].event_type #=> String, one of "SnapshotAndDeleteUnattachedEbsVolume", "UpgradeEbsVolumeType"
1234
+ # resp.automation_events[0].event_status #=> String, one of "Ready", "InProgress", "Complete", "Failed", "Cancelled", "RollbackReady", "RollbackInProgress", "RollbackComplete", "RollbackFailed"
1235
+ # resp.automation_events[0].event_status_reason #=> String
1236
+ # resp.automation_events[0].resource_arn #=> String
1237
+ # resp.automation_events[0].resource_id #=> String
1238
+ # resp.automation_events[0].recommended_action_id #=> String
1239
+ # resp.automation_events[0].account_id #=> String
1240
+ # resp.automation_events[0].region #=> String
1241
+ # resp.automation_events[0].rule_id #=> String
1242
+ # resp.automation_events[0].resource_type #=> String, one of "EbsVolume"
1243
+ # resp.automation_events[0].created_timestamp #=> Time
1244
+ # resp.automation_events[0].completed_timestamp #=> Time
1245
+ # resp.automation_events[0].estimated_monthly_savings.currency #=> String
1246
+ # resp.automation_events[0].estimated_monthly_savings.before_discount_savings #=> Float
1247
+ # resp.automation_events[0].estimated_monthly_savings.after_discount_savings #=> Float
1248
+ # resp.automation_events[0].estimated_monthly_savings.savings_estimation_mode #=> String, one of "BeforeDiscount", "AfterDiscount"
1249
+ # resp.next_token #=> String
1250
+ #
1251
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/ListAutomationEvents AWS API Documentation
1252
+ #
1253
+ # @overload list_automation_events(params = {})
1254
+ # @param [Hash] params ({})
1255
+ def list_automation_events(params = {}, options = {})
1256
+ req = build_request(:list_automation_events, params)
1257
+ req.send_request(options)
1258
+ end
1259
+
1260
+ # Returns a preview of the recommended actions that match your
1261
+ # Automation rule's configuration and criteria.
1262
+ #
1263
+ # @option params [required, String] :rule_type
1264
+ # The type of rule.
1265
+ #
1266
+ # <note markdown="1"> Only the management account or a delegated administrator can set the
1267
+ # ruleType to be OrganizationRule.
1268
+ #
1269
+ # </note>
1270
+ #
1271
+ # @option params [Types::OrganizationScope] :organization_scope
1272
+ # The organizational scope for the rule preview.
1273
+ #
1274
+ # @option params [required, Array<String>] :recommended_action_types
1275
+ # The types of recommended actions to include in the preview.
1276
+ #
1277
+ # @option params [Types::Criteria] :criteria
1278
+ # A set of conditions that specify which recommended action qualify for
1279
+ # implementation. When a rule is active and a recommended action matches
1280
+ # these criteria, Compute Optimizer implements the action at the
1281
+ # scheduled run time.
1282
+ #
1283
+ # @option params [Integer] :max_results
1284
+ # The maximum number of automation rule preview results to return in a
1285
+ # single response. Valid range is 1-1000.
1286
+ #
1287
+ # @option params [String] :next_token
1288
+ # A token used for pagination to retrieve the next set of results when
1289
+ # the response is truncated.
1290
+ #
1291
+ # @return [Types::ListAutomationRulePreviewResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1292
+ #
1293
+ # * {Types::ListAutomationRulePreviewResponse#preview_results #preview_results} => Array&lt;Types::PreviewResult&gt;
1294
+ # * {Types::ListAutomationRulePreviewResponse#next_token #next_token} => String
1295
+ #
1296
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1297
+ #
1298
+ # @example Request syntax with placeholder values
1299
+ #
1300
+ # resp = client.list_automation_rule_preview({
1301
+ # rule_type: "OrganizationRule", # required, accepts OrganizationRule, AccountRule
1302
+ # organization_scope: {
1303
+ # account_ids: ["AccountId"],
1304
+ # },
1305
+ # recommended_action_types: ["SnapshotAndDeleteUnattachedEbsVolume"], # required, accepts SnapshotAndDeleteUnattachedEbsVolume, UpgradeEbsVolumeType
1306
+ # criteria: {
1307
+ # region: [
1308
+ # {
1309
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
1310
+ # values: ["StringCriteriaValue"],
1311
+ # },
1312
+ # ],
1313
+ # resource_arn: [
1314
+ # {
1315
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
1316
+ # values: ["StringCriteriaValue"],
1317
+ # },
1318
+ # ],
1319
+ # ebs_volume_type: [
1320
+ # {
1321
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
1322
+ # values: ["StringCriteriaValue"],
1323
+ # },
1324
+ # ],
1325
+ # ebs_volume_size_in_gib: [
1326
+ # {
1327
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
1328
+ # values: [1],
1329
+ # },
1330
+ # ],
1331
+ # estimated_monthly_savings: [
1332
+ # {
1333
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
1334
+ # values: [1.0],
1335
+ # },
1336
+ # ],
1337
+ # resource_tag: [
1338
+ # {
1339
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
1340
+ # key: "StringCriteriaValue",
1341
+ # values: ["StringCriteriaValue"],
1342
+ # },
1343
+ # ],
1344
+ # look_back_period_in_days: [
1345
+ # {
1346
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
1347
+ # values: [1],
1348
+ # },
1349
+ # ],
1350
+ # restart_needed: [
1351
+ # {
1352
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
1353
+ # values: ["StringCriteriaValue"],
1354
+ # },
1355
+ # ],
1356
+ # },
1357
+ # max_results: 1,
1358
+ # next_token: "NextToken",
1359
+ # })
1360
+ #
1361
+ # @example Response structure
1362
+ #
1363
+ # resp.preview_results #=> Array
1364
+ # resp.preview_results[0].recommended_action_id #=> String
1365
+ # resp.preview_results[0].resource_arn #=> String
1366
+ # resp.preview_results[0].resource_id #=> String
1367
+ # resp.preview_results[0].account_id #=> String
1368
+ # resp.preview_results[0].region #=> String
1369
+ # resp.preview_results[0].resource_type #=> String, one of "EbsVolume"
1370
+ # resp.preview_results[0].look_back_period_in_days #=> Integer
1371
+ # resp.preview_results[0].recommended_action_type #=> String, one of "SnapshotAndDeleteUnattachedEbsVolume", "UpgradeEbsVolumeType"
1372
+ # resp.preview_results[0].current_resource_summary #=> String
1373
+ # resp.preview_results[0].current_resource_details.ebs_volume.configuration.type #=> String
1374
+ # resp.preview_results[0].current_resource_details.ebs_volume.configuration.size_in_gib #=> Integer
1375
+ # resp.preview_results[0].current_resource_details.ebs_volume.configuration.iops #=> Integer
1376
+ # resp.preview_results[0].current_resource_details.ebs_volume.configuration.throughput #=> Integer
1377
+ # resp.preview_results[0].recommended_resource_summary #=> String
1378
+ # resp.preview_results[0].recommended_resource_details.ebs_volume.configuration.type #=> String
1379
+ # resp.preview_results[0].recommended_resource_details.ebs_volume.configuration.size_in_gib #=> Integer
1380
+ # resp.preview_results[0].recommended_resource_details.ebs_volume.configuration.iops #=> Integer
1381
+ # resp.preview_results[0].recommended_resource_details.ebs_volume.configuration.throughput #=> Integer
1382
+ # resp.preview_results[0].restart_needed #=> Boolean
1383
+ # resp.preview_results[0].estimated_monthly_savings.currency #=> String
1384
+ # resp.preview_results[0].estimated_monthly_savings.before_discount_savings #=> Float
1385
+ # resp.preview_results[0].estimated_monthly_savings.after_discount_savings #=> Float
1386
+ # resp.preview_results[0].estimated_monthly_savings.savings_estimation_mode #=> String, one of "BeforeDiscount", "AfterDiscount"
1387
+ # resp.preview_results[0].resource_tags #=> Array
1388
+ # resp.preview_results[0].resource_tags[0].key #=> String
1389
+ # resp.preview_results[0].resource_tags[0].value #=> String
1390
+ # resp.next_token #=> String
1391
+ #
1392
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/ListAutomationRulePreview AWS API Documentation
1393
+ #
1394
+ # @overload list_automation_rule_preview(params = {})
1395
+ # @param [Hash] params ({})
1396
+ def list_automation_rule_preview(params = {}, options = {})
1397
+ req = build_request(:list_automation_rule_preview, params)
1398
+ req.send_request(options)
1399
+ end
1400
+
1401
+ # Returns a summary of the recommended actions that match your rule
1402
+ # preview configuration and criteria.
1403
+ #
1404
+ # @option params [required, String] :rule_type
1405
+ # The type of rule.
1406
+ #
1407
+ # @option params [Types::OrganizationScope] :organization_scope
1408
+ # The organizational scope for the rule preview.
1409
+ #
1410
+ # @option params [required, Array<String>] :recommended_action_types
1411
+ # The types of recommended actions to include in the preview.
1412
+ #
1413
+ # @option params [Types::Criteria] :criteria
1414
+ # A set of conditions that specify which recommended action qualify for
1415
+ # implementation. When a rule is active and a recommended action matches
1416
+ # these criteria, Compute Optimizer implements the action at the
1417
+ # scheduled run time. You can specify up to 20 conditions per filter
1418
+ # criteria and 20 values per condition.
1419
+ #
1420
+ # @option params [Integer] :max_results
1421
+ # The maximum number of automation rule preview summaries to return in a
1422
+ # single response. Valid range is 1-1000.
1423
+ #
1424
+ # @option params [String] :next_token
1425
+ # A token used for pagination to retrieve the next set of results when
1426
+ # the response is truncated.
1427
+ #
1428
+ # @return [Types::ListAutomationRulePreviewSummariesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1429
+ #
1430
+ # * {Types::ListAutomationRulePreviewSummariesResponse#preview_result_summaries #preview_result_summaries} => Array&lt;Types::PreviewResultSummary&gt;
1431
+ # * {Types::ListAutomationRulePreviewSummariesResponse#next_token #next_token} => String
1432
+ #
1433
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1434
+ #
1435
+ # @example Request syntax with placeholder values
1436
+ #
1437
+ # resp = client.list_automation_rule_preview_summaries({
1438
+ # rule_type: "OrganizationRule", # required, accepts OrganizationRule, AccountRule
1439
+ # organization_scope: {
1440
+ # account_ids: ["AccountId"],
1441
+ # },
1442
+ # recommended_action_types: ["SnapshotAndDeleteUnattachedEbsVolume"], # required, accepts SnapshotAndDeleteUnattachedEbsVolume, UpgradeEbsVolumeType
1443
+ # criteria: {
1444
+ # region: [
1445
+ # {
1446
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
1447
+ # values: ["StringCriteriaValue"],
1448
+ # },
1449
+ # ],
1450
+ # resource_arn: [
1451
+ # {
1452
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
1453
+ # values: ["StringCriteriaValue"],
1454
+ # },
1455
+ # ],
1456
+ # ebs_volume_type: [
1457
+ # {
1458
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
1459
+ # values: ["StringCriteriaValue"],
1460
+ # },
1461
+ # ],
1462
+ # ebs_volume_size_in_gib: [
1463
+ # {
1464
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
1465
+ # values: [1],
1466
+ # },
1467
+ # ],
1468
+ # estimated_monthly_savings: [
1469
+ # {
1470
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
1471
+ # values: [1.0],
1472
+ # },
1473
+ # ],
1474
+ # resource_tag: [
1475
+ # {
1476
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
1477
+ # key: "StringCriteriaValue",
1478
+ # values: ["StringCriteriaValue"],
1479
+ # },
1480
+ # ],
1481
+ # look_back_period_in_days: [
1482
+ # {
1483
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
1484
+ # values: [1],
1485
+ # },
1486
+ # ],
1487
+ # restart_needed: [
1488
+ # {
1489
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
1490
+ # values: ["StringCriteriaValue"],
1491
+ # },
1492
+ # ],
1493
+ # },
1494
+ # max_results: 1,
1495
+ # next_token: "NextToken",
1496
+ # })
1497
+ #
1498
+ # @example Response structure
1499
+ #
1500
+ # resp.preview_result_summaries #=> Array
1501
+ # resp.preview_result_summaries[0].key #=> String
1502
+ # resp.preview_result_summaries[0].total.recommended_action_count #=> Integer
1503
+ # resp.preview_result_summaries[0].total.estimated_monthly_savings.currency #=> String
1504
+ # resp.preview_result_summaries[0].total.estimated_monthly_savings.before_discount_savings #=> Float
1505
+ # resp.preview_result_summaries[0].total.estimated_monthly_savings.after_discount_savings #=> Float
1506
+ # resp.preview_result_summaries[0].total.estimated_monthly_savings.savings_estimation_mode #=> String, one of "BeforeDiscount", "AfterDiscount"
1507
+ # resp.next_token #=> String
1508
+ #
1509
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/ListAutomationRulePreviewSummaries AWS API Documentation
1510
+ #
1511
+ # @overload list_automation_rule_preview_summaries(params = {})
1512
+ # @param [Hash] params ({})
1513
+ def list_automation_rule_preview_summaries(params = {}, options = {})
1514
+ req = build_request(:list_automation_rule_preview_summaries, params)
1515
+ req.send_request(options)
1516
+ end
1517
+
1518
+ # Lists the automation rules that match specified filters.
1519
+ #
1520
+ # @option params [Array<Types::Filter>] :filters
1521
+ # The filters to apply to the list of automation rules.
1522
+ #
1523
+ # @option params [Integer] :max_results
1524
+ # The maximum number of automation rules to return in a single response.
1525
+ # Valid range is 1-1000.
1526
+ #
1527
+ # @option params [String] :next_token
1528
+ # A token used for pagination to retrieve the next set of results when
1529
+ # the response is truncated.
1530
+ #
1531
+ # @return [Types::ListAutomationRulesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1532
+ #
1533
+ # * {Types::ListAutomationRulesResponse#automation_rules #automation_rules} => Array&lt;Types::AutomationRule&gt;
1534
+ # * {Types::ListAutomationRulesResponse#next_token #next_token} => String
1535
+ #
1536
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1537
+ #
1538
+ # @example Request syntax with placeholder values
1539
+ #
1540
+ # resp = client.list_automation_rules({
1541
+ # filters: [
1542
+ # {
1543
+ # name: "Name", # required, accepts Name, RecommendedActionType, Status, RuleType, OrganizationConfigurationRuleApplyOrder, AccountId
1544
+ # values: ["FilterValue"], # required
1545
+ # },
1546
+ # ],
1547
+ # max_results: 1,
1548
+ # next_token: "NextToken",
1549
+ # })
1550
+ #
1551
+ # @example Response structure
1552
+ #
1553
+ # resp.automation_rules #=> Array
1554
+ # resp.automation_rules[0].rule_arn #=> String
1555
+ # resp.automation_rules[0].rule_id #=> String
1556
+ # resp.automation_rules[0].name #=> String
1557
+ # resp.automation_rules[0].description #=> String
1558
+ # resp.automation_rules[0].rule_type #=> String, one of "OrganizationRule", "AccountRule"
1559
+ # resp.automation_rules[0].rule_revision #=> Integer
1560
+ # resp.automation_rules[0].account_id #=> String
1561
+ # resp.automation_rules[0].organization_configuration.rule_apply_order #=> String, one of "BeforeAccountRules", "AfterAccountRules"
1562
+ # resp.automation_rules[0].organization_configuration.account_ids #=> Array
1563
+ # resp.automation_rules[0].organization_configuration.account_ids[0] #=> String
1564
+ # resp.automation_rules[0].priority #=> String
1565
+ # resp.automation_rules[0].recommended_action_types #=> Array
1566
+ # resp.automation_rules[0].recommended_action_types[0] #=> String, one of "SnapshotAndDeleteUnattachedEbsVolume", "UpgradeEbsVolumeType"
1567
+ # resp.automation_rules[0].schedule.schedule_expression #=> String
1568
+ # resp.automation_rules[0].schedule.schedule_expression_timezone #=> String
1569
+ # resp.automation_rules[0].schedule.execution_window_in_minutes #=> Integer
1570
+ # resp.automation_rules[0].status #=> String, one of "Active", "Inactive"
1571
+ # resp.automation_rules[0].created_timestamp #=> Time
1572
+ # resp.automation_rules[0].last_updated_timestamp #=> Time
1573
+ # resp.next_token #=> String
1574
+ #
1575
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/ListAutomationRules AWS API Documentation
1576
+ #
1577
+ # @overload list_automation_rules(params = {})
1578
+ # @param [Hash] params ({})
1579
+ def list_automation_rules(params = {}, options = {})
1580
+ req = build_request(:list_automation_rules, params)
1581
+ req.send_request(options)
1582
+ end
1583
+
1584
+ # Provides a summary of recommended actions based on specified filters.
1585
+ #
1586
+ # <note markdown="1"> Management accounts and delegated administrators can retrieve
1587
+ # recommended actions that include associated member accounts. You can
1588
+ # associate a member account using `AssociateAccounts`.
1589
+ #
1590
+ # </note>
1591
+ #
1592
+ # @option params [Array<Types::RecommendedActionFilter>] :filters
1593
+ # A list of filters to apply when retrieving recommended action
1594
+ # summaries. Filters can be based on resource type, action type, account
1595
+ # ID, and other criteria.
1596
+ #
1597
+ # @option params [Integer] :max_results
1598
+ # The maximum number of recommended action summaries to return in a
1599
+ # single response. Valid range is 1-1000.
1600
+ #
1601
+ # @option params [String] :next_token
1602
+ # A token used for pagination to retrieve the next set of results when
1603
+ # the response is truncated.
1604
+ #
1605
+ # @return [Types::ListRecommendedActionSummariesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1606
+ #
1607
+ # * {Types::ListRecommendedActionSummariesResponse#recommended_action_summaries #recommended_action_summaries} => Array&lt;Types::RecommendedActionSummary&gt;
1608
+ # * {Types::ListRecommendedActionSummariesResponse#next_token #next_token} => String
1609
+ #
1610
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1611
+ #
1612
+ # @example Request syntax with placeholder values
1613
+ #
1614
+ # resp = client.list_recommended_action_summaries({
1615
+ # filters: [
1616
+ # {
1617
+ # name: "ResourceType", # required, accepts ResourceType, RecommendedActionType, ResourceId, LookBackPeriodInDays, CurrentResourceDetailsEbsVolumeType, ResourceTagsKey, ResourceTagsValue, AccountId, RestartNeeded
1618
+ # values: ["FilterValue"], # required
1619
+ # },
1620
+ # ],
1621
+ # max_results: 1,
1622
+ # next_token: "NextToken",
1623
+ # })
1624
+ #
1625
+ # @example Response structure
1626
+ #
1627
+ # resp.recommended_action_summaries #=> Array
1628
+ # resp.recommended_action_summaries[0].key #=> String
1629
+ # resp.recommended_action_summaries[0].total.recommended_action_count #=> Integer
1630
+ # resp.recommended_action_summaries[0].total.estimated_monthly_savings.currency #=> String
1631
+ # resp.recommended_action_summaries[0].total.estimated_monthly_savings.before_discount_savings #=> Float
1632
+ # resp.recommended_action_summaries[0].total.estimated_monthly_savings.after_discount_savings #=> Float
1633
+ # resp.recommended_action_summaries[0].total.estimated_monthly_savings.savings_estimation_mode #=> String, one of "BeforeDiscount", "AfterDiscount"
1634
+ # resp.next_token #=> String
1635
+ #
1636
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/ListRecommendedActionSummaries AWS API Documentation
1637
+ #
1638
+ # @overload list_recommended_action_summaries(params = {})
1639
+ # @param [Hash] params ({})
1640
+ def list_recommended_action_summaries(params = {}, options = {})
1641
+ req = build_request(:list_recommended_action_summaries, params)
1642
+ req.send_request(options)
1643
+ end
1644
+
1645
+ # Lists the recommended actions based that match specified filters.
1646
+ #
1647
+ # <note markdown="1"> Management accounts and delegated administrators can retrieve
1648
+ # recommended actions that include associated member accounts. You can
1649
+ # associate a member account using `AssociateAccounts`.
1650
+ #
1651
+ # </note>
1652
+ #
1653
+ # @option params [Array<Types::RecommendedActionFilter>] :filters
1654
+ # The filters to apply to the list of recommended actions.
1655
+ #
1656
+ # @option params [Integer] :max_results
1657
+ # The maximum number of recommended actions to return in a single
1658
+ # response. Valid range is 1-1000.
1659
+ #
1660
+ # @option params [String] :next_token
1661
+ # A token used for pagination to retrieve the next set of results when
1662
+ # the response is truncated.
1663
+ #
1664
+ # @return [Types::ListRecommendedActionsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1665
+ #
1666
+ # * {Types::ListRecommendedActionsResponse#recommended_actions #recommended_actions} => Array&lt;Types::RecommendedAction&gt;
1667
+ # * {Types::ListRecommendedActionsResponse#next_token #next_token} => String
1668
+ #
1669
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1670
+ #
1671
+ # @example Request syntax with placeholder values
1672
+ #
1673
+ # resp = client.list_recommended_actions({
1674
+ # filters: [
1675
+ # {
1676
+ # name: "ResourceType", # required, accepts ResourceType, RecommendedActionType, ResourceId, LookBackPeriodInDays, CurrentResourceDetailsEbsVolumeType, ResourceTagsKey, ResourceTagsValue, AccountId, RestartNeeded
1677
+ # values: ["FilterValue"], # required
1678
+ # },
1679
+ # ],
1680
+ # max_results: 1,
1681
+ # next_token: "NextToken",
1682
+ # })
1683
+ #
1684
+ # @example Response structure
1685
+ #
1686
+ # resp.recommended_actions #=> Array
1687
+ # resp.recommended_actions[0].recommended_action_id #=> String
1688
+ # resp.recommended_actions[0].resource_arn #=> String
1689
+ # resp.recommended_actions[0].resource_id #=> String
1690
+ # resp.recommended_actions[0].account_id #=> String
1691
+ # resp.recommended_actions[0].region #=> String
1692
+ # resp.recommended_actions[0].resource_type #=> String, one of "EbsVolume"
1693
+ # resp.recommended_actions[0].look_back_period_in_days #=> Integer
1694
+ # resp.recommended_actions[0].recommended_action_type #=> String, one of "SnapshotAndDeleteUnattachedEbsVolume", "UpgradeEbsVolumeType"
1695
+ # resp.recommended_actions[0].current_resource_summary #=> String
1696
+ # resp.recommended_actions[0].current_resource_details.ebs_volume.configuration.type #=> String
1697
+ # resp.recommended_actions[0].current_resource_details.ebs_volume.configuration.size_in_gib #=> Integer
1698
+ # resp.recommended_actions[0].current_resource_details.ebs_volume.configuration.iops #=> Integer
1699
+ # resp.recommended_actions[0].current_resource_details.ebs_volume.configuration.throughput #=> Integer
1700
+ # resp.recommended_actions[0].recommended_resource_summary #=> String
1701
+ # resp.recommended_actions[0].recommended_resource_details.ebs_volume.configuration.type #=> String
1702
+ # resp.recommended_actions[0].recommended_resource_details.ebs_volume.configuration.size_in_gib #=> Integer
1703
+ # resp.recommended_actions[0].recommended_resource_details.ebs_volume.configuration.iops #=> Integer
1704
+ # resp.recommended_actions[0].recommended_resource_details.ebs_volume.configuration.throughput #=> Integer
1705
+ # resp.recommended_actions[0].restart_needed #=> Boolean
1706
+ # resp.recommended_actions[0].estimated_monthly_savings.currency #=> String
1707
+ # resp.recommended_actions[0].estimated_monthly_savings.before_discount_savings #=> Float
1708
+ # resp.recommended_actions[0].estimated_monthly_savings.after_discount_savings #=> Float
1709
+ # resp.recommended_actions[0].estimated_monthly_savings.savings_estimation_mode #=> String, one of "BeforeDiscount", "AfterDiscount"
1710
+ # resp.recommended_actions[0].resource_tags #=> Array
1711
+ # resp.recommended_actions[0].resource_tags[0].key #=> String
1712
+ # resp.recommended_actions[0].resource_tags[0].value #=> String
1713
+ # resp.next_token #=> String
1714
+ #
1715
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/ListRecommendedActions AWS API Documentation
1716
+ #
1717
+ # @overload list_recommended_actions(params = {})
1718
+ # @param [Hash] params ({})
1719
+ def list_recommended_actions(params = {}, options = {})
1720
+ req = build_request(:list_recommended_actions, params)
1721
+ req.send_request(options)
1722
+ end
1723
+
1724
+ # Lists the tags for a specified resource.
1725
+ #
1726
+ # @option params [required, String] :resource_arn
1727
+ # The ARN of the resource to list tags for.
1728
+ #
1729
+ # @return [Types::ListTagsForResourceResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1730
+ #
1731
+ # * {Types::ListTagsForResourceResponse#tags #tags} => Array&lt;Types::Tag&gt;
1732
+ #
1733
+ # @example Request syntax with placeholder values
1734
+ #
1735
+ # resp = client.list_tags_for_resource({
1736
+ # resource_arn: "RuleArn", # required
1737
+ # })
1738
+ #
1739
+ # @example Response structure
1740
+ #
1741
+ # resp.tags #=> Array
1742
+ # resp.tags[0].key #=> String
1743
+ # resp.tags[0].value #=> String
1744
+ #
1745
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/ListTagsForResource AWS API Documentation
1746
+ #
1747
+ # @overload list_tags_for_resource(params = {})
1748
+ # @param [Hash] params ({})
1749
+ def list_tags_for_resource(params = {}, options = {})
1750
+ req = build_request(:list_tags_for_resource, params)
1751
+ req.send_request(options)
1752
+ end
1753
+
1754
+ # Initiates a rollback for a completed automation event.
1755
+ #
1756
+ # <note markdown="1"> Management accounts and delegated administrators can only initiate a
1757
+ # rollback for events belonging to associated member accounts. You can
1758
+ # associate a member account using `AssociateAccounts`.
1759
+ #
1760
+ # </note>
1761
+ #
1762
+ # @option params [required, String] :event_id
1763
+ # The ID of the automation event to roll back.
1764
+ #
1765
+ # @option params [String] :client_token
1766
+ # A unique, case-sensitive identifier that you provide to ensure the
1767
+ # idempotency of the request. Must be 1-64 characters long and contain
1768
+ # only alphanumeric characters, underscores, and hyphens.
1769
+ #
1770
+ # **A suitable default value is auto-generated.** You should normally
1771
+ # not need to pass this option.**
1772
+ #
1773
+ # @return [Types::RollbackAutomationEventResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1774
+ #
1775
+ # * {Types::RollbackAutomationEventResponse#event_id #event_id} => String
1776
+ # * {Types::RollbackAutomationEventResponse#event_status #event_status} => String
1777
+ #
1778
+ # @example Request syntax with placeholder values
1779
+ #
1780
+ # resp = client.rollback_automation_event({
1781
+ # event_id: "EventId", # required
1782
+ # client_token: "ClientToken",
1783
+ # })
1784
+ #
1785
+ # @example Response structure
1786
+ #
1787
+ # resp.event_id #=> String
1788
+ # resp.event_status #=> String, one of "Ready", "InProgress", "Complete", "Failed", "Cancelled", "RollbackReady", "RollbackInProgress", "RollbackComplete", "RollbackFailed"
1789
+ #
1790
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/RollbackAutomationEvent AWS API Documentation
1791
+ #
1792
+ # @overload rollback_automation_event(params = {})
1793
+ # @param [Hash] params ({})
1794
+ def rollback_automation_event(params = {}, options = {})
1795
+ req = build_request(:rollback_automation_event, params)
1796
+ req.send_request(options)
1797
+ end
1798
+
1799
+ # Initiates a one-time, on-demand automation for the specified
1800
+ # recommended action.
1801
+ #
1802
+ # <note markdown="1"> Management accounts and delegated administrators can only initiate
1803
+ # recommended actions for associated member accounts. You can associate
1804
+ # a member account using `AssociateAccounts`.
1805
+ #
1806
+ # </note>
1807
+ #
1808
+ # @option params [required, String] :recommended_action_id
1809
+ # The ID of the recommended action to automate.
1810
+ #
1811
+ # @option params [String] :client_token
1812
+ # A unique, case-sensitive identifier that you provide to ensure the
1813
+ # idempotency of the request. Must be 1-64 characters long and contain
1814
+ # only alphanumeric characters, underscores, and hyphens.
1815
+ #
1816
+ # **A suitable default value is auto-generated.** You should normally
1817
+ # not need to pass this option.**
1818
+ #
1819
+ # @return [Types::StartAutomationEventResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1820
+ #
1821
+ # * {Types::StartAutomationEventResponse#recommended_action_id #recommended_action_id} => String
1822
+ # * {Types::StartAutomationEventResponse#event_id #event_id} => String
1823
+ # * {Types::StartAutomationEventResponse#event_status #event_status} => String
1824
+ #
1825
+ # @example Request syntax with placeholder values
1826
+ #
1827
+ # resp = client.start_automation_event({
1828
+ # recommended_action_id: "RecommendedActionId", # required
1829
+ # client_token: "ClientToken",
1830
+ # })
1831
+ #
1832
+ # @example Response structure
1833
+ #
1834
+ # resp.recommended_action_id #=> String
1835
+ # resp.event_id #=> String
1836
+ # resp.event_status #=> String, one of "Ready", "InProgress", "Complete", "Failed", "Cancelled", "RollbackReady", "RollbackInProgress", "RollbackComplete", "RollbackFailed"
1837
+ #
1838
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/StartAutomationEvent AWS API Documentation
1839
+ #
1840
+ # @overload start_automation_event(params = {})
1841
+ # @param [Hash] params ({})
1842
+ def start_automation_event(params = {}, options = {})
1843
+ req = build_request(:start_automation_event, params)
1844
+ req.send_request(options)
1845
+ end
1846
+
1847
+ # Adds tags to the specified resource.
1848
+ #
1849
+ # @option params [required, String] :resource_arn
1850
+ # The ARN of the resource to tag.
1851
+ #
1852
+ # @option params [required, Integer] :rule_revision
1853
+ # The revision number of the automation rule to tag. This ensures
1854
+ # you're tagging the correct version of the rule.
1855
+ #
1856
+ # @option params [required, Array<Types::Tag>] :tags
1857
+ # The tags to add to the resource.
1858
+ #
1859
+ # @option params [String] :client_token
1860
+ # A unique, case-sensitive identifier that you provide to ensure the
1861
+ # idempotency of the request. Must be 1-64 characters long and contain
1862
+ # only alphanumeric characters, underscores, and hyphens.
1863
+ #
1864
+ # **A suitable default value is auto-generated.** You should normally
1865
+ # not need to pass this option.**
1866
+ #
1867
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1868
+ #
1869
+ # @example Request syntax with placeholder values
1870
+ #
1871
+ # resp = client.tag_resource({
1872
+ # resource_arn: "RuleArn", # required
1873
+ # rule_revision: 1, # required
1874
+ # tags: [ # required
1875
+ # {
1876
+ # key: "TagKey", # required
1877
+ # value: "TagValue", # required
1878
+ # },
1879
+ # ],
1880
+ # client_token: "ClientToken",
1881
+ # })
1882
+ #
1883
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/TagResource AWS API Documentation
1884
+ #
1885
+ # @overload tag_resource(params = {})
1886
+ # @param [Hash] params ({})
1887
+ def tag_resource(params = {}, options = {})
1888
+ req = build_request(:tag_resource, params)
1889
+ req.send_request(options)
1890
+ end
1891
+
1892
+ # Removes tags from the specified resource.
1893
+ #
1894
+ # @option params [required, String] :resource_arn
1895
+ # The ARN of the resource to untag.
1896
+ #
1897
+ # @option params [required, Integer] :rule_revision
1898
+ # The revision number of the automation rule to untag. This ensures
1899
+ # you're untagging the correct version of the rule.
1900
+ #
1901
+ # @option params [required, Array<String>] :tag_keys
1902
+ # The keys of the tags to remove from the resource.
1903
+ #
1904
+ # @option params [String] :client_token
1905
+ # A unique, case-sensitive identifier that you provide to ensure the
1906
+ # idempotency of the request. Must be 1-64 characters long and contain
1907
+ # only alphanumeric characters, underscores, and hyphens.
1908
+ #
1909
+ # **A suitable default value is auto-generated.** You should normally
1910
+ # not need to pass this option.**
1911
+ #
1912
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1913
+ #
1914
+ # @example Request syntax with placeholder values
1915
+ #
1916
+ # resp = client.untag_resource({
1917
+ # resource_arn: "RuleArn", # required
1918
+ # rule_revision: 1, # required
1919
+ # tag_keys: ["String"], # required
1920
+ # client_token: "ClientToken",
1921
+ # })
1922
+ #
1923
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/UntagResource AWS API Documentation
1924
+ #
1925
+ # @overload untag_resource(params = {})
1926
+ # @param [Hash] params ({})
1927
+ def untag_resource(params = {}, options = {})
1928
+ req = build_request(:untag_resource, params)
1929
+ req.send_request(options)
1930
+ end
1931
+
1932
+ # Updates an existing automation rule.
1933
+ #
1934
+ # @option params [required, String] :rule_arn
1935
+ # The ARN of the rule to update.
1936
+ #
1937
+ # @option params [required, Integer] :rule_revision
1938
+ # The revision number of the rule to update.
1939
+ #
1940
+ # @option params [String] :name
1941
+ # The updated name of the automation rule. Must be 1-128 characters long
1942
+ # and contain only alphanumeric characters, underscores, and hyphens.
1943
+ #
1944
+ # @option params [String] :description
1945
+ # The updated description of the automation rule. Can be up to 1024
1946
+ # characters long and contain alphanumeric characters, underscores,
1947
+ # hyphens, spaces, and certain special characters.
1948
+ #
1949
+ # @option params [String] :rule_type
1950
+ # The updated type of automation rule. Can be either OrganizationRule
1951
+ # for organization-wide rules or AccountRule for account-specific rules.
1952
+ #
1953
+ # @option params [Types::OrganizationConfiguration] :organization_configuration
1954
+ # Updated configuration settings for organization-wide rules, including
1955
+ # rule application order and target account IDs.
1956
+ #
1957
+ # @option params [String] :priority
1958
+ # The updated priority level of the automation rule, used to determine
1959
+ # execution order when multiple rules apply to the same resource.
1960
+ #
1961
+ # @option params [Array<String>] :recommended_action_types
1962
+ # Updated list of recommended action types that this rule can execute,
1963
+ # such as SnapshotAndDeleteUnattachedEbsVolume or UpgradeEbsVolumeType.
1964
+ #
1965
+ # @option params [Types::Criteria] :criteria
1966
+ # A set of conditions that specify which recommended action qualify for
1967
+ # implementation. When a rule is active and a recommended action matches
1968
+ # these criteria, Compute Optimizer implements the action at the
1969
+ # scheduled run time. You can specify up to 20 conditions per filter
1970
+ # criteria and 20 values per condition.
1971
+ #
1972
+ # @option params [Types::Schedule] :schedule
1973
+ # The updated schedule configuration for when the automation rule should
1974
+ # execute, including cron expression, timezone, and execution window.
1975
+ #
1976
+ # @option params [String] :status
1977
+ # The updated status of the automation rule. Can be Active or Inactive.
1978
+ #
1979
+ # @option params [String] :client_token
1980
+ # A unique, case-sensitive identifier that you provide to ensure the
1981
+ # idempotency of the request. Must be 1-64 characters long and contain
1982
+ # only alphanumeric characters, underscores, and hyphens.
1983
+ #
1984
+ # **A suitable default value is auto-generated.** You should normally
1985
+ # not need to pass this option.**
1986
+ #
1987
+ # @return [Types::UpdateAutomationRuleResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1988
+ #
1989
+ # * {Types::UpdateAutomationRuleResponse#rule_arn #rule_arn} => String
1990
+ # * {Types::UpdateAutomationRuleResponse#rule_revision #rule_revision} => Integer
1991
+ # * {Types::UpdateAutomationRuleResponse#name #name} => String
1992
+ # * {Types::UpdateAutomationRuleResponse#description #description} => String
1993
+ # * {Types::UpdateAutomationRuleResponse#rule_type #rule_type} => String
1994
+ # * {Types::UpdateAutomationRuleResponse#organization_configuration #organization_configuration} => Types::OrganizationConfiguration
1995
+ # * {Types::UpdateAutomationRuleResponse#priority #priority} => String
1996
+ # * {Types::UpdateAutomationRuleResponse#recommended_action_types #recommended_action_types} => Array&lt;String&gt;
1997
+ # * {Types::UpdateAutomationRuleResponse#criteria #criteria} => Types::Criteria
1998
+ # * {Types::UpdateAutomationRuleResponse#schedule #schedule} => Types::Schedule
1999
+ # * {Types::UpdateAutomationRuleResponse#status #status} => String
2000
+ # * {Types::UpdateAutomationRuleResponse#created_timestamp #created_timestamp} => Time
2001
+ # * {Types::UpdateAutomationRuleResponse#last_updated_timestamp #last_updated_timestamp} => Time
2002
+ #
2003
+ # @example Request syntax with placeholder values
2004
+ #
2005
+ # resp = client.update_automation_rule({
2006
+ # rule_arn: "RuleArn", # required
2007
+ # rule_revision: 1, # required
2008
+ # name: "RuleName",
2009
+ # description: "RuleDescription",
2010
+ # rule_type: "OrganizationRule", # accepts OrganizationRule, AccountRule
2011
+ # organization_configuration: {
2012
+ # rule_apply_order: "BeforeAccountRules", # accepts BeforeAccountRules, AfterAccountRules
2013
+ # account_ids: ["AccountId"],
2014
+ # },
2015
+ # priority: "String",
2016
+ # recommended_action_types: ["SnapshotAndDeleteUnattachedEbsVolume"], # accepts SnapshotAndDeleteUnattachedEbsVolume, UpgradeEbsVolumeType
2017
+ # criteria: {
2018
+ # region: [
2019
+ # {
2020
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
2021
+ # values: ["StringCriteriaValue"],
2022
+ # },
2023
+ # ],
2024
+ # resource_arn: [
2025
+ # {
2026
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
2027
+ # values: ["StringCriteriaValue"],
2028
+ # },
2029
+ # ],
2030
+ # ebs_volume_type: [
2031
+ # {
2032
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
2033
+ # values: ["StringCriteriaValue"],
2034
+ # },
2035
+ # ],
2036
+ # ebs_volume_size_in_gib: [
2037
+ # {
2038
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
2039
+ # values: [1],
2040
+ # },
2041
+ # ],
2042
+ # estimated_monthly_savings: [
2043
+ # {
2044
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
2045
+ # values: [1.0],
2046
+ # },
2047
+ # ],
2048
+ # resource_tag: [
2049
+ # {
2050
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
2051
+ # key: "StringCriteriaValue",
2052
+ # values: ["StringCriteriaValue"],
2053
+ # },
2054
+ # ],
2055
+ # look_back_period_in_days: [
2056
+ # {
2057
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
2058
+ # values: [1],
2059
+ # },
2060
+ # ],
2061
+ # restart_needed: [
2062
+ # {
2063
+ # comparison: "StringEquals", # accepts StringEquals, StringNotEquals, StringEqualsIgnoreCase, StringNotEqualsIgnoreCase, StringLike, StringNotLike, NumericEquals, NumericNotEquals, NumericLessThan, NumericLessThanEquals, NumericGreaterThan, NumericGreaterThanEquals
2064
+ # values: ["StringCriteriaValue"],
2065
+ # },
2066
+ # ],
2067
+ # },
2068
+ # schedule: {
2069
+ # schedule_expression: "String",
2070
+ # schedule_expression_timezone: "String",
2071
+ # execution_window_in_minutes: 1,
2072
+ # },
2073
+ # status: "Active", # accepts Active, Inactive
2074
+ # client_token: "ClientToken",
2075
+ # })
2076
+ #
2077
+ # @example Response structure
2078
+ #
2079
+ # resp.rule_arn #=> String
2080
+ # resp.rule_revision #=> Integer
2081
+ # resp.name #=> String
2082
+ # resp.description #=> String
2083
+ # resp.rule_type #=> String, one of "OrganizationRule", "AccountRule"
2084
+ # resp.organization_configuration.rule_apply_order #=> String, one of "BeforeAccountRules", "AfterAccountRules"
2085
+ # resp.organization_configuration.account_ids #=> Array
2086
+ # resp.organization_configuration.account_ids[0] #=> String
2087
+ # resp.priority #=> String
2088
+ # resp.recommended_action_types #=> Array
2089
+ # resp.recommended_action_types[0] #=> String, one of "SnapshotAndDeleteUnattachedEbsVolume", "UpgradeEbsVolumeType"
2090
+ # resp.criteria.region #=> Array
2091
+ # resp.criteria.region[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
2092
+ # resp.criteria.region[0].values #=> Array
2093
+ # resp.criteria.region[0].values[0] #=> String
2094
+ # resp.criteria.resource_arn #=> Array
2095
+ # resp.criteria.resource_arn[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
2096
+ # resp.criteria.resource_arn[0].values #=> Array
2097
+ # resp.criteria.resource_arn[0].values[0] #=> String
2098
+ # resp.criteria.ebs_volume_type #=> Array
2099
+ # resp.criteria.ebs_volume_type[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
2100
+ # resp.criteria.ebs_volume_type[0].values #=> Array
2101
+ # resp.criteria.ebs_volume_type[0].values[0] #=> String
2102
+ # resp.criteria.ebs_volume_size_in_gib #=> Array
2103
+ # resp.criteria.ebs_volume_size_in_gib[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
2104
+ # resp.criteria.ebs_volume_size_in_gib[0].values #=> Array
2105
+ # resp.criteria.ebs_volume_size_in_gib[0].values[0] #=> Integer
2106
+ # resp.criteria.estimated_monthly_savings #=> Array
2107
+ # resp.criteria.estimated_monthly_savings[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
2108
+ # resp.criteria.estimated_monthly_savings[0].values #=> Array
2109
+ # resp.criteria.estimated_monthly_savings[0].values[0] #=> Float
2110
+ # resp.criteria.resource_tag #=> Array
2111
+ # resp.criteria.resource_tag[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
2112
+ # resp.criteria.resource_tag[0].key #=> String
2113
+ # resp.criteria.resource_tag[0].values #=> Array
2114
+ # resp.criteria.resource_tag[0].values[0] #=> String
2115
+ # resp.criteria.look_back_period_in_days #=> Array
2116
+ # resp.criteria.look_back_period_in_days[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
2117
+ # resp.criteria.look_back_period_in_days[0].values #=> Array
2118
+ # resp.criteria.look_back_period_in_days[0].values[0] #=> Integer
2119
+ # resp.criteria.restart_needed #=> Array
2120
+ # resp.criteria.restart_needed[0].comparison #=> String, one of "StringEquals", "StringNotEquals", "StringEqualsIgnoreCase", "StringNotEqualsIgnoreCase", "StringLike", "StringNotLike", "NumericEquals", "NumericNotEquals", "NumericLessThan", "NumericLessThanEquals", "NumericGreaterThan", "NumericGreaterThanEquals"
2121
+ # resp.criteria.restart_needed[0].values #=> Array
2122
+ # resp.criteria.restart_needed[0].values[0] #=> String
2123
+ # resp.schedule.schedule_expression #=> String
2124
+ # resp.schedule.schedule_expression_timezone #=> String
2125
+ # resp.schedule.execution_window_in_minutes #=> Integer
2126
+ # resp.status #=> String, one of "Active", "Inactive"
2127
+ # resp.created_timestamp #=> Time
2128
+ # resp.last_updated_timestamp #=> Time
2129
+ #
2130
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/UpdateAutomationRule AWS API Documentation
2131
+ #
2132
+ # @overload update_automation_rule(params = {})
2133
+ # @param [Hash] params ({})
2134
+ def update_automation_rule(params = {}, options = {})
2135
+ req = build_request(:update_automation_rule, params)
2136
+ req.send_request(options)
2137
+ end
2138
+
2139
+ # Updates your account’s Compute Optimizer Automation enrollment
2140
+ # configuration.
2141
+ #
2142
+ # @option params [required, String] :status
2143
+ # The desired enrollment status.
2144
+ #
2145
+ # * Active - Enables the Automation feature for your account.
2146
+ #
2147
+ # * Inactive - Disables the Automation feature for your account and
2148
+ # stops all of your automation rules. If you opt in again later, all
2149
+ # rules will be inactive, and you must enable the rules you want to
2150
+ # run. You must wait at least 24 hours after opting out to opt in
2151
+ # again.
2152
+ #
2153
+ # <note markdown="1"> The `Pending` and `Failed` options cannot be used to update the
2154
+ # enrollment status of an account. They are returned in the response of
2155
+ # a request to update the enrollment status of an account.
2156
+ #
2157
+ # If you are a member account, your account must be disassociated from
2158
+ # your organization’s management account before you can disable
2159
+ # Automation. Contact your administrator to make this change.
2160
+ #
2161
+ # </note>
2162
+ #
2163
+ # @option params [String] :client_token
2164
+ # A unique, case-sensitive identifier that you provide to ensure the
2165
+ # idempotency of the request. Must be 1-64 characters long and contain
2166
+ # only alphanumeric characters, underscores, and hyphens.
2167
+ #
2168
+ # **A suitable default value is auto-generated.** You should normally
2169
+ # not need to pass this option.**
2170
+ #
2171
+ # @return [Types::UpdateEnrollmentConfigurationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2172
+ #
2173
+ # * {Types::UpdateEnrollmentConfigurationResponse#status #status} => String
2174
+ # * {Types::UpdateEnrollmentConfigurationResponse#status_reason #status_reason} => String
2175
+ # * {Types::UpdateEnrollmentConfigurationResponse#last_updated_timestamp #last_updated_timestamp} => Time
2176
+ #
2177
+ # @example Request syntax with placeholder values
2178
+ #
2179
+ # resp = client.update_enrollment_configuration({
2180
+ # status: "Active", # required, accepts Active, Inactive, Pending, Failed
2181
+ # client_token: "ClientToken",
2182
+ # })
2183
+ #
2184
+ # @example Response structure
2185
+ #
2186
+ # resp.status #=> String, one of "Active", "Inactive", "Pending", "Failed"
2187
+ # resp.status_reason #=> String
2188
+ # resp.last_updated_timestamp #=> Time
2189
+ #
2190
+ # @see http://docs.aws.amazon.com/goto/WebAPI/compute-optimizer-automation-2025-09-22/UpdateEnrollmentConfiguration AWS API Documentation
2191
+ #
2192
+ # @overload update_enrollment_configuration(params = {})
2193
+ # @param [Hash] params ({})
2194
+ def update_enrollment_configuration(params = {}, options = {})
2195
+ req = build_request(:update_enrollment_configuration, params)
2196
+ req.send_request(options)
2197
+ end
2198
+
2199
+ # @!endgroup
2200
+
2201
+ # @param params ({})
2202
+ # @api private
2203
+ def build_request(operation_name, params = {})
2204
+ handlers = @handlers.for(operation_name)
2205
+ tracer = config.telemetry_provider.tracer_provider.tracer(
2206
+ Aws::Telemetry.module_to_tracer_name('Aws::ComputeOptimizerAutomation')
2207
+ )
2208
+ context = Seahorse::Client::RequestContext.new(
2209
+ operation_name: operation_name,
2210
+ operation: config.api.operation(operation_name),
2211
+ client: self,
2212
+ params: params,
2213
+ config: config,
2214
+ tracer: tracer
2215
+ )
2216
+ context[:gem_name] = 'aws-sdk-computeoptimizerautomation'
2217
+ context[:gem_version] = '1.0.0'
2218
+ Seahorse::Client::Request.new(handlers, context)
2219
+ end
2220
+
2221
+ # @api private
2222
+ # @deprecated
2223
+ def waiter_names
2224
+ []
2225
+ end
2226
+
2227
+ class << self
2228
+
2229
+ # @api private
2230
+ attr_reader :identifier
2231
+
2232
+ # @api private
2233
+ def errors_module
2234
+ Errors
2235
+ end
2236
+
2237
+ end
2238
+ end
2239
+ end