pub trait ServiceHandler: Send + Sync {
// Required methods
fn service_name(&self) -> &str;
fn protocol(&self) -> Protocol;
fn handle<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
operation: &'life1 str,
input: Value,
ctx: &'life2 RequestContext,
) -> Pin<Box<dyn Future<Output = Result<Value, AwsError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
// Provided methods
fn signing_name(&self) -> &str { ... }
fn routes(&self) -> Vec<RouteDefinition> { ... }
fn snapshot(&self) -> Option<Vec<u8>> { ... }
fn restore(&self, _data: &[u8]) -> Result<(), String> { ... }
fn iam_action(&self, _operation: &str) -> Option<String> { ... }
fn iam_resource(
&self,
_operation: &str,
_input: &Value,
_ctx: &RequestContext,
) -> Option<String> { ... }
}Expand description
Trait that every AWS service crate must implement.
Each service (S3, SQS, DynamoDB, etc.) implements this trait in its own crate.
The main awsim binary registers all service handlers with the gateway router.
Required Methods§
Sourcefn service_name(&self) -> &str
fn service_name(&self) -> &str
The AWS service name (e.g., “s3”, “sqs”, “dynamodb”).
Sourcefn handle<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
operation: &'life1 str,
input: Value,
ctx: &'life2 RequestContext,
) -> Pin<Box<dyn Future<Output = Result<Value, AwsError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn handle<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
operation: &'life1 str,
input: Value,
ctx: &'life2 RequestContext,
) -> Pin<Box<dyn Future<Output = Result<Value, AwsError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Handle an AWS API operation.
Provided Methods§
Sourcefn signing_name(&self) -> &str
fn signing_name(&self) -> &str
The signing name used in SigV4 Authorization headers. Usually the same as service_name, but not always.
Sourcefn routes(&self) -> Vec<RouteDefinition>
fn routes(&self) -> Vec<RouteDefinition>
Route definitions for REST-protocol services. Not needed for RPC-style protocols (awsJson, awsQuery).
Sourcefn snapshot(&self) -> Option<Vec<u8>>
fn snapshot(&self) -> Option<Vec<u8>>
Serialize the service’s state to bytes for persistence.
Return None if this service does not support snapshots.
Sourcefn restore(&self, _data: &[u8]) -> Result<(), String>
fn restore(&self, _data: &[u8]) -> Result<(), String>
Restore the service’s state from a previous snapshot.
The default implementation is a no-op and always succeeds.