Skip to main content

vantage_aws/models/logs/
event.rs

1use serde::{Deserialize, Serialize};
2use vantage_table::table::Table;
3
4use crate::AwsAccount;
5
6/// One log event. Timestamps are CloudWatch's usual
7/// milliseconds-since-epoch.
8#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct LogEvent {
10    #[serde(rename = "eventId")]
11    pub event_id: String,
12    #[serde(rename = "logStreamName", default)]
13    pub log_stream_name: String,
14    #[serde(default)]
15    pub timestamp: i64,
16    #[serde(default)]
17    pub message: String,
18}
19
20/// `FilterLogEvents` table. AWS requires `logGroupName` before it
21/// will list anything, so add `eq("logGroupName", "...")` before
22/// calling `list`.
23///
24/// ```no_run
25/// # use vantage_aws::{AwsAccount, eq};
26/// # use vantage_aws::models::logs::events_table;
27/// # async fn run() -> vantage_core::Result<()> {
28/// # let aws = AwsAccount::from_default()?;
29/// let mut events = events_table(aws);
30/// events.add_condition(eq("logGroupName", "/aws/lambda/foo"));
31/// # Ok(()) }
32/// ```
33pub fn events_table(aws: AwsAccount) -> Table<AwsAccount, LogEvent> {
34    Table::new(
35        "json1/events@nextToken:logs/Logs_20140328.FilterLogEvents",
36        aws,
37    )
38    .with_id_column("eventId")
39    .with_title_column_of::<String>("logStreamName")
40    .with_title_column_of::<i64>("timestamp")
41    .with_column_of::<String>("message")
42}