aws_sdk_applicationautoscaling/
lib.rs

1#![allow(deprecated)]
2#![allow(unknown_lints)]
3#![allow(clippy::module_inception)]
4#![allow(clippy::upper_case_acronyms)]
5#![allow(clippy::large_enum_variant)]
6#![allow(clippy::wrong_self_convention)]
7#![allow(clippy::should_implement_trait)]
8#![allow(clippy::disallowed_names)]
9#![allow(clippy::vec_init_then_push)]
10#![allow(clippy::type_complexity)]
11#![allow(clippy::needless_return)]
12#![allow(clippy::derive_partial_eq_without_eq)]
13#![allow(clippy::result_large_err)]
14#![allow(clippy::unnecessary_map_on_constructor)]
15#![allow(clippy::deprecated_semver)]
16#![allow(rustdoc::bare_urls)]
17#![allow(rustdoc::redundant_explicit_links)]
18#![allow(rustdoc::invalid_html_tags)]
19#![forbid(unsafe_code)]
20#![warn(missing_docs)]
21#![cfg_attr(docsrs, feature(doc_cfg))]
22//! With Application Auto Scaling, you can configure automatic scaling for the following resources:
23//!   - Amazon AppStream 2.0 fleets
24//!   - Amazon Aurora Replicas
25//!   - Amazon Comprehend document classification and entity recognizer endpoints
26//!   - Amazon DynamoDB tables and global secondary indexes throughput capacity
27//!   - Amazon ECS services
28//!   - Amazon ElastiCache replication groups (Redis OSS and Valkey) and Memcached clusters
29//!   - Amazon EMR clusters
30//!   - Amazon Keyspaces (for Apache Cassandra) tables
31//!   - Lambda function provisioned concurrency
32//!   - Amazon Managed Streaming for Apache Kafka broker storage
33//!   - Amazon Neptune clusters
34//!   - Amazon SageMaker endpoint variants
35//!   - Amazon SageMaker inference components
36//!   - Amazon SageMaker serverless endpoint provisioned concurrency
37//!   - Spot Fleets (Amazon EC2)
38//!   - Pool of WorkSpaces
39//!   - Custom resources provided by your own applications or services
40//!
41//! To learn more about Application Auto Scaling, see the [Application Auto Scaling User Guide](https://docs.aws.amazon.com/autoscaling/application/userguide/what-is-application-auto-scaling.html).
42//!
43//! __API Summary__
44//!
45//! The Application Auto Scaling service API includes three key sets of actions:
46//!   - Register and manage scalable targets - Register Amazon Web Services or custom resources as scalable targets (a resource that Application Auto Scaling can scale), set minimum and maximum capacity limits, and retrieve information on existing scalable targets.
47//!   - Configure and manage automatic scaling - Define scaling policies to dynamically scale your resources in response to CloudWatch alarms, schedule one-time or recurring scaling actions, and retrieve your recent scaling activity history.
48//!   - Suspend and resume scaling - Temporarily suspend and later resume automatic scaling by calling the [RegisterScalableTarget](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_RegisterScalableTarget.html) API action for any Application Auto Scaling scalable target. You can suspend and resume (individually or in combination) scale-out activities that are triggered by a scaling policy, scale-in activities that are triggered by a scaling policy, and scheduled scaling.
49//!
50//! ## Getting Started
51//!
52//! > Examples are available for many services and operations, check out the
53//! > [usage examples](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1).
54//!
55//! The SDK provides one crate per AWS service. You must add [Tokio](https://crates.io/crates/tokio)
56//! as a dependency within your Rust project to execute asynchronous code. To add `aws-sdk-applicationautoscaling` to
57//! your project, add the following to your **Cargo.toml** file:
58//!
59//! ```toml
60//! [dependencies]
61//! aws-config = { version = "1.1.7", features = ["behavior-version-latest"] }
62//! aws-sdk-applicationautoscaling = "1.96.0"
63//! tokio = { version = "1", features = ["full"] }
64//! ```
65//!
66//! Then in code, a client can be created with the following:
67//!
68//! ```rust,no_run
69//! use aws_sdk_applicationautoscaling as applicationautoscaling;
70//!
71//! #[::tokio::main]
72//! async fn main() -> Result<(), applicationautoscaling::Error> {
73//!     let config = aws_config::load_from_env().await;
74//!     let client = aws_sdk_applicationautoscaling::Client::new(&config);
75//!
76//!     // ... make some calls with the client
77//!
78//!     Ok(())
79//! }
80//! ```
81//!
82//! See the [client documentation](https://docs.rs/aws-sdk-applicationautoscaling/latest/aws_sdk_applicationautoscaling/client/struct.Client.html)
83//! for information on what calls can be made, and the inputs and outputs for each of those calls.
84//!
85//! ## Using the SDK
86//!
87//! Until the SDK is released, we will be adding information about using the SDK to the
88//! [Developer Guide](https://docs.aws.amazon.com/sdk-for-rust/latest/dg/welcome.html). Feel free to suggest
89//! additional sections for the guide by opening an issue and describing what you are trying to do.
90//!
91//! ## Getting Help
92//!
93//! * [GitHub discussions](https://github.com/awslabs/aws-sdk-rust/discussions) - For ideas, RFCs & general questions
94//! * [GitHub issues](https://github.com/awslabs/aws-sdk-rust/issues/new/choose) - For bug reports & feature requests
95//! * [Generated Docs (latest version)](https://awslabs.github.io/aws-sdk-rust/)
96//! * [Usage examples](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1)
97//!
98//!
99//! # Crate Organization
100//!
101//! The entry point for most customers will be [`Client`], which exposes one method for each API
102//! offered by Application Auto Scaling. The return value of each of these methods is a "fluent builder",
103//! where the different inputs for that API are added by builder-style function call chaining,
104//! followed by calling `send()` to get a [`Future`](std::future::Future) that will result in
105//! either a successful output or a [`SdkError`](crate::error::SdkError).
106//!
107//! Some of these API inputs may be structs or enums to provide more complex structured information.
108//! These structs and enums live in [`types`](crate::types). There are some simpler types for
109//! representing data such as date times or binary blobs that live in [`primitives`](crate::primitives).
110//!
111//! All types required to configure a client via the [`Config`](crate::Config) struct live
112//! in [`config`](crate::config).
113//!
114//! The [`operation`](crate::operation) module has a submodule for every API, and in each submodule
115//! is the input, output, and error type for that API, as well as builders to construct each of those.
116//!
117//! There is a top-level [`Error`](crate::Error) type that encompasses all the errors that the
118//! client can return. Any other error type can be converted to this `Error` type via the
119//! [`From`](std::convert::From) trait.
120//!
121//! The other modules within this crate are not required for normal usage.
122
123// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
124pub use error_meta::Error;
125
126#[doc(inline)]
127pub use config::Config;
128
129/// Client for calling Application Auto Scaling.
130/// ## Constructing a `Client`
131///
132/// A [`Config`] is required to construct a client. For most use cases, the [`aws-config`]
133/// crate should be used to automatically resolve this config using
134/// [`aws_config::load_from_env()`], since this will resolve an [`SdkConfig`] which can be shared
135/// across multiple different AWS SDK clients. This config resolution process can be customized
136/// by calling [`aws_config::from_env()`] instead, which returns a [`ConfigLoader`] that uses
137/// the [builder pattern] to customize the default config.
138///
139/// In the simplest case, creating a client looks as follows:
140/// ```rust,no_run
141/// # async fn wrapper() {
142/// let config = aws_config::load_from_env().await;
143/// let client = aws_sdk_applicationautoscaling::Client::new(&config);
144/// # }
145/// ```
146///
147/// Occasionally, SDKs may have additional service-specific values that can be set on the [`Config`] that
148/// is absent from [`SdkConfig`], or slightly different settings for a specific client may be desired.
149/// The [`Builder`](crate::config::Builder) struct implements `From<&SdkConfig>`, so setting these specific settings can be
150/// done as follows:
151///
152/// ```rust,no_run
153/// # async fn wrapper() {
154/// let sdk_config = ::aws_config::load_from_env().await;
155/// let config = aws_sdk_applicationautoscaling::config::Builder::from(&sdk_config)
156/// # /*
157///     .some_service_specific_setting("value")
158/// # */
159///     .build();
160/// # }
161/// ```
162///
163/// See the [`aws-config` docs] and [`Config`] for more information on customizing configuration.
164///
165/// _Note:_ Client construction is expensive due to connection thread pool initialization, and should
166/// be done once at application start-up.
167///
168/// [`Config`]: crate::Config
169/// [`ConfigLoader`]: https://docs.rs/aws-config/*/aws_config/struct.ConfigLoader.html
170/// [`SdkConfig`]: https://docs.rs/aws-config/*/aws_config/struct.SdkConfig.html
171/// [`aws-config` docs]: https://docs.rs/aws-config/*
172/// [`aws-config`]: https://crates.io/crates/aws-config
173/// [`aws_config::from_env()`]: https://docs.rs/aws-config/*/aws_config/fn.from_env.html
174/// [`aws_config::load_from_env()`]: https://docs.rs/aws-config/*/aws_config/fn.load_from_env.html
175/// [builder pattern]: https://rust-lang.github.io/api-guidelines/type-safety.html#builders-enable-construction-of-complex-values-c-builder
176/// # Using the `Client`
177///
178/// A client has a function for every operation that can be performed by the service.
179/// For example, the [`DeleteScalingPolicy`](crate::operation::delete_scaling_policy) operation has
180/// a [`Client::delete_scaling_policy`], function which returns a builder for that operation.
181/// The fluent builder ultimately has a `send()` function that returns an async future that
182/// returns a result, as illustrated below:
183///
184/// ```rust,ignore
185/// let result = client.delete_scaling_policy()
186///     .policy_name("example")
187///     .send()
188///     .await;
189/// ```
190///
191/// The underlying HTTP requests that get made by this can be modified with the `customize_operation`
192/// function on the fluent builder. See the [`customize`](crate::client::customize) module for more
193/// information.
194pub mod client;
195
196/// Configuration for Application Auto Scaling.
197pub mod config;
198
199/// Common errors and error handling utilities.
200pub mod error;
201
202mod error_meta;
203
204/// Information about this crate.
205pub mod meta;
206
207/// All operations that this crate can perform.
208pub mod operation;
209
210/// Primitives such as `Blob` or `DateTime` used by other types.
211pub mod primitives;
212
213/// Data structures used by operation inputs/outputs.
214pub mod types;
215
216pub(crate) mod protocol_serde;
217
218mod sdk_feature_tracker;
219
220mod serialization_settings;
221
222mod endpoint_lib;
223
224mod lens;
225
226mod serde_util;
227
228mod json_errors;
229
230#[doc(inline)]
231pub use client::Client;