aws_sdk_sqs/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//! Welcome to the _Amazon SQS API Reference_.
23//!
24//! Amazon SQS is a reliable, highly-scalable hosted queue for storing messages as they travel between applications or microservices. Amazon SQS moves data between distributed application components and helps you decouple these components.
25//!
26//! For information on the permissions you need to use this API, see [Identity and access management](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-authentication-and-access-control.html) in the _Amazon SQS Developer Guide._
27//!
28//! You can use [Amazon Web Services SDKs](http://aws.amazon.com/tools/#sdk) to access Amazon SQS using your favorite programming language. The SDKs perform tasks such as the following automatically:
29//! - Cryptographically sign your service requests
30//! - Retry requests
31//! - Handle error responses
32//!
33//! __Additional information__
34//! - [Amazon SQS Product Page](http://aws.amazon.com/sqs/)
35//! - _Amazon SQS Developer Guide_
36//! - [Making API Requests](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-making-api-requests.html)
37//! - [Amazon SQS Message Attributes](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-message-metadata.html#sqs-message-attributes)
38//! - [Amazon SQS Dead-Letter Queues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html)
39//!
40//! - [Amazon SQS in the Command Line Interface](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sqs/index.html)
41//! - _Amazon Web Services General Reference_
42//! - [Regions and Endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html#sqs_region)
43//!
44//! ## Getting Started
45//!
46//! > Examples are available for many services and operations, check out the
47//! > [usage examples](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1).
48//!
49//! The SDK provides one crate per AWS service. You must add [Tokio](https://crates.io/crates/tokio)
50//! as a dependency within your Rust project to execute asynchronous code. To add `aws-sdk-sqs` to
51//! your project, add the following to your **Cargo.toml** file:
52//!
53//! ```toml
54//! [dependencies]
55//! aws-config = { version = "1.1.7", features = ["behavior-version-latest"] }
56//! aws-sdk-sqs = "1.90.0"
57//! tokio = { version = "1", features = ["full"] }
58//! ```
59//!
60//! Then in code, a client can be created with the following:
61//!
62//! ```rust,no_run
63//! use aws_sdk_sqs as sqs;
64//!
65//! #[::tokio::main]
66//! async fn main() -> Result<(), sqs::Error> {
67//! let config = aws_config::load_from_env().await;
68//! let client = aws_sdk_sqs::Client::new(&config);
69//!
70//! // ... make some calls with the client
71//!
72//! Ok(())
73//! }
74//! ```
75//!
76//! See the [client documentation](https://docs.rs/aws-sdk-sqs/latest/aws_sdk_sqs/client/struct.Client.html)
77//! for information on what calls can be made, and the inputs and outputs for each of those calls.
78//!
79//! ## Using the SDK
80//!
81//! Until the SDK is released, we will be adding information about using the SDK to the
82//! [Developer Guide](https://docs.aws.amazon.com/sdk-for-rust/latest/dg/welcome.html). Feel free to suggest
83//! additional sections for the guide by opening an issue and describing what you are trying to do.
84//!
85//! ## Getting Help
86//!
87//! * [GitHub discussions](https://github.com/awslabs/aws-sdk-rust/discussions) - For ideas, RFCs & general questions
88//! * [GitHub issues](https://github.com/awslabs/aws-sdk-rust/issues/new/choose) - For bug reports & feature requests
89//! * [Generated Docs (latest version)](https://awslabs.github.io/aws-sdk-rust/)
90//! * [Usage examples](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rustv1)
91//!
92//!
93//! # Crate Organization
94//!
95//! The entry point for most customers will be [`Client`], which exposes one method for each API
96//! offered by Amazon Simple Queue Service. The return value of each of these methods is a "fluent builder",
97//! where the different inputs for that API are added by builder-style function call chaining,
98//! followed by calling `send()` to get a [`Future`](std::future::Future) that will result in
99//! either a successful output or a [`SdkError`](crate::error::SdkError).
100//!
101//! Some of these API inputs may be structs or enums to provide more complex structured information.
102//! These structs and enums live in [`types`](crate::types). There are some simpler types for
103//! representing data such as date times or binary blobs that live in [`primitives`](crate::primitives).
104//!
105//! All types required to configure a client via the [`Config`](crate::Config) struct live
106//! in [`config`](crate::config).
107//!
108//! The [`operation`](crate::operation) module has a submodule for every API, and in each submodule
109//! is the input, output, and error type for that API, as well as builders to construct each of those.
110//!
111//! There is a top-level [`Error`](crate::Error) type that encompasses all the errors that the
112//! client can return. Any other error type can be converted to this `Error` type via the
113//! [`From`](std::convert::From) trait.
114//!
115//! The other modules within this crate are not required for normal usage.
116
117// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
118pub use error_meta::Error;
119
120#[doc(inline)]
121pub use config::Config;
122
123/// Client for calling Amazon Simple Queue Service.
124/// ## Constructing a `Client`
125///
126/// A [`Config`] is required to construct a client. For most use cases, the [`aws-config`]
127/// crate should be used to automatically resolve this config using
128/// [`aws_config::load_from_env()`], since this will resolve an [`SdkConfig`] which can be shared
129/// across multiple different AWS SDK clients. This config resolution process can be customized
130/// by calling [`aws_config::from_env()`] instead, which returns a [`ConfigLoader`] that uses
131/// the [builder pattern] to customize the default config.
132///
133/// In the simplest case, creating a client looks as follows:
134/// ```rust,no_run
135/// # async fn wrapper() {
136/// let config = aws_config::load_from_env().await;
137/// let client = aws_sdk_sqs::Client::new(&config);
138/// # }
139/// ```
140///
141/// Occasionally, SDKs may have additional service-specific values that can be set on the [`Config`] that
142/// is absent from [`SdkConfig`], or slightly different settings for a specific client may be desired.
143/// The [`Builder`](crate::config::Builder) struct implements `From<&SdkConfig>`, so setting these specific settings can be
144/// done as follows:
145///
146/// ```rust,no_run
147/// # async fn wrapper() {
148/// let sdk_config = ::aws_config::load_from_env().await;
149/// let config = aws_sdk_sqs::config::Builder::from(&sdk_config)
150/// # /*
151/// .some_service_specific_setting("value")
152/// # */
153/// .build();
154/// # }
155/// ```
156///
157/// See the [`aws-config` docs] and [`Config`] for more information on customizing configuration.
158///
159/// _Note:_ Client construction is expensive due to connection thread pool initialization, and should
160/// be done once at application start-up.
161///
162/// [`Config`]: crate::Config
163/// [`ConfigLoader`]: https://docs.rs/aws-config/*/aws_config/struct.ConfigLoader.html
164/// [`SdkConfig`]: https://docs.rs/aws-config/*/aws_config/struct.SdkConfig.html
165/// [`aws-config` docs]: https://docs.rs/aws-config/*
166/// [`aws-config`]: https://crates.io/crates/aws-config
167/// [`aws_config::from_env()`]: https://docs.rs/aws-config/*/aws_config/fn.from_env.html
168/// [`aws_config::load_from_env()`]: https://docs.rs/aws-config/*/aws_config/fn.load_from_env.html
169/// [builder pattern]: https://rust-lang.github.io/api-guidelines/type-safety.html#builders-enable-construction-of-complex-values-c-builder
170/// # Using the `Client`
171///
172/// A client has a function for every operation that can be performed by the service.
173/// For example, the [`AddPermission`](crate::operation::add_permission) operation has
174/// a [`Client::add_permission`], function which returns a builder for that operation.
175/// The fluent builder ultimately has a `send()` function that returns an async future that
176/// returns a result, as illustrated below:
177///
178/// ```rust,ignore
179/// let result = client.add_permission()
180/// .queue_url("example")
181/// .send()
182/// .await;
183/// ```
184///
185/// The underlying HTTP requests that get made by this can be modified with the `customize_operation`
186/// function on the fluent builder. See the [`customize`](crate::client::customize) module for more
187/// information.
188pub mod client;
189
190/// Configuration for Amazon Simple Queue Service.
191pub mod config;
192
193/// Common errors and error handling utilities.
194pub mod error;
195
196mod error_meta;
197
198/// Information about this crate.
199pub mod meta;
200
201/// All operations that this crate can perform.
202pub mod operation;
203
204/// Primitives such as `Blob` or `DateTime` used by other types.
205pub mod primitives;
206
207/// Data structures used by operation inputs/outputs.
208pub mod types;
209
210pub(crate) mod protocol_serde;
211
212mod sdk_feature_tracker;
213
214mod serialization_settings;
215
216mod endpoint_lib;
217
218mod lens;
219
220mod serde_util;
221
222mod aws_query_compatible_errors;
223
224mod json_errors;
225
226#[doc(inline)]
227pub use client::Client;