use aws_ssm_bridge::interactive::{InteractiveConfig, InteractiveShell};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::fmt()
.with_env_filter(
tracing_subscriber::EnvFilter::from_default_env()
.add_directive(tracing::Level::WARN.into()),
)
.init();
let args: Vec<String> = std::env::args().collect();
if args.len() < 2 {
eprintln!("Interactive SSM Shell");
eprintln!();
eprintln!("Usage: {} <instance-id> [region]", args[0]);
eprintln!();
eprintln!("Examples:");
eprintln!(" {} i-0123456789abcdef0", args[0]);
eprintln!(" {} i-0123456789abcdef0 us-west-2", args[0]);
eprintln!();
eprintln!("Controls:");
eprintln!(" Ctrl+D - Exit session");
eprintln!(" Ctrl+C - Send interrupt signal");
eprintln!(" Ctrl+Z - Suspend current process");
std::process::exit(1);
}
let instance_id = &args[1];
let _region = args.get(2).cloned();
let config = InteractiveConfig {
show_banner: true, send_initial_size: true, forward_signals: true, ..Default::default()
};
let mut shell = InteractiveShell::new(config)?;
shell.connect(instance_id).await?;
shell.run().await?;
Ok(())
}