pub struct AwsSecretsManager { /* private fields */ }Expand description
AWS Secrets Manager implementation of CloudSecretManager.
This implementation provides:
- Automatic credential discovery (env → file → IAM role)
- Built-in secret caching with TTL
- Support for both string and binary secrets
- Automatic retry with exponential backoff
§Example
use llm_shield_cloud_aws::AwsSecretsManager;
use llm_shield_cloud::CloudSecretManager;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let manager = AwsSecretsManager::new().await?;
let secret = manager.get_secret("my-secret").await?;
println!("Secret: {}", secret.as_string());
Ok(())
}Implementations§
Source§impl AwsSecretsManager
impl AwsSecretsManager
Sourcepub async fn new() -> Result<Self>
pub async fn new() -> Result<Self>
Creates a new AWS Secrets Manager client with default configuration.
Uses the AWS credential provider chain:
- Environment variables (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
- AWS credentials file (~/.aws/credentials)
- IAM role for ECS task
- IAM role for EC2 instance
- IAM role for EKS pod (IRSA)
§Errors
Returns error if AWS configuration cannot be loaded.
Sourcepub async fn new_with_region(region: impl Into<String>) -> Result<Self>
pub async fn new_with_region(region: impl Into<String>) -> Result<Self>
Sourcepub async fn new_with_cache_ttl(
region: impl Into<String>,
cache_ttl_seconds: u64,
) -> Result<Self>
pub async fn new_with_cache_ttl( region: impl Into<String>, cache_ttl_seconds: u64, ) -> Result<Self>
Sourcepub async fn clear_cache(&self)
pub async fn clear_cache(&self)
Clears the secret cache.
Sourcepub async fn cache_size(&self) -> usize
pub async fn cache_size(&self) -> usize
Gets the number of cached secrets.
Trait Implementations§
Source§impl CloudSecretManager for AwsSecretsManager
impl CloudSecretManager for AwsSecretsManager
Source§fn get_secret<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<SecretValue>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_secret<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<SecretValue>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Fetches a secret by name. Read more
Source§fn list_secrets<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_secrets<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Lists all secret names. Read more
Source§fn create_secret<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
name: &'life1 str,
value: &'life2 SecretValue,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn create_secret<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
name: &'life1 str,
value: &'life2 SecretValue,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Creates a new secret. Read more
Source§fn update_secret<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
name: &'life1 str,
value: &'life2 SecretValue,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn update_secret<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
name: &'life1 str,
value: &'life2 SecretValue,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Updates an existing secret. Read more
Source§fn delete_secret<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_secret<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Deletes a secret. Read more
Source§fn get_secret_metadata<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<SecretMetadata>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_secret_metadata<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<SecretMetadata>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Gets secret metadata without fetching the value. Read more
Source§fn rotate_secret<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
name: &'life1 str,
new_value: &'life2 SecretValue,
) -> Pin<Box<dyn Future<Output = Result<(), CloudError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
fn rotate_secret<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
name: &'life1 str,
new_value: &'life2 SecretValue,
) -> Pin<Box<dyn Future<Output = Result<(), CloudError>> + Send + 'async_trait>>where
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Self: 'async_trait,
Rotates a secret (creates a new version). Read more
Auto Trait Implementations§
impl Freeze for AwsSecretsManager
impl !RefUnwindSafe for AwsSecretsManager
impl Send for AwsSecretsManager
impl Sync for AwsSecretsManager
impl Unpin for AwsSecretsManager
impl !UnwindSafe for AwsSecretsManager
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreCreates a shared type from an unshared type.