useaws_ssm_bridge::interactive::{InteractiveShell,InteractiveConfig};#[tokio::main]asyncfnmain()->Result<(),Box<dynstd::error::Error>>{letconfig=InteractiveConfig::default();letmutshell=InteractiveShell::new(config)?;// Handles raw mode, resize (SIGWINCH), signals (Ctrl+C/D/Z)shell.connect("i-0123456789abcdef0").await?;shell.run().await?;Ok(())}
Port Forwarding
usestd::net::SocketAddr;usestd::sync::Arc;useaws_ssm_bridge::{SessionBuilder,PortForwardConfig,PortForwarder,ShutdownSignal,install_signal_handlers};#[tokio::main]asyncfnmain()->Result<(),Box<dynstd::error::Error>>{letshutdown=ShutdownSignal::new();install_signal_handlers(shutdown.clone());// Remote port belongs in the session document, not PortForwardConfig.letsession=Arc::new(SessionBuilder::new("i-0123456789abcdef0").port_forward(80).build().await?);// bind() binds the local TCP port immediately; local_addr() returns the// actual address (useful when port 0 was requested for an OS-assigned port).letforwarder=PortForwarder::bind(PortForwardConfig{local_addr:"127.0.0.1:8080".parse::<SocketAddr>()?,..Default::default()}).await?;println!("Forwarding {} -> remote:80",forwarder.local_addr());forwarder.forward(session,shutdown).await?;Ok(())}