Expand description
§AWS SSM Bridge
A high-performance Rust library implementing the AWS Systems Manager (SSM) Session Manager protocol with first-class Python bindings.
§Architecture Philosophy
Flat module structure - Following Rust best practices (tokio, serde, reqwest):
- Direct module access without deep nesting
- Clear naming makes deep hierarchies unnecessary
- The crate boundary provides encapsulation
§Module Organization
§Public API (re-exported at crate root)
SessionManager- High-level session managementSession- Active session handle with streaming APISessionConfig- Session configurationError,Result- Error handling
§Public Modules (for advanced usage)
errors- Domain-specific error types with retry classificationprotocol- SSM protocol message types and framingsession- Session management internalsretry- Exponential backoff and circuit breaker patterns
§Internal Modules (implementation details)
connection- WebSocket connection lifecyclechannels- Channel multiplexing for stdin/stdout/stderr
§Usage
use aws_ssm_bridge::{SessionConfig, SessionManager};
use futures::StreamExt;
// Create session manager
let manager = SessionManager::new().await?;
// Start a session
let mut session = manager.start_session(SessionConfig {
target: "i-1234567890abcdef0".to_string(),
..Default::default()
}).await?;
// Stream output
let mut output = session.output();
tokio::spawn(async move {
while let Some(data) = output.next().await {
print!("{}", String::from_utf8_lossy(&data));
}
});
// Send commands
session.send(bytes::Bytes::from("ls -la\n")).await?;
// Clean shutdown
session.terminate().await?;§Disclaimer
This project is not affiliated with, endorsed by, or sponsored by Amazon Web Services, Inc. or any of its affiliates.
Re-exports§
pub use session::Session;pub use session::SessionConfig;pub use session::SessionManager;pub use session::SessionState;pub use builder::SessionBuilder;pub use errors::Error;pub use errors::Result;pub use protocol::MessageType;pub use protocol::SessionType;pub use retry::CircuitBreaker;pub use retry::CircuitState;pub use retry::RetryConfig;pub use retry::RetryStrategy;pub use rate_limit::RateLimitConfig;pub use rate_limit::RateLimitResult;pub use rate_limit::RateLimiter;pub use port_forward::PortForwardConfig;pub use port_forward::PortForwarder;pub use terminal::Terminal;pub use terminal::TerminalConfig;pub use terminal::TerminalInput;pub use terminal::TerminalSize;pub use interactive::InteractiveConfig;pub use interactive::InteractiveShell;pub use metrics::register_metrics;pub use metrics::MetricsRecorder;pub use shutdown::install_signal_handlers;pub use shutdown::ShutdownGuard;pub use shutdown::ShutdownSignal;pub use pool::PoolConfig;pub use pool::PoolStats;pub use pool::SessionPool;pub use reconnect::ReconnectConfig;pub use reconnect::ReconnectEvent;pub use reconnect::ReconnectStats;pub use reconnect::ReconnectingSession;pub use tracing_ext::span_connection;pub use tracing_ext::span_handshake;pub use tracing_ext::span_receive;pub use tracing_ext::span_send;pub use tracing_ext::span_session;pub use tracing_ext::SessionSpan;pub use tracing_ext::TraceContext;
Modules§
- ack
- Acknowledgment and retransmission with RTT tracking Acknowledgment and retransmission system with RTT tracking.
- binary_
protocol - Binary protocol implementation (AWS-compatible) AWS SSM Session Manager Binary Protocol Implementation
- builder
- Session builder for fluent API Session builder for ergonomic session creation
- documents
- Type-safe SSM document definitions Type-safe AWS SSM document definitions
- errors
- Error types and result aliases Error types for aws-ssm-bridge
- handshake
- AWS SSM handshake protocol (3-phase) AWS SSM Handshake Protocol Implementation
- interactive
- Interactive shell sessions with full terminal support Interactive shell session combining terminal handling with SSM protocol.
- metrics
- Metrics and observability hooks Metrics and observability hooks for production monitoring.
- pool
- Session pool for managing multiple concurrent sessions Session pool for managing multiple concurrent SSM sessions.
- port_
forward - Port forwarding implementation Port forwarding implementation for SSM sessions
- protocol
- SSM protocol message types and framing SSM Protocol message types and framing
- rate_
limit - Token bucket rate limiting for DoS protection Token bucket rate limiting for DoS protection.
- reconnect
- Session reconnection with exponential backoff Session reconnection utilities for handling network interruptions.
- retry
- Retry logic with exponential backoff and circuit breaker Error recovery and retry logic with exponential backoff
- session
- Session management and lifecycle Session management and lifecycle
- shutdown
- Graceful shutdown utilities Graceful shutdown utilities.
- terminal
- Cross-platform terminal handling for interactive shells Cross-platform terminal handling for interactive shell sessions.
- tracing_
ext - Structured tracing for distributed observability Structured tracing extensions for distributed observability.
Structs§
- Output
Stream - Stream of output data.
Constants§
- MAX_
PAYLOAD_ SIZE - Maximum message payload size (10MB)
- VERSION
- Library version