1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//! AWS API wrapper for Vantage — incubating.
//!
//! Treat AWS JSON-1.1 RPC endpoints (CloudWatch Logs, ECS, DynamoDB
//! control plane, KMS, …) as Vantage `TableSource`s. Build an
//! [`AwsAccount`], hand it to a `Table`, and encode the operation in
//! the table name as `array_key:service/target`:
//!
//! ```text
//! "logGroups:logs/Logs_20140328.DescribeLogGroups"
//! │ │ └── X-Amz-Target header value
//! │ └────────── service code (also the URL hostname segment)
//! └────────────────── response field that holds the row array
//! ```
//!
//! Conditions on the table fold into the JSON request body. v0 is
//! read-only, first-page only, JSON-1.1 only — REST-JSON and S3 will
//! arrive as separate source types.
//!
//! Ready-made CloudWatch models live under [`models`] if you want to
//! skip the table-name dance and start querying.
//!
//! ```no_run
//! # use vantage_aws::{AwsAccount, eq};
//! # use vantage_table::table::Table;
//! # use vantage_types::EmptyEntity;
//! # async fn run() -> vantage_core::Result<()> {
//! // env vars first, falling back to ~/.aws/credentials [default]
//! let aws = AwsAccount::from_default()?;
//!
//! let mut groups: Table<AwsAccount, EmptyEntity> = Table::new(
//! "logGroups:logs/Logs_20140328.DescribeLogGroups",
//! aws,
//! );
//! groups.add_condition(eq("logGroupNamePrefix", "/aws/lambda/"));
//! # Ok(()) }
//! ```
pub use AwsAccount;
pub use ;
pub use AwsOperation;