use chrono::{DateTime, Utc};
#[derive(Debug, Clone)]
pub struct AssumedRole {
pub account_id: String,
pub role_arn: String,
pub role_session_name: String,
pub access_key_id: String,
pub secret_access_key: String,
pub session_token: String,
pub expiration: DateTime<Utc>,
pub assumed_role_id: String,
}
impl AssumedRole {
pub fn arn(&self) -> String {
let role_name = self.role_arn.rsplit('/').next().unwrap_or("unknown");
format!(
"arn:aws:sts::{}:assumed-role/{}/{}",
self.account_id, role_name, self.role_session_name
)
}
pub fn user_id(&self) -> String {
format!("{}:{}", self.assumed_role_id, self.role_session_name)
}
}
#[derive(Debug, Clone)]
pub struct SessionToken {
pub access_key_id: String,
pub secret_access_key: String,
pub session_token: String,
pub expiration: DateTime<Utc>,
}
#[derive(Debug, Clone)]
pub struct CallerIdentity {
pub user_id: String,
pub account: String,
pub arn: String,
}