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